第9章數(shù)據(jù)完整性ppt課件_第1頁
第9章數(shù)據(jù)完整性ppt課件_第2頁
第9章數(shù)據(jù)完整性ppt課件_第3頁
第9章數(shù)據(jù)完整性ppt課件_第4頁
第9章數(shù)據(jù)完整性ppt課件_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2022-3-281第第9章章 數(shù)據(jù)完好性數(shù)據(jù)完好性2022-3-282本章內(nèi)容本章內(nèi)容n 9.1 數(shù)據(jù)完好性數(shù)據(jù)完好性n 9.2 約束約束n 9.3 規(guī)那么規(guī)那么n 9.4 默許值默許值2022-3-2839.1 數(shù)據(jù)完好性數(shù)據(jù)完好性數(shù)據(jù)完好性是指數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù)的一致性和正數(shù)據(jù)完好性是指數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù)的一致性和正確性,確保各個(gè)文件或表中的數(shù)據(jù)值的關(guān)系一致,確性,確保各個(gè)文件或表中的數(shù)據(jù)值的關(guān)系一致,確保數(shù)據(jù)庫中的數(shù)據(jù)可以勝利和正確地更新確保數(shù)據(jù)庫中的數(shù)據(jù)可以勝利和正確地更新 。數(shù)據(jù)庫設(shè)計(jì)的一項(xiàng)重要內(nèi)容是確定如何加強(qiáng)數(shù)據(jù)數(shù)據(jù)庫設(shè)計(jì)的一項(xiàng)重要內(nèi)容是確定如何加強(qiáng)數(shù)據(jù)的完好性。的完好性。2022

2、-3-2849.1 數(shù)據(jù)完好性數(shù)據(jù)完好性n 關(guān)系數(shù)據(jù)完好性關(guān)系數(shù)據(jù)完好性n 關(guān)系數(shù)據(jù)完好性包括一下內(nèi)容:關(guān)系數(shù)據(jù)完好性包括一下內(nèi)容:n (1) 實(shí)體完好性實(shí)體完好性n 實(shí)體完好性就是把表中每一條記錄看作一個(gè)實(shí)體,實(shí)體完好性就是把表中每一條記錄看作一個(gè)實(shí)體,要求一切行都具有獨(dú)一標(biāo)識(shí),即主鍵,且主鍵的值要求一切行都具有獨(dú)一標(biāo)識(shí),即主鍵,且主鍵的值非空,又稱為行完好性非空,又稱為行完好性 。n (2) 域完好性域完好性n 域完好性是關(guān)于數(shù)據(jù)列取值有效性的限制域完好性是關(guān)于數(shù)據(jù)列取值有效性的限制 。域。域完好性通常用有效性檢查來實(shí)現(xiàn),也可以經(jīng)過限制完好性通常用有效性檢查來實(shí)現(xiàn),也可以經(jīng)過限制數(shù)據(jù)類型、

3、格式或者能夠的取值范圍來實(shí)現(xiàn)數(shù)據(jù)類型、格式或者能夠的取值范圍來實(shí)現(xiàn) 。n 例如,對(duì)于例如,對(duì)于teaching數(shù)據(jù)庫中數(shù)據(jù)庫中s_c表中,表中,GRADE字段的取值只能是從字段的取值只能是從0到到100的整數(shù)值,而不能為其的整數(shù)值,而不能為其他數(shù)值他數(shù)值 。2022-3-2859.1 數(shù)據(jù)完好性數(shù)據(jù)完好性(3) 參照完好性參照完好性參照完好性是對(duì)外鍵取值有效性的限制,以確保數(shù)據(jù)在參照完好性是對(duì)外鍵取值有效性的限制,以確保數(shù)據(jù)在另一個(gè)參照表的取值范圍內(nèi)另一個(gè)參照表的取值范圍內(nèi) 。參照完好性要求外鍵的取值只。參照完好性要求外鍵的取值只能取參照表中的有效值或空值能取參照表中的有效值或空值 。假設(shè)在參

4、考表中某一記錄的。假設(shè)在參考表中某一記錄的主鍵被依賴表中的外部鍵參考,那么這一記錄既不能刪除,主鍵被依賴表中的外部鍵參考,那么這一記錄既不能刪除,也不能修正其主鍵值,以確保關(guān)鍵字的一致性也不能修正其主鍵值,以確保關(guān)鍵字的一致性 。(4) 用戶定義完好性用戶定義完好性用戶定義完好性允許特定的不屬于上述類別規(guī)那么的完用戶定義完好性允許特定的不屬于上述類別規(guī)那么的完好性定義,前面的好性定義,前面的3個(gè)完好性類型都支持用戶定義完好性。個(gè)完好性類型都支持用戶定義完好性。實(shí)現(xiàn)用戶定義完好性,可以有兩種方法,即聲明數(shù)據(jù)完實(shí)現(xiàn)用戶定義完好性,可以有兩種方法,即聲明數(shù)據(jù)完好性和過程數(shù)據(jù)完好性。好性和過程數(shù)據(jù)完好

5、性。 2022-3-2869.1 數(shù)據(jù)完好性數(shù)據(jù)完好性 聲明數(shù)據(jù)完好性聲明數(shù)據(jù)完好性 聲明數(shù)據(jù)完好性是經(jīng)過在對(duì)象定義中定義的規(guī)范來實(shí)現(xiàn)聲明數(shù)據(jù)完好性是經(jīng)過在對(duì)象定義中定義的規(guī)范來實(shí)現(xiàn)數(shù)據(jù)完好性,是由系統(tǒng)本身的自動(dòng)強(qiáng)迫來實(shí)現(xiàn)的,它包括運(yùn)數(shù)據(jù)完好性,是由系統(tǒng)本身的自動(dòng)強(qiáng)迫來實(shí)現(xiàn)的,它包括運(yùn)用各種約束、缺省的規(guī)那么。用各種約束、缺省的規(guī)那么。 過程數(shù)據(jù)完好性過程數(shù)據(jù)完好性 過程數(shù)據(jù)完好性是經(jīng)過在腳本言語中定義的完好性規(guī)范過程數(shù)據(jù)完好性是經(jīng)過在腳本言語中定義的完好性規(guī)范來實(shí)現(xiàn)的,當(dāng)執(zhí)行這些腳本時(shí),就可以強(qiáng)迫完好性的實(shí)現(xiàn)來實(shí)現(xiàn)的,當(dāng)執(zhí)行這些腳本時(shí),就可以強(qiáng)迫完好性的實(shí)現(xiàn) 。 過程數(shù)據(jù)完好性的方式包括運(yùn)用

