【SQL】ALTER TABLE ~ テーブル変更 編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2010/07/09/201233

の続き。
今回は、テーブル変更するための「ALTER TABLE」を扱う

目次

【1】表名を変更する
【2】表の項目追加
【3】表の項目削除
【4】表の項目のデータ型 / 文字列長の変更
【5】表の項目名変更
【6】制約の追加/変更

制約の追加/変更

 * 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2016/07/08/234918

 【1】表名を変更する

MySQL

 *  「ALTER TABLE ~ RENAME TO ~」を使用

 構文

ALTER TABLE [対象テーブル名]
RENAME TO [変更したいテーブル名];

 例

ALTER TABLE tblName RENAME TO tblReName;

 参考文献
http://sasuke.main.jp/rename.html

 【2】表の項目追加

 * 「ALTER TABLE ~ ADD ~」を使用

 構文

ALTER TABLE [テーブル名]
ADD [項目名] [項目名のデータ型];

 例

ALTER TABLE tblName
ADD flg NUMBER(1) DEFAULT 1 NOT NULL;

PostgreSQL

 * 「ALTER TABLE ~ ADD COLUMN ~」を使用

https://www.postgresql.jp/document/9.4/html/sql-altertable.html
 例

-- 追加
ALTER TABLE sample_table
 ADD COLUMN add_item VARCHAR(50);

-- Defult設定
ALTER TABLE sample_table
 ALTER COLUMN add_item SET DEFAULT NULL;

 使用上の注意

* MySQL のように、順番を指定してカラムを追加することができない
 ⇒ 以下のサイトで2案「テーブル再作成」「列を追加しデータを移動」あるが
   正直どちらもいまいち、、、

https://wiki.postgresql.org/wiki/Alter_column_position/ja

* 詳細は、以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2020/06/10/000000

 【3】表の項目削除

 *  「ALTER TABLE ~ DROP ~」を使用

 構文

ALTER TABLE [テーブル名]
DROP [項目名];

 例

ALTER TABLE tblName
ADD flg;

# または

ALTER TABLE  tblName
DROP COLUMN flg;

 【4】表の項目のデータ型 / 文字列長の変更

Oracle / MySQL

 *  「ALTER TABLE ~ MODIFY ~」を使用

 構文

ALTER TABLE [テーブル名]
MODIFY [項目名] [新しいデータ型];

 例

ALTER TABLE tblName
MODIFY name NVARCHAR2(40);

ALTER TABLE tblName
MODIFY name VARCHAR(40);

SQL Server/Access

 *  「ALTER TABLE ~ ALTER COLUMN ~」を使用

 構文

ALTER TABLE [テーブル名]
ALTER COLUMN [新しいデータ型];

 例

ALTER TABLE tblName
ALTER COLUMN name NVARCHAR2(40);

 参考資料

http://programnet.hp.infoseek.co.jp/database/alter.html
MySQL
http://mysql.akarukutanoshiku.com/category5/entry24.html

 【5】表の項目名変更

MySQL

 *  「ALTER TABLE ~ CHANGE [COLUMN] ~」を使用

 構文

ALTER TABLE [テーブル名]
CHANGE (COLUMN) [古い項目名] [新しい項目名] [新しいデータ型];

 例

ALTER TABLE tblName
CHANGE name re_name VARCHAR(40);

 参考資料

http://www.dbonline.jp/mysql/table/index19.html

 関連記事

ALTER TABLE ~ テーブル制約変更 編 ~
https://dk521123.hatenablog.com/entry/2016/07/08/234918
CREATE TABLE / DROP TABLE ~ テーブル作成・削除 ~
https://dk521123.hatenablog.com/entry/2010/07/09/201233
テーブルに関するコメント文
https://dk521123.hatenablog.com/entry/2011/04/14/005146
PostgreSQL】順番を指定したテーブルの項目追加
https://dk521123.hatenablog.com/entry/2020/06/10/000000