表の定義を変更する『ALTER TABLE』文の『ADD』句を使った列の変更について、記載します。
1.ALTER TABLE ADD文とは
ALTER TABLEは表の定義を変更するSQLで、列の追加、変更、削除ができます。
列の追加は「ADD」句、列の変更は「MODIFY(モディファイ)」句、列の削除は「DROP」句を使います。
「ADD」句を使うと、既存の表に列を追加することができます。
2.ALTER TABLE ADD文の構文
今回はALTER TABLEのADD句を使った列の追加について紹介します。構文は以下の通りです。
ALTER TABLE [スキーマ.] テーブル名
ADD
(
列名1 データ型(サイズ) [DEFAULT デフォルト値] CONSTRAINT 制約名 制約タイプ] [,]
・・・・・・・・・
);
説明
列名、データ型、サイズは必須項目です。
列の追加は必ず表の一番後ろに追加されます。表の途中への列追加や列の順番の入れ替えはできません。
3.ALTER TABLE ADD文の練習
実際に作成したテーブルに列を追加してみましょう。
<列を追加するテーブル(test_employee)の作成:CREATE TABLE>
create table test_employee (
employeeid VARCHAR2(5) CONSTRAINT PK_empid PRIMARY KEY,
employeename VARCHAR2(15),
age number(3),
birthday date
);
※CREATE TABLEはDDLのためCOMMIT不要
<作成したテーブル(test_employee)の確認>
select * from test_employee;
<テーブルにデータ(3行)を挿入:INSERT>
INSERT INTO test_employee (
employeeid,
employeename,
age,
birthday
)
VALUES (
'A0001',
'佐藤',
'25',
'2000/1/1'
);
INSERT INTO test_employee (
employeeid,
employeename,
age,
birthday
)
VALUES (
'A0002',
'鈴木',
'24',
'2001/1/1'
);
INSERT INTO test_employee (
employeeid,
employeename,
age,
birthday
)
VALUES (
'A0003',
'田中',
'23',
'2002/1/1'
);
<テーブル(test_employee)の確認>
select * from test_employee;
<COMMIT実行>
COMMIT;
INSERT文はDMLのため、COMMITをします。
<列の追加>
email列とhairedate列を追加します。
ALTER TABLE test_employee
ADD (
email VARCHAR2(15) CONSTRAINT UK_email UNIQUE,
hiredate DATE
);
<テーブル(test_employee)の確認>
select * from test_employee;
表の最後(右側)にemail列とhiredate列が追加されていることを確認します。
<列の削除:ALTER TABLE DROP>
別記事で書く予定ですが、試しにEMAIL列をALTER TABLE DROP文で削除したいと思います。
email列の削除
ALTER TABLE test_employee
DROP (
email
);
※()内に複数列を指定することが可能です。
hiredate列の削除
ALTER TABLE test_employee
DROP COLUMN hiredate;
※1列のみの削除はCOLUMNキーワードを使用することもできる。
<テーブル(test_employee)の確認>
select * from test_employee;
email、hiredate列が削除されていることを確認します。
<テーブル(test_employee)の削除:DROP TABLE>
DROP TABLE文で今回作成したテーブルを削除します。
DROP TABLE test_employee;
※削除後、SELCT * FROM test_employee;で削除されていることを確認しました。