6、觸發(fā)器和存儲(chǔ)過程等。過程數(shù)據(jù)完好性的方式包括運(yùn)用觸發(fā)器和存儲(chǔ)過程等。2022-3-2879.1 數(shù)據(jù)完好性數(shù)據(jù)完好性n SQL Server 2019中的數(shù)據(jù)完好性 n 各類數(shù)據(jù)完好性和對(duì)應(yīng)實(shí)現(xiàn)完好性的SQL Server組件如表9.1所示 。數(shù)據(jù)完整性數(shù)據(jù)完整性 對(duì)應(yīng)的對(duì)應(yīng)的SQL Server組件組件 實(shí)體完整性實(shí)體完整性 PRIMARY KEY(主鍵主鍵)約束、約束、UNIQUE(唯一唯一)約束約束UNIQUE INDEX(唯一索引唯一索引)、IDENTITY COLUMN(標(biāo)識(shí)列標(biāo)識(shí)列) 域完整性域完整性 DEFAULT(默認(rèn)值默認(rèn)值)、CHECK(檢查檢查)約束、約束、RULE(規(guī)則

7、規(guī)則)FOREIGN KEY(外鍵外鍵)約束、約束、DATA TYPE(數(shù)據(jù)類型數(shù)據(jù)類型) 參照完整性參照完整性 FOREIGN KEY (外鍵外鍵)約束、約束、CHECK (檢查檢查)約束約束TRIGGER(觸發(fā)器觸發(fā)器)、STORED PROCEDURE(存儲(chǔ)過程存儲(chǔ)過程) 用戶定義完整性用戶定義完整性 RULE(規(guī)則規(guī)則)、TRIGGER(觸發(fā)器觸發(fā)器)、STORED PROCEDURE(存儲(chǔ)過程存儲(chǔ)過程)2022-3-2889.1 數(shù)據(jù)完好性數(shù)據(jù)完好性(1) 空值空值數(shù)據(jù)表中的列可以接受空值,也可以回絕空值。在數(shù)據(jù)數(shù)據(jù)表中的列可以接受空值,也可以回絕空值。在數(shù)據(jù)庫中,庫中,NULL是一

8、個(gè)特殊值,表示未知值的概念。是一個(gè)特殊值,表示未知值的概念。NULL不同于空字符或不同于空字符或0??兆址且粋€(gè)有效的字符,??兆址且粋€(gè)有效的字符,0是是一個(gè)有效的數(shù)字。一個(gè)有效的數(shù)字。NULL只是表示此值未知這一概念。只是表示此值未知這一概念。NULL也不同于零長(zhǎng)度字符串也不同于零長(zhǎng)度字符串(空串空串)。假設(shè)列定義中包含假設(shè)列定義中包含NOT NULL子句,那么不能為該列輸子句,那么不能為該列輸入入NULL值。假設(shè)列定義中僅包含值。假設(shè)列定義中僅包含NULL關(guān)鍵字,那么接受關(guān)鍵字,那么接受NULL值值 2022-3-2899.1 數(shù)據(jù)完好性數(shù)據(jù)完好性(2) 約束約束約束定義關(guān)于列中允許值的

9、規(guī)那么,是強(qiáng)迫實(shí)施完好性約束定義關(guān)于列中允許值的規(guī)那么,是強(qiáng)迫實(shí)施完好性的規(guī)范機(jī)制。運(yùn)用約束優(yōu)先于運(yùn)用的規(guī)范機(jī)制。運(yùn)用約束優(yōu)先于運(yùn)用DML觸發(fā)器、規(guī)那么和觸發(fā)器、規(guī)那么和默許值默許值 。 約束類型約束類型SQL Server 2019有以下約束類型有以下約束類型 :NOT NULL約束約束 :非空約束,指定列不接受:非空約束,指定列不接受NULL值值 . CHECK約束約束 :檢查約束,經(jīng)過限制可輸入到列中的值:檢查約束,經(jīng)過限制可輸入到列中的值來強(qiáng)迫實(shí)施域完好性來強(qiáng)迫實(shí)施域完好性 。 UNIQUE約束:獨(dú)一約束,強(qiáng)迫實(shí)施列取值集合中值的約束:獨(dú)一約束,強(qiáng)迫實(shí)施列取值集合中值的獨(dú)一性。主鍵強(qiáng)迫

10、實(shí)施獨(dú)一性,但主鍵不允許獨(dú)一性。主鍵強(qiáng)迫實(shí)施獨(dú)一性,但主鍵不允許NULL作為一作為一個(gè)獨(dú)一值。個(gè)獨(dú)一值。2022-3-28109.1 數(shù)據(jù)完好性數(shù)據(jù)完好性d. PRIMARY KEY約束:主鍵約束,標(biāo)識(shí)具有獨(dú)一標(biāo)識(shí)約束:主鍵約束,標(biāo)識(shí)具有獨(dú)一標(biāo)識(shí)表中行的值的列或列集表中行的值的列或列集 。e. FOREIGN KEY約束:外鍵約束,標(biāo)識(shí)并強(qiáng)迫實(shí)施表約束:外鍵約束,標(biāo)識(shí)并強(qiáng)迫實(shí)施表之間的關(guān)系之間的關(guān)系 。列約束和表約束列約束和表約束 列約束指定為列定義的一部分,并且只運(yùn)用于該列。表列約束指定為列定義的一部分,并且只運(yùn)用于該列。表約束的聲明與列定義無關(guān),可以運(yùn)用于表中多個(gè)列約束的聲明與列定義無關(guān),

