Oracle 表制約構文、列制約構文 | 淡々たんのメモ

Oracle 表制約構文、列制約構文

メルマガ おら! オラ! Oracle - どっぷり検証生活 ソートに関する検証vol1-3 どっぷり入門生活

http://www.insight-tec.com/mailmagazine/ora3/mail_back_index.html


によると、

列制約構文→createで列を定義するごとにチマチマ入れる制約

表制約構文→createの最後にガツッと複数列に対して入れる制約(単数列でもOK)


-----------------------------------------------------------------------------

上記サイトから「制約」の頁

構文
CREATE TABLE 表名
( 列名 データ型 [ CONSTRAINT 制約名 ] 制約    ←列制約
[ [ CONSTRAINT 制約名 ] 制約 ]・・・
[ ,列名 データ型 [ CONSTRAINT 制約名 ] 制約
[ [ CONSTRAINT 制約名 ] 制約 ]・・・]・・・
[ ,CONSTRAINT 制約名 制約 ]・・・ );    ←表制約

説明
制約にはエンティティ整合性制約と参照整合性制約があり、エンティティ整合性制約には主キー制約、一意キー制約、
NOT NULL制約、チェック制約がある。制約の指定には列制約構文と表制約構文がある。NOT NULL制約は列制約構文でしか指定できない。

address表を作成する。

SQL>create table address
2 (no number (3)
3 ,name varchar2 (20) not null    ←↓列制約制約
4 ,address varchar2 (50) not null
5 ,tel number (15) unique
6 ,mail varchar2 (30)
7 ,constraint primarykey_address primary key (no) );    ←表制約
列制約
PRIMARY KEY
UNIQUE
NOT NULL
CHECK (条件)

表制約
CONSTRAINT 制約名 PRIMARY KEY 列名
CONSTRAINT 制約名 UNIQUE 列名
CONSTRAINT 制約名 CHECK (条件)

説明
PRIMARY KEY PRIMARY KEY(主キー)制約は表の行を一意に識別する。主キーは一つの表に一つしか定義できないが、複数列で1つの主キーを設定することができる。 またNULL値は許可しない。
UNIQUE UNIQUE(一意キー)制約は同じ値が入ることを禁止する。またNULL値を許可し、複数行にNULL値があってもよい。
NOT NULL NOT NULL制約はNULL値が入ることを禁止する。
CHECK CHECK制約は入力値に対して条件を設定することが可能である。
列制約
REFERENCES 参照する表名(列名)

表制約
CONSTRAINT 制約名 FOREIGN KEY 列名
REFERENCES 参照する表名(列名)

説明
参照整合性制約を設定することで他の表と親子関係を持たせることができる。よって参照する列(子表)は参照される列(親表)の値しか入力できなくなる。
また参照される親表の列は主キー制約または一意キー制約が定義されていなければならない。参照する列はNULL値を許可する。