oracle約束的分類
數據庫完整性(database Integrity)是數據庫中數據的正確性和相容性,用來防止用戶向數據庫中添加不合法語義的數據。數據庫完整性是由各種各樣的完整性約束來保證的,可以說,數據庫完整性設計就是數據庫完整約束的設計。按照不同的角度可以將表的完整性約束分成不同的類型。主要可以選取兩個角度:約束的作用域和約束的用途。
按照約束的作用可以將表的完整性約束分為如下兩大類:
表級約束:應用於表,對於表中的多個列起作用。
列級約束:應用於表中的一列,只對該列起作用。
按照約束的用途可以將表的完整性約束分為5類:
約束 簡寫 說明
not null c 非空約束(指定一列不允許存儲空值)
primary key p 主鍵約束(主鍵由一列或多列組成,唯一標識表中的一列)
unique u 唯一約束(唯一約束,指定一列或一組列只能存儲唯一的值)
check c 檢查約束(指定一列或一組列的值必須存儲唯一的值)
foreing key r 外鍵約束(外鍵引用到表另一個表中的一列)
視圖user_constraints
可以通過查詢數據字典視圖user_constraints,可以了解當前用戶模式中所有的約束的基本信息。
列 類型 說明
owner varchar2(30) 約束的所有者
constraint_name varchar2(30) 約束名
constraint_type varchar2(1) 約束類型
table_name varchar2(30) 約束所針對的表名
status varchar2(8) 約束的狀態(enabled或disabled)
deferable varchar2(14) 該約束是否可延遲
deferrd varchar2(9) 立即執行還是延遲執行
通過查村數據字典視圖user_cons_columns,可以了解定義約束的列
列 類型 說明
owner varchar2(30) 約束的所有者
constraint_name varchar2(30) 約束名
table_name varchar2(30) 約束所針對的表名
column_name varchar2(4000) 約束定義所針對的列明
具體的操作如下:
SQL> column owner format a6
SQL> column constraint_name format a15
SQL> column table_name format a10
SQL> column column_name format a10
SQL> select owner,constraint_name,table_name,column_name //約束的信息
2 from user_cons_columns
3 where table_name='T';
OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAM
------ --------------- ---------- ----------
SYSTEM SYS_C0010065 T TID 約束的名稱 所在的列
SYSTEM SYS_C0010064 T TID 約束的名稱 所在的列
SQL>
SQL> select constraint_name,constraint_type //約束信息
2 from user_constraints
3 where table_name='T';
CONSTRAINT_NAME C
--------------- -
SYS_C0010065 P 主鍵約束
SYS_C0010064 C 非空約束
以上的內容來自學習的記錄。