11、可以運(yùn)用于表中多個(gè)列 。當(dāng)一個(gè)。當(dāng)一個(gè)約束中必需包含多個(gè)列時(shí),應(yīng)運(yùn)用表約束。約束中必需包含多個(gè)列時(shí),應(yīng)運(yùn)用表約束。2022-3-28119.1 數(shù)據(jù)完好性數(shù)據(jù)完好性(3) 規(guī)那么規(guī)那么規(guī)那么用于執(zhí)行一些與規(guī)那么用于執(zhí)行一些與CHECK約束一樣的功能。運(yùn)用約束一樣的功能。運(yùn)用CHECK約束是限制列值的首選規(guī)范方法。約束是限制列值的首選規(guī)范方法。CHECK約束還約束還比規(guī)那么更簡(jiǎn)明。一個(gè)列只能運(yùn)用一個(gè)規(guī)那么,但可以運(yùn)用比規(guī)那么更簡(jiǎn)明。一個(gè)列只能運(yùn)用一個(gè)規(guī)那么,但可以運(yùn)用多個(gè)多個(gè)CHECK約束。約束。CHECK約束被指定為約束被指定為CREATE TABLE語句的一部分,而規(guī)那么是作為單獨(dú)的對(duì)象創(chuàng)建

12、,然后綁定語句的一部分,而規(guī)那么是作為單獨(dú)的對(duì)象創(chuàng)建,然后綁定到列上。到列上。2022-3-28129.1 數(shù)據(jù)完好性數(shù)據(jù)完好性(4) 默許值默許值假設(shè)插入行時(shí)沒有為列指定值,默許值那么指定列中默假設(shè)插入行時(shí)沒有為列指定值,默許值那么指定列中默許取值。默許值可以是計(jì)算結(jié)果為常量的任何值,例如常量、許取值。默許值可以是計(jì)算結(jié)果為常量的任何值,例如常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。假設(shè)要運(yùn)用默許值,可以經(jīng)過在假設(shè)要運(yùn)用默許值,可以經(jīng)過在CREATE TABLE中運(yùn)用中運(yùn)用DEFAULT關(guān)鍵字來創(chuàng)建默許值定義。這將為每一列分配一關(guān)鍵字來創(chuàng)建默許值定義。這將為每一列分配一個(gè)常量表達(dá)式作

13、為默許值,也可以作為單獨(dú)的對(duì)象創(chuàng)建,然個(gè)常量表達(dá)式作為默許值,也可以作為單獨(dú)的對(duì)象創(chuàng)建,然后綁定到列上。后綁定到列上。2022-3-28139.2 約束約束約束是經(jīng)過限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之約束是經(jīng)過限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來保證數(shù)據(jù)完好性間的數(shù)據(jù)來保證數(shù)據(jù)完好性 。約束獨(dú)立于表構(gòu)造,創(chuàng)建約束有兩種方法約束獨(dú)立于表構(gòu)造,創(chuàng)建約束有兩種方法 :創(chuàng)建表時(shí)在創(chuàng)建表時(shí)在CREATE TABLE命令中聲明;命令中聲明; 在不改動(dòng)表構(gòu)造的根底上,經(jīng)過修正表構(gòu)造命令在不改動(dòng)表構(gòu)造的根底上,經(jīng)過修正表構(gòu)造命令A(yù)LTER TABLE添加或刪除添加或刪除 。當(dāng)表被刪除時(shí),表所帶的一切約束定

14、義也隨之被當(dāng)表被刪除時(shí),表所帶的一切約束定義也隨之被刪除。刪除。2022-3-28149.2 約束約束表9.2 一切可用的約束類型完整性類型完整性類型 約束類型約束類型 域完整性域完整性 DEFAULT(默認(rèn)值默認(rèn)值)、CHECK(檢檢查查)約束約束 實(shí)體完整性實(shí)體完整性 PRIMARY KEY(主鍵主鍵)約束、約束、UNIQUE(唯一唯一)約束約束 參照完整性參照完整性 FOREIGN KEY(外鍵外鍵)約束約束 2022-3-28159.2 約束約束n 主鍵約束主鍵約束n 在數(shù)據(jù)表中經(jīng)常有一列或多列的組合,其值能獨(dú)在數(shù)據(jù)表中經(jīng)常有一列或多列的組合,其值能獨(dú)一地標(biāo)識(shí)表中的每一行。這樣的一列或

15、多列稱為表一地標(biāo)識(shí)表中的每一行。這樣的一列或多列稱為表的主鍵的主鍵 。n 經(jīng)過它可強(qiáng)迫表的實(shí)體完好性,以確保數(shù)據(jù)表中經(jīng)過它可強(qiáng)迫表的實(shí)體完好性,以確保數(shù)據(jù)表中數(shù)據(jù)的獨(dú)一性數(shù)據(jù)的獨(dú)一性 。n 當(dāng)創(chuàng)建或更改表時(shí),可經(jīng)過定義當(dāng)創(chuàng)建或更改表時(shí),可經(jīng)過定義PRIMARY KEY (主鍵主鍵)約束來創(chuàng)建主鍵。約束來創(chuàng)建主鍵。2022-3-28169.2 約束約束對(duì)于主鍵約束,需滿足以下規(guī)那么。對(duì)于主鍵約束,需滿足以下規(guī)那么。一個(gè)表只能包含一個(gè)一個(gè)表只能包含一個(gè)PRIMARY KEY約束。約束。由由PRIMARY KEY約束生成的索引不會(huì)使表中的非聚集約束生成的索引不會(huì)使表中的非聚集索引超越索引超越249個(gè)

16、,聚集索引超越個(gè),聚集索引超越1個(gè)。個(gè)。假設(shè)沒有為假設(shè)沒有為PRIMARY KEY約束指定約束指定CLUSTERED或或NONCLUSTERED,并且沒有為,并且沒有為UNIQUE約束指定聚集索引,約束指定聚集索引,那么將對(duì)該那么將對(duì)該P(yáng)RIMARY KEY約束運(yùn)用約束運(yùn)用CLUSTERED。在在PRIMARY KEY約束中定義的一切列都必需定義為約束中定義的一切列都必需定義為NOT NULL。假設(shè)沒有指定為空性,那么參與。假設(shè)沒有指定為空性,那么參與PRIMARY KEY約束的一切列的為空性都將設(shè)置為約束的一切列的為空性都將設(shè)置為NOT NULL。2022-3-28179.2 約束約束(1)

17、 創(chuàng)建表時(shí)聲明主鍵約束創(chuàng)建表時(shí)聲明主鍵約束 假設(shè)表的主鍵由單列組成,那么該主鍵約束可以定義為該列的列約假設(shè)表的主鍵由單列組成,那么該主鍵約束可以定義為該列的列約束。假設(shè)主鍵由兩個(gè)以上的列組成,那么該主鍵約束必需定義為表約束束。假設(shè)主鍵由兩個(gè)以上的列組成,那么該主鍵約束必需定義為表約束 。定義列級(jí)主鍵約束定義列級(jí)主鍵約束語法格式如下:語法格式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED 2022-3-28189.2 約束約束 CONSTRAINT:可選關(guān)鍵字,表示:可選關(guān)鍵字,表示PRIMARY KEY、N

