データベースからテーブル・カラムの作成について、基本コマンドを確認する。
使用DBMS
MySQL Version 5.7.22(当記事内では、MySQL特有のコマンドがあるかもしれません。)
データベース
作成
CREATE DATABASEコマンド
でsample_dbデータベース
を作成する。
mysql> CREATE DATABASE sample_db;
Query OK, 1 row affected (0.01 sec)
使用DBの切り替え
useコマンド
で使用するデータベースを切り替える。
mysql> use sample_db
Database changed
DBの一覧を表示
SHOWコマンド
でデータベースの一覧を表示する。
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| auth |
| camp |
| db1 |
| db2 |
| larabbs |
| login |
| mysql |
| performance_schema |
| phpmyadmin |
| sample_db |
| shop |
| sys |
| testcake_db |
| testlara |
+--------------------+
15 rows in set (0.01 sec)
現在の使用DBを表示
SELECT DATABASE();
で、現在使用しているデータベースを表示できる。
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| sample_db |
+------------+
1 row in set (0.00 sec)
プロンプトの設定
SELECT DATABASE();
で毎回確認するのは面倒くさい・・・。こんな時は、プロンプト
を設定してユーザー名や使用データベースを常時表示させることもできる。(再起動したら設定がもとに戻ってしまったが。)
プロンプトはpromptコマンド
で設定可能だ。
mysql> prompt \u:\d>
PROMPT set to '\u:\d>'
yuki:(none)>
\u
はユーザー名を、\d
はデータベース名を意味する。つまり、\u:\d>
を指定すれば、プロンプトはユーザー名:データベース名>
の状態で表示される。(現在はデータベースが選択されていないため、(none)の表示となっている。)
ちなみにMacのターミナルで実行した場合、\
の部分を¥
に置き換えると正しく反映されない。
削除
DROP DATABASEコマンド
でデータベースを削除できる。(今回、コマンドの実行はしていない。)
yuki:sample_db>DROP DATABASE sample_db;
テーブル
作成
CREATE TABLEコマンド
でmemberテーブル
を作成する。
カラムは以下の内容で設定する。
カラム名 | データ型 | 制約 |
---|---|---|
id | INT | PRIMARY KEY, AUTO_INCREMENT |
namae | VARCHAR(4) | |
job | VARCHAR(10) |
yuki:sample_db> CREATE TABLE member (
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> namae VARCHAR(4),
-> job VARCHAR(10)
-> );
Query OK, 0 rows affected (0.01 sec)
テーブルの一覧を表示
SHOWコマンド
を使用して、データベース内のテーブルの一覧を表示させる。
yuki:sample_db>SHOW TABLES;
+---------------------+
| Tables_in_sample_db |
+---------------------+
| member |
| money_check |
+---------------------+
2 rows in set (0.01 sec)
削除
DROP TABLEコマンド
でテーブルを削除できる。(今回、コマンドの実行はしていない。)
IF EXISTS
を加えると、memberテーブル
が実在した場合のみ、コマンドが実行される。
yuki:sample_db>DROP TABLE IF EXISTS member;
カラム構造を表示
DESCコマンド
でテーブル内のカラム構造が表示できる。
yuki:sample_db>DESC member;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| namae | varchar(4) | YES | | NULL | |
| job | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
カラムの追加
ageカラム
を追加する。カラムを追加するときは、ALTER TABLEコマンド
にADD
を加えた構文を使う。
カラム名 | 型 | 制約 |
---|---|---|
age | INT |
yuki:sample_db>ALTER TABLE member ADD age INT;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
yuki:sample_db>DESC member;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| namae | varchar(4) | YES | | NULL | |
| job | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
カラムの編集
データ型の変更
namaeカラム
が4文字限定では厳しいので、これを10文字に変更したい。名前が4文字限定と言うと、昔のドラクエが連想される。(濁点も1文字としてカウントされたのは良い思い出だ。)
カラムのデータ型を変更するときは、ALTER TABLEコマンド
にMODIFY
を加えた構文を使用する。
yuki:sample_db>ALTER TABLE member MODIFY namae VARCHAR(10);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
yuki:sample_db>DESC member;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| namae | varchar(10) | YES | | NULL | |
| job | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
カラム名の変更
さらに、namae
をname
に修正したい。カラム名の変更には、ALTER TABLEコマンド
にCHANGE
を加えた構文を使う。
しかし、この構文では名前の変更だけ行おうとするとエラーが発生してしまう。
yuki:sample_db>ALTER TABLE member CHANGE namae name;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
ここでは、カラムのデータ型も同時に指定しなければならない
ようだ。先ほどデータ型の変更を行ったが、再度指定してコマンドを実行する。
yuki:sample_db>ALTER TABLE member CHANGE namae name VARCHAR(10);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
これで変更が反映された。
カラム位置の変更
ALTER TABLEコマンド
では、FIRST
やAFTER カラム名
を指定してカラムの位置を変更することもできる。
yuki:sample_db>ALTER TABLE member CHANGE name name VARCHAR(10) AFTER age;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
yuki:sample_db>DESC member;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| job | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
カラムの削除
ageカラム
を削除することにした。カラムの削除には、ALTER TABLEコマンド
にDROP
を加えた構文を使用する。
yuki:sample_db>ALTER TABLE member DROP age;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
yuki:sample_db>DESC member;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | YES | | NULL | |
| job | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
今回はここまで。