Oracle數據庫(十)—— 約束
阿新 • • 發佈:2018-08-05
set null 當前 單獨 sys ade 如果 關鍵字 not null 數據字典
(一)什麽是約束
約束是表級的強制規定
有以下五種約束
- NOT NULL :非空
- UNIQUE:唯一
- PRIMARY KEY:主鍵
- FOREIGN KEY:外鍵
- CHECK:檢查
註意約束
- 如果不指定約束名 ,Oracle server 自動按照 SYS_Cn 的格式指定約束名
- 創建和修改約束:
- 建表的同時
- 建表之後
- 可以在表級或列級定義約束
- 可以通過數據字典視圖查看約束
(二)表級約束和列級約束
- 作用範圍:
- ①列級約束只能作用在一個列上
- ②表級約束可以作用在多個列上(當然表級約束也 可以作用在一個列上)
- 定義方式:列約束必須跟在列的定義後面,表約束不與列一起,而是單獨定義。
- 非空(not null) 約束只能定義在列上
約束定義語法:
CREATE TABLE [schema.]table (
column datatype [DEFAULT expr] [column_constraint],
...
[table_constraint]
[,...]);
(三)創建約束定義
1、not null約束
定義非空約束後,賦值為null會報錯
2、unique約束
可以定義在表級或列級
定義該約束的列不允許出現重復值
3、primary key約束
可以定義在表級或列級
主鍵特點:非空且唯一 即primary key = not null + unique
4、foreign key約束
可以定義在表級或列級
增加數據時,外鍵約束的列的值必須在父表中有值
FOREIGN KEY 約束的關鍵字
- FOREIGN KEY: 在表級指定子表中的列
- REFERENCES: 標示在父表中的列
- ON DELETE CASCADE(級聯刪除): 當父表中的列被刪除時,子表中相對應的列也被刪除
- ON DELETE SET NULL(級聯置空): 子表中相應的列置空
5、check約束
定義每一行必須滿足的條件
(四)添加約束
使用 ALTER TABLE 語句:
- 添加或刪除約束,但是不能修改約束
- 有效化或無效化約束
- 添加 NOT NULL 約束要使用 MODIFY 語句
1、添加刪除約束
-- 在工資上添加一個非空約束
-- 刪除name的非空約束
-- 給name添加unique約束
2、無效化約束
3、激活約束
- ENABLE 子句可將當前無效的約束激活
- 當定義或激活UNIQUE 或 PRIMARY KEY 約束時系統會自動創建UNIQUE 或 PRIMARY KEY索引
4、查詢約束(了解)
-- 查詢EMPLOYEES表中的約束信息
5、查詢定義約束的列
-- 查詢EMPLOYEES表中定義約束的列
(五)總結
1、創建和修改約束
2、描述約束的類型:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
Oracle數據庫(十)—— 約束