18、OT NULL、UNIQUE、FOREIGN KEY或或CHECK約束定約束定義的開場(chǎng)義的開場(chǎng) 。 constraint_name:約束的稱號(hào)。約束稱號(hào)必需在表所屬:約束的稱號(hào)。約束稱號(hào)必需在表所屬的架構(gòu)中獨(dú)一。的架構(gòu)中獨(dú)一。 PRIMARY KEY:是經(jīng)過獨(dú)一索引對(duì)給定的一列或多列:是經(jīng)過獨(dú)一索引對(duì)給定的一列或多列強(qiáng)迫實(shí)體完好性的約束。每個(gè)表只能創(chuàng)建一個(gè)強(qiáng)迫實(shí)體完好性的約束。每個(gè)表只能創(chuàng)建一個(gè) PRIMARY KEY 約束約束 。 CLUSTERED | NONCLUSTERED:指示為:指示為PRIMARY KEY約束創(chuàng)建聚集索引還是非聚集索引。約束創(chuàng)建聚集索引還是非聚集索引。PRIMAR

19、Y KEY約束默以為約束默以為CLUSTERED。2022-3-28199.2 約束約束定義表級(jí)主鍵約束定義表級(jí)主鍵約束語法格式如下。語法格式如下。 CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ( column_name ,.n ) 其中,其中,column_name ,.n 指定組成主鍵的列名,指定組成主鍵的列名,n最大最大值為值為16。2022-3-28209.2 約束約束(2) 修正表時(shí)創(chuàng)建主鍵約束修正表時(shí)創(chuàng)建主鍵約束 語法格式如下。語法格式如下。ALTER TABLE table_nameADD CON

20、STRAINT Constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ( column_name ,n ) 2022-3-28219.2 約束約束例如:假設(shè)在例如:假設(shè)在teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的s_c表中沒有設(shè)置主鍵表中沒有設(shè)置主鍵約束,以下例如經(jīng)過約束,以下例如經(jīng)過ALTER TABLE命令添加主鍵約束命令添加主鍵約束 。USE teachingGOALTER TABLE s_cADD CONSTRAINT PK_sc PRIMARY KEY (SNO, CNO)GO經(jīng)過經(jīng)過ALTER TABLE命令也可以刪除不運(yùn)用的主鍵約束,

21、命令也可以刪除不運(yùn)用的主鍵約束,命令格式如下。命令格式如下。ALTER TABLE table_name DROP CONSTRAINT constraint_name2022-3-28229.2 約束約束n 外鍵約束外鍵約束n 經(jīng)過將用于保管表中主鍵值的一列或多列添加到經(jīng)過將用于保管表中主鍵值的一列或多列添加到另一個(gè)表中,可創(chuàng)建兩個(gè)表之間的鏈接。這個(gè)列就另一個(gè)表中,可創(chuàng)建兩個(gè)表之間的鏈接。這個(gè)列就成為第二個(gè)表的外鍵。成為第二個(gè)表的外鍵。 n 外鍵用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一外鍵用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。列或多列。 n 當(dāng)創(chuàng)建或更改表時(shí),可以經(jīng)過定義當(dāng)創(chuàng)建或更改

22、表時(shí),可以經(jīng)過定義FOREIGN KEY約束來創(chuàng)建外鍵。約束來創(chuàng)建外鍵。2022-3-28239.2 約束約束對(duì)于外鍵約束,需求滿足以下規(guī)那么。對(duì)于外鍵約束,需求滿足以下規(guī)那么。假設(shè)在假設(shè)在FOREIGN KEY約束的列中輸入非約束的列中輸入非NULL值,那么此值必需值,那么此值必需在被援用列中存在;否那么,將前往違反外鍵約束的錯(cuò)誤信息。在被援用列中存在;否那么,將前往違反外鍵約束的錯(cuò)誤信息。FOREIGN KEY約束僅能援用位于同一效力器上的同一數(shù)據(jù)庫中的約束僅能援用位于同一效力器上的同一數(shù)據(jù)庫中的表。跨數(shù)據(jù)庫的參照完好性必需經(jīng)過觸發(fā)器實(shí)現(xiàn)。表??鐢?shù)據(jù)庫的參照完好性必需經(jīng)過觸發(fā)器實(shí)現(xiàn)。FOR

23、EIGN KEY約束可援用同一表中的其他列,此行為稱為自援用。約束可援用同一表中的其他列,此行為稱為自援用。列級(jí)列級(jí)FOREIGN KEY約束的約束的REFERENCES子句只能列出一個(gè)援用子句只能列出一個(gè)援用列。此列的數(shù)據(jù)類型必需與定義約束的列的數(shù)據(jù)類型一樣。列。此列的數(shù)據(jù)類型必需與定義約束的列的數(shù)據(jù)類型一樣。表級(jí)表級(jí)FOREIGN KEY約束的約束的REFERENCES子句中援用列的數(shù)目必子句中援用列的數(shù)目必需與約束列列表中的列數(shù)一樣。每個(gè)援用列的數(shù)據(jù)類型也必需與列表中需與約束列列表中的列數(shù)一樣。每個(gè)援用列的數(shù)據(jù)類型也必需與列表中相應(yīng)列的數(shù)據(jù)類型一樣。相應(yīng)列的數(shù)據(jù)類型一樣。FOREIGN

24、KEY約束只能援用所參照的表的約束只能援用所參照的表的PRIMARY KEY或或UNIQUE約束中的列或所援用的表上約束中的列或所援用的表上UNIQUE INDEX中的列。中的列。2022-3-28249.2 約束約束(1) 創(chuàng)建表時(shí)聲明外鍵約束創(chuàng)建表時(shí)聲明外鍵約束 語法格式如下。語法格式如下。 CONSTRAINT constraint_name FOREIGN KEYREFERENCES schema_name . referenced_table_name ( ref_column ) ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFA

