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 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になる
ということです。
以上