資源描述:
《sql數(shù)據(jù)庫完整性約束.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章數(shù)據(jù)庫完整性場景:學(xué)校在進行每學(xué)期的獎學(xué)金評選的時候,要求學(xué)生通過校內(nèi)網(wǎng)站提交獎學(xué)金申請表,這個表中數(shù)據(jù)將會加入到學(xué)生數(shù)據(jù)庫中,作為評選依據(jù)。學(xué)校的學(xué)籍管理辦公室數(shù)據(jù)庫管理員抱怨,每次都有學(xué)生輸入了錯誤的數(shù)據(jù),如:錯誤的專業(yè)名稱、和學(xué)籍檔案不一致的姓名、錯誤的導(dǎo)師名稱等等,有時也會因網(wǎng)絡(luò)超時,相同的信息重復(fù)的輸入多次,這樣會增加了更多的管理工作。若你是學(xué)校的數(shù)據(jù)庫管理人員認為可由什么方法解決這個問題,提高效率呢?通過實現(xiàn)約束來解決這個問題。約束是SQLServer提供的自動保持數(shù)據(jù)庫完整性的一種方法,它通過限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來保
2、證數(shù)據(jù)的完整性。在SQLSERVER中,對于基本表的約束分為列約束和表約束。什么是數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性數(shù)據(jù)庫完整性是防止不合語義或不正確的數(shù)據(jù)進入數(shù)據(jù)庫完整性體現(xiàn)了是否真實地反映現(xiàn)實世界例:學(xué)生的年齡必須是整數(shù),取值范圍為14-29;學(xué)生的性別只能是男或女;學(xué)生的學(xué)號一定是唯一的;學(xué)生所在的系必須是學(xué)校開設(shè)的系;DBMS維護數(shù)據(jù)庫完整性的機制:1.提供定義完整性約束條件的機制DBMS應(yīng)提供定義數(shù)據(jù)庫完整性約束條件,并把它們存入數(shù)據(jù)庫中。2.提供完整性檢查的方法檢查數(shù)據(jù)是否滿足完整性約束條件的機制稱為完整性檢查。一般在INSER
3、T、UPDATE、DELETE語句執(zhí)行后開始檢查。3.違約處理DBMS若發(fā)現(xiàn)用戶的操作違背了完整性約束條件,就采取一定的動作以保證數(shù)據(jù)的完整性,如拒絕執(zhí)行該操作,或級聯(lián)執(zhí)行其他操作。約束是SQLServer提供的自動保持數(shù)據(jù)庫完整性的一種方法,它通過限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來保證數(shù)據(jù)的完整性。在SQLSERVER中,對于基本表的約束分為列約束和表約束。列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;表約束與列定義相互獨立,不包括在列定義中,通常用于對多個列一起進行約束,與列定義用“,”分隔
4、,定義表約束時必須指出要約束的那些列的名稱。完整性約束與對象類型約束關(guān)鍵字名稱描述實體PRIMARYKEY主鍵約束唯一標識每一行UNIQUE惟一約束防止非主鍵重復(fù)引用FOREIGNKEY外鍵約束定義值與同一個表或另一個表的主鍵值匹配的一列或多列組合域CHECK檢查約束指定列的允許值DEFAULT默認值約束指定列的默認值NULL空值約束指定是否允許為NULL對象DEFAULTRULE默認值對象規(guī)則對象完整性約束與對象在SQLServer2008中有6種約束和2種對象:完整性約束的基本語法格式為:[CONSTRAINTconstraint_name(約束名)]
5、<約束類型>約束不指定名稱時,系統(tǒng)會給定一個名稱。完整性約束PRIMARYKEY與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區(qū)別:①一個表只能有一個PRIMARYKEY約束,但可定義多個UNIQUE約束;②對于指定為PRIMARYKEY的一個列或多個列的組合,其中任何一個列都不能出現(xiàn)空值,而對于UNIQUE所約束的唯一鍵,則允許為空。注意:不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARYKEY約束;PRIMARYKEY既可用于列約束,也可用于表約束。5.1PRIMARYKEY約束PRIM
6、ARYKEY約束用于定義基本表的主鍵,它是惟一確定表中每一條記錄的標識符,其值不能為NULL,也不能重復(fù),以此來保證實體的完整性。主鍵的創(chuàng)建操作方法有兩種:SQLServer管理平臺操作法和Transact-SQL語句操作法。(1)SQLServer管理平臺操作法(如圖示)(2)使用Transact-SQL語句操作法設(shè)置主鍵約束,其語法形式如下:PRIMARYKEYCONSTRAINTconstraint_namePRIMARYKEY(column_name)5.1PRIMARYKEY約束(2)舉例:建立一個SCORE表,包括:SNO、CNO和GRADE,
7、定義SNO,CNO共同組成SCORE的主鍵。5.1PRIMARYKEY約束(2)舉例:建立一個SCORE表,包括:SNO、CNO和GRADE,定義SNO,CNO共同組成SCORE的主鍵。CREATETABLESCORE(SNOCHAR(10)NOTNULL,CNOCHAR(10)NOTNULL,GRADENUMERIC(9),CONSTRAINTSC_PRIMPRIMARYKEY(SNO,CNO));5.1PRIMARYKEY約束5.2UNIQUE約束惟一性約束用于指定一個或者多個列的組合值具有惟一性,以防止在列中輸入重復(fù)的值。定義了UNIQUE約束的那些
8、列稱為唯一鍵,系統(tǒng)自動為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一