25、ULT ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT 2022-3-28259.2 約束約束 FOREIGN KEY REFERENCES:為列中的數(shù)據(jù)提供參:為列中的數(shù)據(jù)提供參照完好性的約束。照完好性的約束。FOREIGN KEY 約束要求列中的每個(gè)值在約束要求列中的每個(gè)值在所引參照的表中對(duì)應(yīng)的被援用列中都存在。所引參照的表中對(duì)應(yīng)的被援用列中都存在。 schema_name . referenced_table_name:是:是FOREIGN KEY約束參照的表的稱號(hào),以及該表所屬架構(gòu)的稱號(hào)。約束參照的表的稱號(hào),以及該表所屬架構(gòu)

26、的稱號(hào)。 ( ref_column ,. n ):是:是FOREIGN KEY約束所援用的約束所援用的表中的一列或多列表中的一列或多列 。 ON DELETE NO ACTION | CASCADE | SET NULL | SET DEFAULT :指定假設(shè)已創(chuàng)建表中的行具有援用關(guān)系,:指定假設(shè)已創(chuàng)建表中的行具有援用關(guān)系,并且被援用行已從父表中刪除,那么對(duì)這些行采取的操作。并且被援用行已從父表中刪除,那么對(duì)這些行采取的操作。默許值為默許值為NO ACTION。2022-3-28269.2 約束約束NO ACTION:數(shù)據(jù)庫引擎將引發(fā)錯(cuò)誤,并回滾對(duì)父表中:數(shù)據(jù)庫引擎將引發(fā)錯(cuò)誤,并回滾對(duì)父表中相

27、應(yīng)行的刪除操作。相應(yīng)行的刪除操作。CASCADE:假設(shè)從父表中刪除一行,那么將從援用表:假設(shè)從父表中刪除一行,那么將從援用表中刪除相應(yīng)行。中刪除相應(yīng)行。SET NULL:假設(shè)父表中對(duì)應(yīng)的行被刪除,那么組成外:假設(shè)父表中對(duì)應(yīng)的行被刪除,那么組成外鍵的一切值都將設(shè)置為鍵的一切值都將設(shè)置為NULL。假設(shè)要執(zhí)行此約束,外鍵列。假設(shè)要執(zhí)行此約束,外鍵列必需可為空值。必需可為空值。SET DEFAULT:假設(shè)父表中對(duì)應(yīng)的行被刪除,那么組成:假設(shè)父表中對(duì)應(yīng)的行被刪除,那么組成外鍵的一切值都將設(shè)置為默許值。假設(shè)要執(zhí)行此約束,一切外鍵的一切值都將設(shè)置為默許值。假設(shè)要執(zhí)行此約束,一切外鍵列都必需有默許定義。假設(shè)某

28、列為空值,并且未設(shè)置顯外鍵列都必需有默許定義。假設(shè)某列為空值,并且未設(shè)置顯式的默許值,那么將運(yùn)用式的默許值,那么將運(yùn)用NULL作為該列的隱式默許值。作為該列的隱式默許值。2022-3-28279.2 約束約束 ON UPDATE NO ACTION | CASCADE | SET NULL | SET DEFAULT :指定在發(fā)生更改的表中,假設(shè)行有援用:指定在發(fā)生更改的表中,假設(shè)行有援用關(guān)系且援用的行在父表中被更新,那么對(duì)這些行采取什么操關(guān)系且援用的行在父表中被更新,那么對(duì)這些行采取什么操作。默許值為作。默許值為NO ACTION 。2022-3-28289.2 約束約束外鍵約束不僅可以與一

29、張表上的主鍵約束建立聯(lián)絡(luò),也外鍵約束不僅可以與一張表上的主鍵約束建立聯(lián)絡(luò),也可以與另一張表上的可以與另一張表上的UNIQUE約束建立聯(lián)絡(luò)。當(dāng)一行新的數(shù)約束建立聯(lián)絡(luò)。當(dāng)一行新的數(shù)據(jù)被參與到表格中,或表格中曾經(jīng)存在的外鍵上的數(shù)據(jù)進(jìn)展據(jù)被參與到表格中,或表格中曾經(jīng)存在的外鍵上的數(shù)據(jù)進(jìn)展修正時(shí),新的數(shù)據(jù)必需存在于另一張表的主鍵上,或者為修正時(shí),新的數(shù)據(jù)必需存在于另一張表的主鍵上,或者為NULL 。在外鍵約束上允許存在為在外鍵約束上允許存在為NULL的值的值 。當(dāng)主鍵所在表的數(shù)據(jù)被另一張表的外鍵所援用時(shí),用戶當(dāng)主鍵所在表的數(shù)據(jù)被另一張表的外鍵所援用時(shí),用戶將無法對(duì)主鍵里的數(shù)據(jù)進(jìn)展修正或刪除,除非事先刪除

30、或修將無法對(duì)主鍵里的數(shù)據(jù)進(jìn)展修正或刪除,除非事先刪除或修正援用的數(shù)據(jù)。正援用的數(shù)據(jù)。 2022-3-28299.2 約束約束(2) 修正表時(shí)創(chuàng)建外鍵約束修正表時(shí)創(chuàng)建外鍵約束 語法格式如下。語法格式如下。ALTER TABLE table_nameADDCONSTRAINT constraint_nameFOREIGN KEY( column ,n )REFERENCES ref_table( ref_column ,n )2022-3-28309.2 約束約束例如:假設(shè)在例如:假設(shè)在teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的s_c表中沒有設(shè)置外鍵約束,以下例如經(jīng)過表中沒有設(shè)置外鍵約束,以下例如經(jīng)過A

31、LTER TABLE命令添加外鍵約束。命令添加外鍵約束。 USE teachingGOALTER TABLE s_cADD CONSTRAINT FK_sc_sno FOREIGN KEY (SNO) REFERENCES student(SNO)GOALTER TABLE s_cADD CONSTRAINT FK_sc_cno FOREIGN KEY (CNO) REFERENCES course(CNO)GO 經(jīng)過經(jīng)過ALTER TABLE命令也可以刪除不運(yùn)用的外鍵約束,命令格式如下。命令也可以刪除不運(yùn)用的外鍵約束,命令格式如下。ALTER TABLE table_name DROP CO

