一铜犬、實體完整性
定義實體完整性:
1.在CREATE TABLE中使用PRIMARY KEY定義(列級和表級皆可)
2.實體完整性的檢查和違約處理(使用PRIMARY KEY定義主碼后厢破,主碼值唯一且值不為空)
參照完整性(外碼):FOREIGN KEY? (<列名>) REFERENCES <表名>(<列名>) [ON <操作> [違約處理策略]] [,...]
1.在CREATE TABLE中使用FOREIGN KEY定義外碼亿驾,使用REFERENCES(<表名>)指明參照表
2.違約處理策略有拒絕執(zhí)行(NO ACTION)(默認(rèn))、級聯(lián)操作(CASCADE)该园、設(shè)置為空值(SET NULL)
--拒絕:不允許執(zhí)行該操作
--級聯(lián)操作:當(dāng)刪除或修改被參照表的一個元組導(dǎo)致與參照表的信息不一致時,刪除或者修改參照表中的所有導(dǎo)致不一致的元組
--設(shè)置為空值:當(dāng)刪除或修改被參照表的一個元組導(dǎo)致與參照表的信息不一致時,將參照表中的所有導(dǎo)致不一致的元組的對應(yīng)屬性設(shè)置為空值
用戶定義完整性:
屬性上的約束條件:
--列的約束條件的定義:在定義列時對定義屬性的限制:列值非空(NOT NULL)呼畸、列值唯一(UNIQUE)、使用約束(CHECK(<條件表達式>))
--列上的約束條件的檢查和違約處理:關(guān)系數(shù)據(jù)庫管理系統(tǒng)檢查颁虐,違約則拒絕執(zhí)行
元組上的約束條件:
1.元組上的約束條件的定義:表級CHECK(<條件表達式>)
2.元組上約束條件的檢查和違約處理:違約則拒絕操作
完整性約束命名子句
1.完整性約束命名子句:CONSTRAINT <完整性約束條件名> <完整性約束條件>蛮原,作列級、表級皆可
2.修改表中的完整性約束限制:ALTER TABLE <表名>
--ADD CONSTRAINT <約束名> <完整性約束條件表達式>
--DROP CONSTRAINT <約束名>
斷言(應(yīng)用于多表的約束另绩,表外獨立創(chuàng)建儒陨,違約操作將被拒絕執(zhí)行,開銷大笋籽,一般不用)
1.創(chuàng)建斷言:CREATE ASSERTION <斷言名> CHECK <約束條件表達式>
2.刪除斷言:DROP ASSERTION <斷言名>
觸發(fā)器
1.定義觸發(fā)器:
CREATE TRIGGER <觸發(fā)器名>
{BEFORE|AFTER} <觸發(fā)事件> ON <表名>
REFERENING NEW|OLD ROW AS<變量>
FOR EACH{ROW|STATEMENT}
[WHEN <觸發(fā)條件>] <觸發(fā)動作體>?
--只有表的擁有者才可以在表上創(chuàng)建觸發(fā)器
--表上的觸發(fā)器是有限的
--同一外模式下觸發(fā)器名必須唯一蹦漠,觸發(fā)器名必須和表名在同一外模式下
--觸發(fā)器只能定義在基本表上,不能定義在視圖上
--觸發(fā)事件有UPDATE DELETE INSERT
--觸發(fā)器類型干签,行級:FOR EACH ROW津辩,語句級:FOR EACH STATEMENT
--觸發(fā)動作體可以是一個匿名的PL/SQL過程快,也可以是對已創(chuàng)建存儲過程的調(diào)用
--觸發(fā)動作體執(zhí)行失敗容劳,激活觸發(fā)器的事件停止執(zhí)行
--行級觸發(fā)器可以使用NEW或OLD引用UPDATE喘沿、INSERT事件之前的舊值,語句級不行插進去的是ROW,沒插的是
2.刪除觸發(fā)器·
DROP TRIGGER <觸發(fā)器名> ON <表名>