MySQLであとからカラムを追加したい場合について考えていきます。10月19日記事

目次





テーブル作成

適当に作成

まずは適当なテーブルを設計していきます。

CREATE TABLE pra_alter(
id INT NOT NULL AUTO_INCREMENT,
col1 VARCHAR(255) NOT NULL,
col2 INT NOT NULL,
col3 TEXT NOT NULL,
PRIMARY KEY(id)
);



確認

>DESC pra_alter;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| col1  | varchar(255) | NO   |     | NULL    |                |
| col2  | int(11)      | NO   |     | NULL    |                |
| col3  | text         | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+



ただ単に追加(最後に追加)

ただ単にカラムの最後に追加したい場合は ALTER TABLE テーブル名 ADD 追加カラム名 その型

ALTER TABLE pra_alter ADD col4 VARCHAR(255) NOT NULL;

確認

>DESC pra_alter;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| col1  | varchar(255) | NO   |     | NULL    |                |
| col2  | int(11)      | NO   |     | NULL    |                |
| col3  | text         | NO   |     | NULL    |                |
| col4  | varchar(255) | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+



特定のカラムの直後に追加

特定のカラムの直後に追加したい場合は ALTER TABLE テーブル名 ADD 追加カラム名 その型 AFTER 既存のカラム

ALTER TABLE pra_alter ADD col2_2 INT NOT NULL AFTER col2;



確認

>DESC pra_alter
+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| col1   | varchar(255) | NO   |     | NULL    |                |
| col2   | int(11)      | NO   |     | NULL    |                |
| col2_2 | int(11)      | NO   |     | NULL    |                |
| col3   | text         | NO   |     | NULL    |                |
| col4   | varchar(255) | NO   |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+



特定のカラムの直後に追加&デフォルト値の追加

データ挿入

INSERT INTO pra_alter (col1,col2,col2_2,col3,col4)VALUES ('あ',1,2,'い','う');
INSERT INTO pra_alter (col1,col2,col2_2,col3,col4)VALUES ('え',1,2,'お','か');
INSERT INTO pra_alter (col1,col2,col2_2,col3,col4)VALUES ('き',1,2,'く','け');



ALTER句の追加

ALTER TABLE pra_alter ADD col3_2 INT NOT NULL default '100' AFTER col3;
>SELECT * FROM pra_alter;
+----+------+------+--------+------+--------+------+
| id | col1 | col2 | col2_2 | col3 | col3_2 | col4 |
+----+------+------+--------+------+--------+------+
|  1 | あ   |    1 |      2 | い   |    100 | う   |
|  2 | え   |    1 |      2 | お   |    100 | か   |
|  3 | き   |    1 |      2 | く   |    100 | け   |
+----+------+------+--------+------+--------+------+

追加されると、デフォルトは 今までのフィールドのデフォルト値も100になる ということです。

以上

最終更新:2015年10月19日 21:43