數(shù)據(jù)庫常用五類約束_第1頁
數(shù)據(jù)庫常用五類約束_第2頁
數(shù)據(jù)庫常用五類約束_第3頁
數(shù)據(jù)庫常用五類約束_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

數(shù)據(jù)庫常用五類約束:MySQL中約束保存在information_schema數(shù)據(jù)庫的table_constraints中,可以通過該表查詢約束信息;約束主要完成對數(shù)據(jù)的檢驗,保證數(shù)據(jù)庫數(shù)據(jù)的完整性;如果有相互依賴數(shù)據(jù),保證該數(shù)據(jù)不被刪除。常用五類約束:notnull:非空約束,指定某列不為空unique:唯一約束,指定某列和幾列組合的數(shù)據(jù)不能重復primarykey:主鍵約束,指定某列的數(shù)據(jù)不能重復、唯一foreignkey:外鍵,指定該列記錄屬于主表中的一條記錄,參照另一條數(shù)據(jù)check:檢查,指定一個表達式,用于檢驗指定數(shù)據(jù)注意:MySQL不支持check約束,但可以使用check約束,而沒有任何效果;根據(jù)約束數(shù)據(jù)列限制,約束可分為:單列約束:每個約束只約束一列多列約束:每個約束約束多列數(shù)據(jù)1、notnull非空約束用于確保當前列的值不為空值,非空約束只能出現(xiàn)在表對象的列上。Null類型特征:所有的類型的值都可以是null,包括int、float等數(shù)據(jù)類型空字符串”是不等于null,0也不等于nullcreatetabletemp(idintnotnull,namevarchar(255)notnulldefault‘a(chǎn)bc',sexcharnull)上面的table加上了非空約束,也可以用alter來修改或增加非空約束增加非空約束altertabletempmodifysexvarchar(2)notnull;取消非空約束altertabletempmodifysexvarchar(2)null;取消非空約束,增加默認值altertabletempmodifysexvarchar(2)default‘a(chǎn)bc';2、unique唯一約束是指定table的列或列組合不能重復,保證數(shù)據(jù)的唯一性。雖然唯一約束不允許出現(xiàn)重復的值,但是可以為多個null,同一個表可以有多個唯一約束,多個列組合的約束。在創(chuàng)建唯一約束的時候,如果不給唯一約束名稱,就默認和列名相同。MySQL會給唯一約束的列上默認創(chuàng)建一個唯一索引;createtabletemp(idintnotnull,namevarchar(25),passwordvarchar(16),constraintuk_name_pwdunique(name,password));表示用戶名和密碼組合不能重復添加唯一約束altertabletempaddunique(name,password);修改唯一性約束altertabletempmodifynamevarchar(25)unique;刪除約束altertabletempdropindexname;3、primarykey主鍵約束相當于唯一約束+非空約束的組合,主鍵約束列不允許重復,也不允許出現(xiàn)空值;如果的多列組合的主鍵約束,那么這些列都不允許為空值,并且組合的值不允許重復。每個表最多只允許一個主鍵,建立主鍵約束可以在列級別創(chuàng)建,也可以在表級別上創(chuàng)建。MySQL的主鍵名總是PRIMARY,當創(chuàng)建主鍵約束時,系統(tǒng)默認會在所在的列和列組合上建立對應的唯一索引。列模式:createtabletemp(idintprimarykey,namevarchar(25));createtabletemp2(idintnotnull,namevarchar(25),pwdvarchar(15),constraintpk_temp_idprimarykey(id));組合模式:createtabletemp2(idintnotnull,namevarchar(25),pwdvarchar(15),constraintpk_temp_idprimarykey(name,pwd));alter刪除主鍵約束altertabletempdropprimarykey;alter添加主鍵altertabletempaddprimarykey(name,pwd);alter修改列為主鍵altertabletempmodifyidintprimarykey;設置主鍵自增createtabletemp(idintauto_incrementprimarykey,namevarchar(20),pwdvarchar(16));auto_increment自增模式,設置自增后在插入數(shù)據(jù)的時候就不需要給該列插入值了。4、foreignkey外鍵約束是保證一個或兩個表之間的參照完整性,外鍵是構建于一個表的兩個字段或是兩個表的兩個字段之間的參照關系。也就是說從表的外鍵值必須在主表中能找到或者為空。當主表的記錄被從表參照時,主表的記錄將不允許刪除,如果要刪除數(shù)據(jù),需要先刪除從表中依賴該記錄的數(shù)據(jù),然后才可以刪除主表的數(shù)據(jù)。還有一種就是級聯(lián)刪除子表數(shù)據(jù)。注意:外鍵約束的參照列,在主表中引用的只能是主鍵或唯一鍵約束的列,假定引用的主表列不是唯一的記錄,那么從表引用的數(shù)據(jù)就不確定記錄的位置。同一個表可以有多個外鍵約束。創(chuàng)建外鍵約束:主表createtableclasses(idintauto_incrementprimarykey,namevarchar(20));從表createtablestudent(idintauto_increment,namevarchar(22),constraintpk_idprimarykey(id),classes_idintreferencesclasses(id));通常先建主表,然后再建從表,這樣從表的參照引用的表才存在。表級別創(chuàng)建外鍵約束:createtablestudent(idintauto_incrementprimarykey,namevarchar(25),classes_idint,foreignkey(classes_id)referencesclasses(id));上面的創(chuàng)建外鍵的方法沒有指定約束名稱,系統(tǒng)會默認給外鍵約束分配外鍵約束名稱,命名為student_ibfk_n,其中student是表名,n是當前約束從1開始的整數(shù)。指定約束名稱:createtablestudent(idintauto_incrementprimarykey,namevarchar(25),classes_idint,constraintfk_classes_idforeignkey(classes_id)referencesclasses(id));多列外鍵組合,必須用表級別約束語法:createtableclasses(idint,namevarchar(20),numberint,primarykey(name,number));createtablestudent(idintauto_incrementprimarykey,namevarchar(20),classes_namevarchar(20),classes_numberint,foreignkey(classes_name,classes_number)referencesclasses(name,number));刪除外鍵約束:altertablestudentdropforeignkeystudent_ibfk_1;altertablestudentdropforeignkeyfk_student_id;增加外鍵約束:altertablestudentaddforeignkey(classes_name,classes_number)referencesclasses(name,number);自引用、自關聯(lián)(遞歸表、樹狀表)createtabletree(idintauto_incrementprimarykey,namevarchar(50),parent_idint,foreignkey(parent_id)referencestree(id));級聯(lián)刪除:刪除主表的數(shù)據(jù)時,關聯(lián)的從表數(shù)據(jù)也刪除,則需要在建立外鍵約束的后面增加ondeletecascade或ondeletesetnull,前者是級聯(lián)刪除,后者是將從表的關聯(lián)列的值設置為null。createtablestudent(idintauto_incrementprimarykey,namevarchar(20),classes_namevarchar(20),classes_numberint,/*表級別聯(lián)合外鍵*/foreignkey(classes_name,classes_number)referencesclasses(name,number)ondeletecascad

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論