微忘録

好奇心に記憶力がついていかない人のブログ

MySQLの導入からDB構築、クエリ実行までの基礎

はじめに

TRUNKという会社が学生対象に提供しているMySQL基礎トレーニングに参加しました。 事前準備から講座内容と、気になって調べたところを備忘録。

本題

以下の内容を勉強した。

  • MySQLインストールと設定
  • MySQLサーバー起動とデータベース作成
  • データベース操作
  • クエリ練習

MySQLインストールとサーバー接続

定番のbrew installMySQLを導入。

$ brew install mysql

自分の環境ではlinkエラーが発生したので、以下の過去記事を参考にして修正。
Homebrewインストールのlinkエラーを修正する方法 - 微忘録

セキュリティ設定(対話型形式で行われる)

$ mysql_secure_installation
  • rootユーザのパスワードを変更
  • anonymousユーザを削除
  • rootユーザのリモートログイン禁止
  • testデータベースを削除

加えて他のログインユーザーの作成・権限付与・パスワード設定などをすると望ましい。

起動からDB作成

サーバー起動と終了

$ mysql.server start
$ mysql.server stop

任意の形でログイン(-uはユーザ名、-pはパスワード)

$ mysql -uroot  #rootユーザーとしてログイン
$ mysql -u <ユーザ名> -p #特定ユーザーとしてパスワードを入れてログイン

データベースの作成と確認

mysql> CREATE DATABASE <データベース名>;
mysql> SHOW DATABASES;

DB構築と操作

使用するDBへの接続(接続せずともクエリへの追記でアクセスできる)

mysql> USE <データベース名>;

テーブルを作成
(型が可変か固定型か、NULLを許容するかなど意識して設計する)

mysql> CREATE TABLE <テーブル名> ( <カラム名> <型>(<bit指定>), ...);

テーブルの確認 (以下二種のどちらでもOK)

mysql> SHOW COLUMNS FROM <テーブル名>;
mysql> DESC <テーブル名>;

データ(レコード)の追加 (文字列は``もしくは""で囲う)

mysql> INSERT INTO users(<カラム名>,<カラム名>) VALUES(<数値>,'<文字列>');

データ(指定レコード)の削除

mysql> DELETE FROM <テーブル名> WHERE <カラム名> = <条件値>;

データ(指定レコード)の更新
(ここでINDEXの重複不可制限などが活用でき、重複更新を防ぐことができる)

mysql> UPDATE <テーブル名> SET <カラム名> = <変更後のレコード> WHERE <カラム名> = <条件値>;

クエリ練習

お題は「別テーブルの同種IDと一致する、ユーザー名を表示する」

並列記法

mysql> SELECT tbl1.name 
    -> FROM table1 AS tbl1, table2 AS tbl2 
    -> WHERE tbl1.id = tbl2.user_id; 

入れ子(サブクエリ)記法

mysql> SELECT name FROM table1
    -> WHERE id IN
    -> (SELECT user_id FROM table2);

最後に

クエリは叩けどもDBを作成した経験はなかったので勉強になった。 試しに簡単なWebサービスを構築してみて、補足知識を補っていきたい。