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

Oracle 約束完整指南:六大約束類型、層級差異與四種建立語法實戰

     編輯:Oracle 資料庫基礎

Oracle 六大約束類型概覽

  1. NOT NULL:欄位不可為空
  2. DEFAULT:預設值 (注意:Oracle 內部不視為約束,USER_CONSTRAINTS 查不到)
  3. PRIMARY KEY:主鍵,唯一且非空
  4. CHECK:條件檢查
  5. UNIQUE:唯一性
  6. FOREIGN KEY:外鍵,參照完整性

約束層級與命名規則

約束類型可為欄級可為表級可命名多欄位時
NOT NULL✓✗✗N/A
DEFAULT✓✗✗N/A
PRIMARY KEY✓✓✓只能表級
UNIQUE✓✓✓只能表級
CHECK✓✓✓只能表級
FOREIGN KEY✓✓✓只能表級

四種建立約束的語法時機

  1. 建表時欄級:CREATE TABLE t (id NUMBER PRIMARY KEY);
  2. 修改表欄級:ALTER TABLE t MODIFY id PRIMARY KEY;
  3. 建表時表級:CREATE TABLE t (id NUMBER, PRIMARY KEY (id));
  4. 修改表表級:ALTER TABLE t ADD PRIMARY KEY (id);

表級語法可加名稱:CONSTRAINT pk_tid PRIMARY KEY (id),利於後續管理與啟用/停用。

實戰範例:主鍵約束的四種建立法

1. 建表時欄級 (可選命名)

CREATE TABLE t1 (tid NUMBER PRIMARY KEY);
-- 或帶名稱
CREATE TABLE t1 (tid NUMBER CONSTRAINT pk_tid PRIMARY KEY);

2. 修改表欄級

CREATE TABLE t2 (tid NUMBER);
ALTER TABLE t2 MODIFY tid PRIMARY KEY;
-- 或
ALTER TABLE t2 MODIFY tid NUMBER PRIMARY KEY;

3. 建表時表級 (可選命名)

CREATE TABLE t3 (tid NUMBER, PRIMARY KEY (tid));
-- 或帶名稱
CREATE TABLE t3 (tid NUMBER, CONSTRAINT pk_t3id PRIMARY KEY (tid));

4. 修改表表級 (可選命名)

CREATE TABLE t4 (tid NUMBER);
ALTER TABLE t4 ADD PRIMARY KEY (tid);
-- 或帶名稱
ALTER TABLE t4 ADD CONSTRAINT pk_t4id PRIMARY KEY (tid);

實務建議

  • 生產環境強烈建議為所有約束顯式命名,格式建議:PK_表名、FK_表名_參照表、UK_表名_欄位、CK_表名_規則,便於錯誤訊息識別、匯出入、版本控管。
  • 多欄位組合鍵 (複合主鍵/唯一鍵/外鍵) 只能用表級語法。
  • DEFAULT 雖非約束,但建表時同欄位定義:status VARCHAR2(1) DEFAULT 'N'。
  • 外鍵建立前,父表對應欄位必須有唯一索引 (通常是 PK/UK)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved