Going my way

いいなと思ったことをメモしていきます。

ALTER TABLEいろいろ。


Advertisements


以下のテーブルを色々いじってみる。

mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(100) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)


カラムのデータ型を変更する

構文
ALTER TABLE テーブル名 MODIFY カラム名 データ型;


ALTER TABLE test1 MODIFY author VARCHAR(200);

mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(200) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)

このように変更が確認できる。

mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(100) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)

このテーブルに日付カラムを追加してみる。

構文
ALTER TABLE テーブル名 ADD カラム名 データ型;

mysql> ALTER TABLE test1 ADD hizuke DATE;
mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(200) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
| hizuke   | date         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
5 rows in set (0.03 sec)

カラム名を変更する
ALTER TABLE テーブル名 CHANGE 変更前カラム名 変更後カラム名 変更後データ型;

先ほど作った「hizuke」カラムを「date」に変更してみる。

mysql> ALTER TABLE test1 CHANGE hizuke date DATE;

mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(200) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
| date     | date         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
5 rows in set (0.02 sec)

カラムを削除する

まずはいらないカラムを追加してみる。
mysql> ALTER TABLE test1 ADD hoge VARCHAR(100);

mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(200) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
| date     | date         | YES  |     | NULL    |                |
| hoge     | varchar(100) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
6 rows in set (0.03 sec)

次にhogeカラムを削除する。
mysql> ALTER TABLE test1 DROP hoge;

mysql> desc test1;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| title    | varchar(100) | YES  |     | NULL    |                |
| author   | varchar(200) | YES  |     | NULL    |                |
| sentence | text         | YES  |     | NULL    |                |
| date     | date         | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

見事にhogeが削除された。