MySQLの使い方って...。
データベースとはそもそもなんだ?
データベースなんて今まで使ったことがなかった。(ユーザーとしては使っているんだろうけど、開発者の立場としてはほとんど無知。)
そこで、まず参考にさせて頂いたのが、こちらの素晴らしいページ。
なるほど...、それでは表計算ソフト(Excel等)をイメージした勝手な思い込み。
データベースでは... | 表計算ソフトでは... |
---|---|
データベースの作成 | ブックの新規作成 |
テーブルの作成 | シートの追加作成 |
フィールド | 列の名前 |
mysqlはどうやって使うのだ?
- MySQL AB :: MySQL 4.1 リファレンスマニュアル(MySQL本家のサイト。すべてのことはここをちゃんと読めば分かるはず...。でもねー、知るべきことって、たくさんある...。)
- MySQLクイック・リファレンス(シンプルにまとめてくれています。感謝です!)
以下は自分がよく使うmysqlコマンドの入力例(以下の条件だったと仮定して)
入力例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>
入力例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>
「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