32、NSTRAINT constraint_name,n2022-3-28319.2 約束約束n UNIQUE(獨(dú)一獨(dú)一)約束約束 n 對(duì)于數(shù)據(jù)表中非主鍵列的指定列,獨(dú)一約束確保對(duì)于數(shù)據(jù)表中非主鍵列的指定列,獨(dú)一約束確保不會(huì)輸入反復(fù)的值。每個(gè)不會(huì)輸入反復(fù)的值。每個(gè)UNIQUE約束建立一個(gè)獨(dú)約束建立一個(gè)獨(dú)一索引。每個(gè)表中只能有一個(gè)主鍵,但是可以有多一索引。每個(gè)表中只能有一個(gè)主鍵,但是可以有多個(gè)個(gè)UNIQUE列。獨(dú)一約束指定的列可以有列。獨(dú)一約束指定的列可以有NULL值。值。表中的主鍵也強(qiáng)迫執(zhí)行獨(dú)一性,但主鍵不允許為表中的主鍵也強(qiáng)迫執(zhí)行獨(dú)一性,但主鍵不允許為NULL,主鍵約束強(qiáng)度大于獨(dú)一約束。,主鍵約

33、束強(qiáng)度大于獨(dú)一約束。n 獨(dú)一約束需滿足以下規(guī)那么。獨(dú)一約束需滿足以下規(guī)那么。n 假設(shè)沒有為假設(shè)沒有為UNIQUE約束指定約束指定CLUSTERED或或NONCLUSTERED,那么默許運(yùn)用,那么默許運(yùn)用NONCLUSTERED。n 每個(gè)每個(gè)UNIQUE約束都生成一個(gè)索引。約束都生成一個(gè)索引。UNIQUE約約束的數(shù)目不會(huì)使表中的非聚集索引超越束的數(shù)目不會(huì)使表中的非聚集索引超越249個(gè),聚集個(gè),聚集索引超越索引超越1個(gè)。個(gè)。2022-3-28329.2 約束約束(1) 創(chuàng)建表時(shí)聲明獨(dú)一約束創(chuàng)建表時(shí)聲明獨(dú)一約束 假設(shè)表的獨(dú)一約束由單列組成,那么該獨(dú)一約束可以定假設(shè)表的獨(dú)一約束由單列組成,那么該獨(dú)一約

34、束可以定義為該列的列約束。假設(shè)獨(dú)一約束由兩個(gè)以上的列組成,那義為該列的列約束。假設(shè)獨(dú)一約束由兩個(gè)以上的列組成,那么該獨(dú)一約束必需定義為表約束。么該獨(dú)一約束必需定義為表約束。定義列級(jí)主鍵約束定義列級(jí)主鍵約束語法格式如下。語法格式如下。 CONSTRAINT constraint_name UNIQUE CLUSTERED | NONCLUSTERED UNIQUE:獨(dú)一約束:獨(dú)一約束 。 CLUSTERED | NONCLUSTERED:指示為:指示為UNIQUE約約束創(chuàng)建聚集索引還是非聚集索引。束創(chuàng)建聚集索引還是非聚集索引。2022-3-28339.2 約束約束定義表級(jí)獨(dú)一約束定義表級(jí)獨(dú)一約束

35、語法格式如下。語法格式如下。 CONSTRAINT constraint_name UNIQUE CLUSTERED | NONCLUSTERED ( column_name ,.n ) (2) 修正表時(shí)創(chuàng)建獨(dú)一約束修正表時(shí)創(chuàng)建獨(dú)一約束 語法格式如下。語法格式如下。ALTER TABLE table_nameADDCONSTRAINT constraint_nameUNIQUE( column ,n )2022-3-28349.2 約束約束例如:以下例如將例如:以下例如將teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的student表中的姓名列設(shè)置為表中的姓名列設(shè)置為獨(dú)一約束。獨(dú)一約束。 USE teac

36、hingGOALTER TABLE studentADDCONSTRAINT UQ_studentUNIQUE (SNAME)經(jīng)過經(jīng)過ALTER TABLE命令也可以刪除不運(yùn)用的獨(dú)一約束,命令格式命令也可以刪除不運(yùn)用的獨(dú)一約束,命令格式如下。如下。ALTER TABLE table_name DROP CONSTRAINT constraint_name,n2022-3-28359.2 約束約束n 檢查約束檢查約束n 檢查檢查(CHECK)約束經(jīng)過檢查輸入表列的數(shù)據(jù)的約束經(jīng)過檢查輸入表列的數(shù)據(jù)的值來維護(hù)值域的完好性,它可用來指定某列可取值值來維護(hù)值域的完好性,它可用來指定某列可取值的清單或可取

37、值的集合,也可指定某列可取值的范的清單或可取值的集合,也可指定某列可取值的范圍圍 。n 可以在一列上設(shè)置多個(gè)檢查約束,也可以將一個(gè)可以在一列上設(shè)置多個(gè)檢查約束,也可以將一個(gè)檢查約束運(yùn)用于多列。當(dāng)一列受多個(gè)檢查約束控制檢查約束運(yùn)用于多列。當(dāng)一列受多個(gè)檢查約束控制時(shí),一切的約束按照創(chuàng)建的順序,依次進(jìn)展數(shù)據(jù)有時(shí),一切的約束按照創(chuàng)建的順序,依次進(jìn)展數(shù)據(jù)有效性的檢查。效性的檢查。n 根據(jù)檢查約束是作用于單列還是多列,可分為列根據(jù)檢查約束是作用于單列還是多列,可分為列級(jí)檢查約束和表級(jí)檢查約束。級(jí)檢查約束和表級(jí)檢查約束。2022-3-28369.2 約束約束對(duì)于檢查約束,需滿足以下規(guī)那么。對(duì)于檢查約束,需滿

38、足以下規(guī)那么。列可以有恣意多個(gè)列可以有恣意多個(gè)CHECK約束,并且約束條件中可以包含用約束,并且約束條件中可以包含用AND和和OR組合起來的多個(gè)邏輯表達(dá)式。列上的多個(gè)組合起來的多個(gè)邏輯表達(dá)式。列上的多個(gè)CHECK約束按創(chuàng)建順序約束按創(chuàng)建順序進(jìn)展驗(yàn)證。進(jìn)展驗(yàn)證。搜索條件必需取值為布爾表達(dá)式,并且不能援用其他表。搜索條件必需取值為布爾表達(dá)式,并且不能援用其他表。列級(jí)列級(jí)CHECK約束只能援用被約束的列,表級(jí)約束只能援用被約束的列,表級(jí)CHECK約束只能援用約束只能援用同一表中的列。同一表中的列。當(dāng)執(zhí)行當(dāng)執(zhí)行INSERT和和DELETE語句時(shí),語句時(shí),CHECK 約束和規(guī)那么具有一樣約束和規(guī)那么具有

