MySQLの使い方って...。

データベースとはそもそもなんだ?

データベースなんて今まで使ったことがなかった。(ユーザーとしては使っているんだろうけど、開発者の立場としてはほとんど無知。)
そこで、まず参考にさせて頂いたのが、こちらの素晴らしいページ。

なるほど...、それでは表計算ソフト(Excel等)をイメージした勝手な思い込み。

データベースでは... 表計算ソフトでは...
データベースの作成 ブックの新規作成
テーブルの作成 シートの追加作成
フィールド 列の名前

mysqlはどうやって使うのだ?

以下は自分がよく使うmysqlコマンドの入力例(以下の条件だったと仮定して)

      • MySQLがインストールされているパソコンから操作する場合。
      • /usr/local/mysql/bin/へのパスが通っていること。
入力例1:MySQLサーバーへ接続(太字の部分を入力した)

ユーザ:root、パスワード:0123、で接続。(MySQLのインストールの「MySQL 権限の初期設定」で設定したパスワード)

 MacBook:~ zari$ mysql -u root -p
 Enter password:
  • 太字の部分を入力して、enterキーを押す。
  • パスワードの入力を求められるので「0123」と入力して、enterキー。(この時パスワードは画面に表示されない。)
 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 3 to server version: 5.0.26-standard
 
 Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
 mysql> 
  • 上記のようなメッセージが出て、「mysql>」と表示され、MySQLサーバーに接続している状態になる。
  • 一つのmysqlコマンドの終わりには、必ず「;」セミコロンをつける。
  • 接続を終了する場合は「exit」と入力して、enterキー。(exitの場合「;」セミコロンがなくてもOK)
入力例2:ユーザの登録、一覧表示、削除(太字の部分を入力した)

helloデータベース専用ユーザとして登録する。(ユーザ名:hellouser、パスワード:abcd)

 mysql> grant all privileges                                                           
     -> on hello.*                                                
     -> to 'hellouser'@'localhost'                     
     -> identified by 'abcd';
 Query OK, 0 rows affected (0.00 sec)

 mysql> flush privileges;
  • 「*.*」で、すべての権限を持つrootユーザと同じ権限になる。
  • 「on hello.*」で、helloデータベース限定のアクセス権限になる。
  • 「on hello.world」で、helloデータベースのworldテーブル限定のアクセス権限になる。
  • 「flush privileges;」を実行するべき。


登録されているユーザの一覧表示。

 mysql> select Host, User, Password from mysql.user;
 +--------------------+-----------+-------------------------------------------+
 | Host               | User      | Password                                  |
 +--------------------+-----------+-------------------------------------------+
 | localhost          | root      | *B34C6A5A0E136E1BDC0F1AE3F3F461BA13123456 | 
 | MacBook.local      | root      |                                           | 
 | MacBook.local      |           |                                           | 
 | localhost          |           |                                           | 
 | localhost          | hellouser | *A154C52565E9E7F94BFC08A1FE702624ED123456 | 
 +--------------------+-----------+-------------------------------------------+
 5 rows in set (0.00 sec)

 mysql> 
  • パスワードは暗号化されているので、意味不明な文字の羅列になっている。
  • hellouser以外は最初から登録済みのユーザ。


ユーザの削除(ユーザ名:hellouser)

 mysql> drop user 'hellouser'@'localhost';
 Query OK, 0 rows affected (0.00 sec)
 
 mysql> flush privileges;
  • 「flush privileges;」を実行するべき。
入力例3:データベースの作成、一覧表示、削除(太字の部分を入力した)

「hello」という名前のデータベースを作成。

 mysql> create database hello;
 Query OK, 1 row affected (0.00 sec)
 
 mysql> 
  • データベース名には英数字(大文字、小文字の区別あり)と「_」アンダーバーが使える。
  • 他にも使用可能な文字はあるが、今は特に必要性を感じないので使わないことにした。


データベースの一覧表示

 mysql> show databases;
 +--------------------+
 | Database           |
 +--------------------+
 | information_schema | 
 | hello              | 
 | mysql              | 
 | test               | 
 +--------------------+
 4 rows in set (0.00 sec)
 
 mysql> 
  • show databasesと複数形になっているので注意
  • MySQLにはMySQL自身を管理するためのデータベースが2つ、テスト用のデータベース1つが、最初から登録されている。


「hello」データベースの削除

 mysql> drop database hello;
 Query OK, 0 rows affected (0.00 sec)
 
 mysql> 
  • 間違って削除してしまうとデータが消えてしまう、元に戻すことは出来ないので注意が必要。
入力例4:テーブルの一覧表示、内容表示(太字の部分を入力した)

「information_schema」データベースを選択して、テーブルの一覧を表示してみた。

 mysql> use information_schema;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
 
 Database changed
 mysql> 
 mysql> show tables; 
 +---------------------------------------+
 | Tables_in_information_schema          |
 +---------------------------------------+
 | CHARACTER_SETS                        | 
 | COLLATIONS                            | 
 | COLLATION_CHARACTER_SET_APPLICABILITY | 
 | COLUMNS                               | 
 | COLUMN_PRIVILEGES                     | 
 | KEY_COLUMN_USAGE                      | 
 | ROUTINES                              | 
 | SCHEMATA                              | 
 | SCHEMA_PRIVILEGES                     | 
 | STATISTICS                            | 
 | TABLES                                | 
 | TABLE_CONSTRAINTS                     | 
 | TABLE_PRIVILEGES                      | 
 | TRIGGERS                              | 
 | USER_PRIVILEGES                       | 
 | VIEWS                                 | 
 +---------------------------------------+
 16 rows in set (0.00 sec)
 
 mysql> 
 
  • show tablesと複数形になっているので注意


さらに「COLLATIONS」テーブルの内容を表示してみた。

 mysql>  show columns from COLLATIONS;
 +--------------------+-------------+------+-----+---------+-------+
 | Field              | Type        | Null | Key | Default | Extra |
 +--------------------+-------------+------+-----+---------+-------+
 | COLLATION_NAME     | varchar(64) | NO   |     |         |       | 
 | CHARACTER_SET_NAME | varchar(64) | NO   |     |         |       | 
 | ID                 | bigint(11)  | NO   |     | 0       |       | 
 | IS_DEFAULT         | varchar(3)  | NO   |     |         |       | 
 | IS_COMPILED        | varchar(3)  | NO   |     |         |       | 
 | SORTLEN            | bigint(3)   | NO   |     | 0       |       | 
 +--------------------+-------------+------+-----+---------+-------+
 6 rows in set (0.00 sec)
 
 mysql> 
  • show columnsと複数形になっているので注意
  • 以下は、すべて同じ結果になる。
    • show columns from COLLATIONS
    • show fields from COLLATIONS
    • describe COLLATIONS
    • desc COLLATIONS