資源描述:
《oracle數(shù)據(jù)完整性和約束性》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Oracle數(shù)據(jù)完整性和約束性非空約束、主鍵約束、唯一約束、外鍵約束、檢查約束、默認(rèn)約束。非空約束空值(NULL)是不存在的值,它既不是0,也不是空字符串,是不存在,未知的情況。創(chuàng)建表時,表中的列默認(rèn)是允許為NULL。語法:創(chuàng)建表時添加非空約束Createtablett1(Booknonumber(4)notnull,Booknamevarchar2(10));為已經(jīng)創(chuàng)建的表添加非空約束Altertablett1modifybooknamenotnull;注意:如果bookname中已經(jīng)存在為n
2、ull的數(shù)據(jù)時,則添加notnull約束時會失敗,Oracle會先檢查表中所有行對應(yīng)列是否含有null值。刪除表列的非空約束Altertablett1modifybooknamenull;主鍵約束每個表中最多只有一個主鍵約束,可以是一列組成,也可以是兩個或者兩個以上組成(組成)。主鍵約束列都是不同的,主鍵約束同時也具有非空約束的特性。行級約束:主鍵約束由一列組成。表級約束:主鍵約束由兩個或者兩個以上的列組成。語法:創(chuàng)建表時添加主鍵約束Createtablett1(Booknonumber(4)p
3、rimarykey,//由系統(tǒng)命名,也可加constraint關(guān)鍵字為約束命名Booknamevarchar2(10));Createtablett1(Booknonumber(4),//由系統(tǒng)自動分配名稱的主鍵約束Booknamevarchar2(10),Constraintbookno_pkprimarykey(Bookno)//手動創(chuàng)建主鍵名稱的主鍵約束);注意:如果有多個列組成主鍵約束,則在primarykey(Bookno)括號內(nèi)用逗號隔開列名。在創(chuàng)建表之后添加主鍵約束Altertab
4、lett1addconstraintbookno_pkprimarykey(Bookno);//手動為主鍵命名Altertablett1addprimarykey(Bookno);//系統(tǒng)自動為主鍵命名Constraint關(guān)鍵字是用來手動給約束指定名稱。注意:如果列中已經(jīng)存在相同的數(shù)據(jù)或者null的數(shù)據(jù),添加主鍵約束失敗。刪除主鍵約束語法:Altertablett1dropconstraintbookno_pk;唯一性約束唯一性約束強調(diào)所在列不允許有相同的值,特點它的列允許有空值,作用保存除主鍵
5、列外的其他列的唯一性。語法:創(chuàng)建表指定唯一性約束Createtablett1(Booknonumber(4),Booknamevarchar2(10)constraintbookname_ukunique//手動命名);Createtablett1(Booknonumber(4),Booknamevarchar2(10),constraintbookname_ukunique(Bookname)//手動命名);注意:如果有多個列添加唯一約束,則在unique(Bookname)括號內(nèi)用逗號隔開列
6、名。唯一約束加非空約束等于主鍵約束。刪除唯一性約束語法:Altertablett1dropconstraintbookname_uk;外鍵約束一般外鍵約束會使用兩個表進行關(guān)聯(lián)(當(dāng)然也存在同一個表自連接的情況)。外鍵是指‘當(dāng)前表’(即外鍵表)引用‘表2’(即被引用表)的某個列或某幾個列,‘表2’中被引用的列必須具有主鍵約束或者唯一性約束。在‘表2’中被引用的列中不存在的數(shù)據(jù)不能出現(xiàn)在‘當(dāng)前表’表對應(yīng)的列中。如果外鍵列存儲了被引用表中將要被刪除的數(shù)據(jù),那么對被引用表的刪除操作將失敗。給已經(jīng)存在的表添
7、加外鍵語法:Createtablett1(Booknonumber(4),Booknamevarchar2(10),StuNonumber(4));表2student主鍵StuNoAltertablett1addconstraintstudent_stuno_fkforeignkey(StuNo)referfencesstudent(StuNo);如果外鍵表和被引用表的列名相同,則可以Altertablett1addconstraintstudent_stuno_fkforeignkey(Stu
8、No)referfencesstudent;在定義外鍵時,使用on關(guān)鍵字指定引用行為的類型。Noaction:當(dāng)刪除被引用表中被引用的數(shù)據(jù)時,違反外鍵約束,刪除失敗。這時外鍵約束的默認(rèn)引用類型。Setnull:當(dāng)被引用表中被引用列的數(shù)據(jù)被刪除時,外鍵表中列被設(shè)置為Null。注意,要使用這個關(guān)鍵字,外鍵列必須支持NULL值。Cascade:當(dāng)被引用表中被引用列的數(shù)據(jù)被刪除時,外鍵表中對應(yīng)的數(shù)據(jù)也將被刪除。這叫做‘級聯(lián)刪除’。語法:Altertablett1addconstraintstudent_