39、一樣的數(shù)據(jù)驗(yàn)證功能。的數(shù)據(jù)驗(yàn)證功能。當(dāng)列上存在規(guī)那么和一個(gè)或多個(gè)當(dāng)列上存在規(guī)那么和一個(gè)或多個(gè)CHECK約束時(shí),將驗(yàn)證一切限制。約束時(shí),將驗(yàn)證一切限制。不能在不能在text、ntext或或image列上定義列上定義CHECK約束。約束。2022-3-28379.2 約束約束(1)創(chuàng)建表時(shí)聲明獨(dú)一約束創(chuàng)建表時(shí)聲明獨(dú)一約束語法格式如下。語法格式如下。 CONSTRAINT constraint_name CHECK (logical_expression)各選項(xiàng)含義如下各選項(xiàng)含義如下 : CHECK:檢查約束。該約束經(jīng)過限制可輸入一列或多:檢查約束。該約束經(jīng)過限制可輸入一列或多列中的能夠值來強(qiáng)迫實(shí)現(xiàn)

40、域完好性。列中的能夠值來強(qiáng)迫實(shí)現(xiàn)域完好性。 logical_expression:前往:前往TRUE或或FALSE的邏輯表達(dá)式。的邏輯表達(dá)式。別名數(shù)據(jù)類型不能作為表達(dá)式的一部分別名數(shù)據(jù)類型不能作為表達(dá)式的一部分 。2022-3-28389.2 約束約束(2)修正表時(shí)創(chuàng)建檢查約束修正表時(shí)創(chuàng)建檢查約束語法格式如下。語法格式如下。ALTER TABLE table_nameADDCONSTRAINT constraint_nameCHECK(logical_expression)2022-3-28399.2 約束約束例如:假設(shè)在例如:假設(shè)在teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的s_c表中沒有設(shè)置對(duì)成果

