首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 約束新增完全指南:六大類型、層級與語法總覽

     編輯:Oracle 資料庫基礎

Oracle 約束 是資料完整性的最後一道防線。本文系統整理六大約束類型、列級與表級兩種定義層級、四種新增時機,並以主鍵為例展示八種寫法,供開發與 DBA 快速查閱。

六大約束類型一覽

約束用途可命名層級
NOT NULL欄位不可為空否僅列級
DEFAULT預設值(非標準約束,不在 user_constraints)否僅列級
PRIMARY KEY唯一識別列,隱含 NOT NULL + UNIQUE是列級/表級
UNIQUE值唯一,允許一個 NULL是列級/表級
CHECK自訂條件檢核是列級/表級
FOREIGN KEY參考完整性是列級/表級

四大核心規則

  1. NOT NULL、DEFAULT 只能列級定義。
  2. PK、UK、CK、FK 可列級或表級定義。
  3. 跨欄位約束(如複合 PK、FK)只能表級定義。
  4. PK、UK、CK、FK 可自訂名稱;NOT NULL、DEFAULT 不可命名。

四種新增時機

  1. 建表時列級:CREATE TABLE t1 (id NUMBER PRIMARY KEY);
  2. 建表時表級:CREATE TABLE t3 (id NUMBER, PRIMARY KEY (id));
  3. 事後 ALTER TABLE 列級:ALTER TABLE t2 MODIFY id PRIMARY KEY;
  4. 事後 ALTER TABLE 表級:ALTER TABLE t4 ADD PRIMARY KEY (id);

主鍵八種寫法示範

-- 1. 建表列級(無名)
CREATE TABLE t1 (tid NUMBER PRIMARY KEY);

-- 2. 建表列級(有名)
CREATE TABLE t1 (tid NUMBER CONSTRAINT pk_tid PRIMARY KEY);

-- 3. 建表後 ALTER MODIFY 列級(無名)
CREATE TABLE t2 (tid NUMBER);
ALTER TABLE t2 MODIFY tid PRIMARY KEY;

-- 4. 建表後 ALTER MODIFY 列級(有名)
ALTER TABLE t2 MODIFY tid CONSTRAINT pk_t2id PRIMARY KEY;

-- 5. 建表表級(無名)
CREATE TABLE t3 (tid NUMBER, PRIMARY KEY (tid));

-- 6. 建表表級(有名)
CREATE TABLE t3 (tid NUMBER, CONSTRAINT pk_t3id PRIMARY KEY (tid));

-- 7. 建表後 ALTER ADD 表級(無名)
CREATE TABLE t4 (tid NUMBER);
ALTER TABLE t4 ADD PRIMARY KEY (tid);

-- 8. 建表後 ALTER ADD 表級(有名)
ALTER TABLE t4 ADD CONSTRAINT pk_t4id PRIMARY KEY (tid);

實務建議

  • 統一命名規範:PK_表名、FK_子表_父表、UK_表名_欄位、CK_表名_用途,利於後續管理與錯誤訊息辨識。
  • 優先使用表級語法:集中在建表尾部或單獨 ALTER TABLE ... ADD CONSTRAINT,閱讀性最佳。
  • 啟用/停用而非刪除:ALTER TABLE ... DISABLE/ENABLE CONSTRAINT ... 保留中繼資料,大量載資料時效能更好。
  • 查詢約束狀態:SELECT constraint_name, constraint_type, status FROM user_constraints WHERE table_name = '...';

掌握六大類型、兩種層級、四種時機、八種寫法,即能在任何情境下精準、規範地建立 Oracle 約束,守護資料品質。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved