オーロラさんの勉強帳

IT企業勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。少しでもお役に立てたら幸いです。

SQL基礎 ALTER TABLE ADDを使って列の追加  oracleデータベース

表の定義を変更する『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;で削除されていることを確認しました。