41、列的檢查表中沒有設(shè)置對(duì)成果列的檢查約束,以下例如經(jīng)過約束,以下例如經(jīng)過ALTER TABLE命令添加檢查約束命令添加檢查約束 。USE teachingGOALTER TABLE s_cADDCONSTRAINT CK_sc CHECK(GRADE=0 AND GRADE=0 and Grade=100GO2022-3-28469.3 規(guī)那么規(guī)那么n 查看規(guī)那么查看規(guī)那么n 可以運(yùn)用系統(tǒng)存儲(chǔ)過程可以運(yùn)用系統(tǒng)存儲(chǔ)過程sp_helptext查看曾經(jīng)創(chuàng)建查看曾經(jīng)創(chuàng)建的規(guī)那么,語法格式如下。的規(guī)那么,語法格式如下。n sp_helptext objname= object_namen 其中:其中:n

42、objname=object_name:指定對(duì)象的稱號(hào)。:指定對(duì)象的稱號(hào)。n 例如:以下例如查看曾經(jīng)創(chuàng)建的規(guī)那么例如:以下例如查看曾經(jīng)創(chuàng)建的規(guī)那么grade_rule。 n USE teachingn GOn EXEC sp_helptext grade_rulen GO 執(zhí)行結(jié)果如圖執(zhí)行結(jié)果如圖9.1所示所示 。2022-3-28479.3 規(guī)那么規(guī)那么n 綁定與解除規(guī)那么綁定與解除規(guī)那么 n 1. 綁定規(guī)那么綁定規(guī)那么n 創(chuàng)建好一個(gè)規(guī)那么后,必需經(jīng)過綁定才干運(yùn)用規(guī)創(chuàng)建好一個(gè)規(guī)那么后,必需經(jīng)過綁定才干運(yùn)用規(guī)那么,普通情況下,規(guī)那么可以綁定在用戶自定義那么,普通情況下,規(guī)那么可以綁定在用戶自定

43、義數(shù)據(jù)類型或是數(shù)據(jù)列中。數(shù)據(jù)類型或是數(shù)據(jù)列中。 n 綁定規(guī)那么可以運(yùn)用存儲(chǔ)過程綁定規(guī)那么可以運(yùn)用存儲(chǔ)過程sp_bindrule,語法,語法格式如下格式如下 :n sp_bindrule rulename=rule, objname=object_namen rulename=rule:指定規(guī)那么稱號(hào):指定規(guī)那么稱號(hào) 。n objname=object_name:指定規(guī)那么綁定的:指定規(guī)那么綁定的對(duì)象對(duì)象 。2022-3-28489.3 規(guī)那么規(guī)那么假設(shè)規(guī)那么綁定的對(duì)象是表的列,那么假設(shè)規(guī)那么綁定的對(duì)象是表的列,那么object_name的格的格式是式是table.column,否那么以為是用戶

44、定義數(shù)據(jù)類型。,否那么以為是用戶定義數(shù)據(jù)類型。 例如:以下例如將例例如:以下例如將例9.7創(chuàng)建的規(guī)那么創(chuàng)建的規(guī)那么grade_rule綁定到綁定到teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的s_c表中的表中的GRADE列上列上 。USE teachingGOEXEC sp_bindrule grade_rule,s_c.GRADEGO2022-3-28499.3 規(guī)那么規(guī)那么2. 解除規(guī)那么解除規(guī)那么系統(tǒng)存儲(chǔ)過程系統(tǒng)存儲(chǔ)過程sp_unbindrule用于當(dāng)前數(shù)據(jù)庫中為列或用用于當(dāng)前數(shù)據(jù)庫中為列或用戶定義數(shù)據(jù)類型解除規(guī)那么綁定戶定義數(shù)據(jù)類型解除規(guī)那么綁定 。語法格式如下。語法格式如下。sp_unbind

45、rule objname=object_name例如:解除綁定在例如:解除綁定在teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的s_c表中表中GRADE列列上的規(guī)那么上的規(guī)那么 。USE teachingGOEXEC sp_unbindrule s_c.GRADEGO 2022-3-28509.3 規(guī)那么規(guī)那么n 刪除規(guī)那么刪除規(guī)那么n 從數(shù)據(jù)庫中刪除一個(gè)規(guī)那么值時(shí),可以分為以下兩種情從數(shù)據(jù)庫中刪除一個(gè)規(guī)那么值時(shí),可以分為以下兩種情況來處置。況來處置。n 假設(shè)這個(gè)規(guī)那么尚未綁定到表或用戶定義數(shù)據(jù)類型上,假設(shè)這個(gè)規(guī)那么尚未綁定到表或用戶定義數(shù)據(jù)類型上,可以運(yùn)用可以運(yùn)用DROP RULE語句來刪除。語句來刪除

46、。n 假設(shè)曾經(jīng)將這個(gè)規(guī)那么綁定到表或用戶定義數(shù)據(jù)類型上,假設(shè)曾經(jīng)將這個(gè)規(guī)那么綁定到表或用戶定義數(shù)據(jù)類型上,必需首先運(yùn)用系統(tǒng)存儲(chǔ)過程必需首先運(yùn)用系統(tǒng)存儲(chǔ)過程sp_unbindrule來解除該規(guī)那么在來解除該規(guī)那么在表列或用戶定義數(shù)據(jù)類型上的綁定,然后運(yùn)用表列或用戶定義數(shù)據(jù)類型上的綁定,然后運(yùn)用DROP RULE語句刪除該規(guī)那么。語句刪除該規(guī)那么。 2022-3-28519.3 規(guī)那么規(guī)那么可以運(yùn)用可以運(yùn)用Transact-SQL命令的命令的DROP RULE語句從數(shù)據(jù)語句從數(shù)據(jù)庫刪除一個(gè)或多個(gè)規(guī)那么庫刪除一個(gè)或多個(gè)規(guī)那么 。其語法格式如下。其語法格式如下。DROP RULE rule_name,

47、n 例如:刪除例如:刪除teaching數(shù)據(jù)庫中的規(guī)那么數(shù)據(jù)庫中的規(guī)那么grade_rule 。USE teachingGODROP RULE grade_ruleGO2022-3-28529.4 默許值默許值默許值就是當(dāng)用戶未指定時(shí)由默許值就是當(dāng)用戶未指定時(shí)由SQL Server自動(dòng)指派的數(shù)自動(dòng)指派的數(shù)據(jù)值,它可以是常量、內(nèi)置函數(shù)或表達(dá)式據(jù)值,它可以是常量、內(nèi)置函數(shù)或表達(dá)式 。運(yùn)用默許值有兩種方式運(yùn)用默許值有兩種方式 :在在CREATE TABLE語句中對(duì)列定義一個(gè)語句中對(duì)列定義一個(gè)DEFAULT約束約束 運(yùn)用運(yùn)用CREATE DEFAULT語句在數(shù)據(jù)庫中創(chuàng)建一個(gè)默許語句在數(shù)據(jù)庫中創(chuàng)建一個(gè)默

48、許值對(duì)象,然后運(yùn)用值對(duì)象,然后運(yùn)用sp_binddefault系統(tǒng)存儲(chǔ)過程將該對(duì)象綁系統(tǒng)存儲(chǔ)過程將該對(duì)象綁定到表列上定到表列上 。2022-3-28539.4 默許值默許值n 創(chuàng)建默許值創(chuàng)建默許值n 1. 創(chuàng)建默許值對(duì)象可以運(yùn)用創(chuàng)建默許值對(duì)象可以運(yùn)用Transact-SQL命令命令CREATE DEFAULT語句來完成語句來完成 。n 語法格式如下。語法格式如下。n CREATE DEFAULT default_name AS constant_expressionn 其中:其中:n constant_expression可以是常量表達(dá)式、任何??梢允浅A勘磉_(dá)式、任何常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式

49、,但不能包含任何列或量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式,但不能包含任何列或其他數(shù)據(jù)庫對(duì)象的稱號(hào)。其他數(shù)據(jù)庫對(duì)象的稱號(hào)。2022-3-28549.4 默許值默許值例如:在例如:在teaching數(shù)據(jù)庫中創(chuàng)建一個(gè)名為數(shù)據(jù)庫中創(chuàng)建一個(gè)名為grade_default的的默許值,并以默許值,并以0作為其值。作為其值。USE teachingGOCREATE DEFAULT grade_default AS 0GO2022-3-28559.4 默許值默許值2. 可以運(yùn)用系統(tǒng)存儲(chǔ)過程可以運(yùn)用系統(tǒng)存儲(chǔ)過程sp_helptext查看默許值定義,查看默許值定義,語法格式如下。語法格式如下。sp_helptext objna

50、me = namename為用戶定義的對(duì)象稱號(hào)。僅當(dāng)指定限定對(duì)象時(shí)才需為用戶定義的對(duì)象稱號(hào)。僅當(dāng)指定限定對(duì)象時(shí)才需求引號(hào)。對(duì)象必需在當(dāng)前數(shù)據(jù)庫中求引號(hào)。對(duì)象必需在當(dāng)前數(shù)據(jù)庫中 。例如:查看曾經(jīng)創(chuàng)建的默許值例如:查看曾經(jīng)創(chuàng)建的默許值grade_default。 USE teachingGOEXEC sp_helptext grade_defaultGO 執(zhí)行結(jié)果如圖執(zhí)行結(jié)果如圖9.2所示所示 2022-3-28569.4 默許值默許值n 綁定與解除默許值綁定與解除默許值 n 1. 綁定默許值綁定默許值n 在數(shù)據(jù)庫中創(chuàng)建一個(gè)默許值后,還必需把該默許在數(shù)據(jù)庫中創(chuàng)建一個(gè)默許值后,還必需把該默許值綁定到

51、列或用戶定義數(shù)據(jù)類型上才干讓它發(fā)揚(yáng)作值綁定到列或用戶定義數(shù)據(jù)類型上才干讓它發(fā)揚(yáng)作用。用。 n 可以用系統(tǒng)存儲(chǔ)過程可以用系統(tǒng)存儲(chǔ)過程sp_binddefault來完成來完成 ,其,其語法格式如下語法格式如下 :n sp_bindefault defname=default,objname=object_name 2022-3-28579.4 默許值默許值例如:以下例如將例例如:以下例如將例9.14創(chuàng)建的默許值創(chuàng)建的默許值grade_default綁定綁定到到teaching數(shù)據(jù)庫中的數(shù)據(jù)庫中的s_c表中表中GRADE列上列上 。USE teachingGOEXEC sp_bindefault grade_default,s_c.GRADEGO

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論