表レベルで指定することができる制約はどれですか。
表レベルで指定することができる制約はどれですか。
ANOT NULL制約
BCHECK制約✓
CUNIQUE制約✓
DPRIMARY KEY制約✓
EFOREIGN KEY制約✓
解説正答:B・C・D・E
NOT NULL制約のみ表レベルで指定できません。他の制約はすべて列レベル・表レベルの両方で指定可能です。
制約と指定レベルの対応:
| 制約名 | 列レベル | 表レベル |
|---|---|---|
| NOT NULL制約 | ○ | × |
| CHECK制約 | ○ | ○ |
| UNIQUE制約 | ○ | ○ |
| PRIMARY KEY制約 | ○ | ○ |
| FOREIGN KEY制約 | ○ | ○ |
なぜNOT NULL制約は表レベル指定できないのか:
NOT NULL制約は 特定の1列に対する制約 であり、表全体や複数列にまたがる意味を持ちません。一方で、複合主キーや複数列のUNIQUE制約などは表レベル指定が必須です。
例:複合PRIMARY KEY(表レベル指定)
CREATE TABLE order_items (
order_id NUMBER,
item_no NUMBER,
quantity NUMBER,
CONSTRAINT pk_order_items PRIMARY KEY (order_id, item_no)
);