第10章張弛有度:約束_第1頁
第10章張弛有度:約束_第2頁
第10章張弛有度:約束_第3頁
第10章張弛有度:約束_第4頁
第10章張弛有度:約束_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第1010章章 約束約束l在數(shù)據(jù)庫的設(shè)計(jì)和管理的過程中,維護(hù)數(shù)據(jù)完整性是一項(xiàng)重要的工作。數(shù)據(jù)完整性關(guān)系到數(shù)據(jù)庫中數(shù)據(jù)的精確性、可用性。本章將詳細(xì)介紹數(shù)據(jù)庫的完整性含義和實(shí)現(xiàn)數(shù)據(jù)完整性的方式,即定義約束的具體操作。10.1 10.1 約束概述約束概述l在數(shù)據(jù)庫管理系統(tǒng)中,保證數(shù)據(jù)庫中的數(shù)據(jù)完整性是非常重要的。數(shù)據(jù)完整性,是指存儲(chǔ)在數(shù)據(jù)庫中數(shù)據(jù)的一致性、正確性、精確性和可用性。約束是SQL Server 2008數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的強(qiáng)制完整性的標(biāo)準(zhǔn)機(jī)制。本節(jié)將對(duì)約束的概念做一說明。10.1.1 10.1.1 數(shù)據(jù)完整性數(shù)據(jù)完整性l數(shù)據(jù)完整性對(duì)于數(shù)據(jù)管理信息系統(tǒng)是十分重要,因?yàn)閿?shù)據(jù)的完整,是用戶使用和

2、管理數(shù)據(jù)庫的基礎(chǔ)。完整的數(shù)據(jù),為客戶提供可用的數(shù)據(jù)服務(wù)。數(shù)據(jù)完整性,主要是指數(shù)據(jù)的一致性和正確性。在SQL Server2008數(shù)據(jù)庫中,根據(jù)數(shù)據(jù)完整性涉及方式的不同,它所作用的數(shù)據(jù)庫對(duì)象和范圍也不同,可以將數(shù)據(jù)完整性分為實(shí)體完整性、域完整性、引用完整性和用戶定義完整性。10.1.2 10.1.2 約束的概念和類型約束的概念和類型l約束是實(shí)現(xiàn)強(qiáng)制數(shù)據(jù)完整的ANSI標(biāo)準(zhǔn)的方法,是SQL Server 2008數(shù)據(jù)庫實(shí)現(xiàn)強(qiáng)制數(shù)據(jù)完整性的重要方式。約束確保合法的數(shù)據(jù)值存入數(shù)據(jù)列中,并滿足表間的約束關(guān)系。SQL Server 2008提供了下列機(jī)制,以強(qiáng)制數(shù)據(jù)的完整性。10.2 10.2 設(shè)計(jì)約束設(shè)計(jì)

3、約束l本節(jié)將講述約束的設(shè)置和具體的操作。這包括使用SQL Server Management Studio工具建立主鍵約束、外鍵約束、UNIQUE約束、默認(rèn)值等,通過本節(jié)的講述,用戶可以深入理解約束的使用,并可以對(duì)數(shù)據(jù)進(jìn)行強(qiáng)制完整性的基礎(chǔ)維護(hù)。10.2.1 10.2.1 定義約束的方式定義約束的方式l定義約束的方式有許多種,指定PRIMARY KEY、FOREIGN KEY、UNIQUE或CHECK等約束,可以使用ALTER TABLE添加到表中的新列定義中;也可以使用SQL Server Management Studio圖形工具為數(shù)據(jù)列、表增加約束。l用戶可以使用SQL Server Ma

4、nagement Studio工具定義約束,也可以通過T-SQL腳本實(shí)現(xiàn)約束的創(chuàng)建和修改刪除等工作。10.2.2 10.2.2 定義約束的語法結(jié)構(gòu)定義約束的語法結(jié)構(gòu)l指定PRIMARY KEY、FOREIGN KEY、UNIQUE或CHECK約束的屬性,可以通過ALTER TABLE的語句添加到表中的定義,這種方式也可以在CREATE TABLE操作的同時(shí)實(shí)現(xiàn)。10.3 10.3 主鍵約束主鍵約束l一般在SQL Server 2008數(shù)據(jù)庫中,保存數(shù)據(jù)的表都要設(shè)置主鍵。設(shè)置完主鍵約束的數(shù)據(jù)表將符合兩項(xiàng)數(shù)據(jù)完整性規(guī)則:一是列不允許有空值,即指定的PRIMARY KEY約束,將數(shù)據(jù)列隱式轉(zhuǎn)換為NO

5、T NULL約束。二是不能有重復(fù)的值。如果對(duì)具有重復(fù)值或允許有空值的列添加PRIMARY KEY約束,則數(shù)據(jù)庫引擎將返回一個(gè)錯(cuò)誤并且不添加約束。10.3.1 10.3.1 一個(gè)主鍵約束的示例一個(gè)主鍵約束的示例l示例1:在AdventureWorks數(shù)據(jù)庫中,幾乎所有的數(shù)據(jù)表都有主鍵約束,可以通過以下步驟查看示例數(shù)據(jù)庫中dbo.DatabaseLog數(shù)據(jù)表的主鍵約束l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。l(2)在“對(duì)象資源管

6、理器”中,連接到SQL Server 2008數(shù)據(jù)庫引擎實(shí)例,再展開該實(shí)例。l(3)在“對(duì)象資源管理器”中,展開AdventureWorks數(shù)據(jù)庫節(jié)點(diǎn),在表目錄下的dbo.DatabaseLog數(shù)據(jù)表目錄下,找到“鍵”節(jié)點(diǎn),展開該節(jié)點(diǎn),就可以看到“PK_DatabaseLog_DatabaseLogID”鍵。注意該節(jié)點(diǎn)以“金色的鑰匙”圖標(biāo)表示該鍵為數(shù)據(jù)表的主鍵。l(4)雙擊該節(jié)點(diǎn),打開數(shù)據(jù)表設(shè)計(jì)器。在表設(shè)計(jì)器中,可以看到該表的主鍵是“DatabaseLogID”為數(shù)字型,表示為在列選擇器處顯示為“金色的鑰匙”的圖標(biāo)。10.3.2 10.3.2 使用表設(shè)計(jì)器定義主鍵約束使用表設(shè)計(jì)器定義主鍵約束l

7、用戶可以使用SQL Server Management Studio工具為數(shù)據(jù)表建立主鍵約束,使用表設(shè)計(jì)器建立主鍵約束的過程如下。l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。l(2)在“對(duì)象資源管理器”中,連接到SQL Server 2008數(shù)據(jù)庫引擎實(shí)例,再展開該實(shí)例。l(3)在“對(duì)象資源管理器”中,找到要建立主鍵的數(shù)據(jù)表(如果是新建數(shù)據(jù)表,可在新建時(shí)打開),選擇“設(shè)計(jì)”菜單命令。l(4)打開表設(shè)計(jì)器后,單擊要定義為主鍵的數(shù)據(jù)

8、庫列的行選擇器。若要選擇多個(gè)列,請(qǐng)?jiān)诎醋trl鍵的同時(shí)單擊其他列的行選擇器。l(5)右擊該列的行選擇器,然后選擇“設(shè)置主鍵”菜單命令。此時(shí),將自動(dòng)創(chuàng)建名為“PK_”(后跟表名)的主鍵索引,用戶可以在“索引/鍵”對(duì)話框中看到對(duì)應(yīng)的索引。l(6)查看該鍵,在表設(shè)計(jì)器中,右鍵選擇“索引/鍵”菜單命令,彈出“索引/鍵”對(duì)話框??梢栽谧髠?cè)的列表框中看到以“PK_”開頭的主鍵名。其右側(cè)網(wǎng)格中列出該“主鍵”的主要信息,如AdventureWorks數(shù)據(jù)庫的“dbo.DatabaseLog”數(shù)據(jù)表,主鍵列為“DatabaseLogID”列。10.3.3 10.3.3 使用使用T-SQLT-SQL定義主鍵約束

9、定義主鍵約束l示例:以下示例在CREATE TABLE語句中,使用PRIMARY KEY NONCLUSTERED關(guān)鍵字為數(shù)據(jù)表定義非聚集的主鍵約束l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”菜單命令,啟動(dòng)SQL Server Management Studio工具。l(2)在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,彈出一個(gè)“新建查詢”對(duì)話框。l(3)在查詢編輯器中,錄入代碼,單擊“執(zhí)行”按鈕。10.4 10.4 外鍵約束外鍵約束l外鍵是用于建立和加強(qiáng)兩

10、個(gè)表數(shù)據(jù)之間關(guān)系的約束,它鏈接兩表的一列或多列。通過將數(shù)據(jù)表中主鍵值的列添加到另一個(gè)數(shù)據(jù)表中,可創(chuàng)建兩個(gè)表之間的關(guān)系。這個(gè)主鍵列就成為第二個(gè)表的外鍵。一般表現(xiàn)為兩個(gè)數(shù)據(jù)表中,一張數(shù)據(jù)表的某一列的所有值,全部取自另外一張表的主鍵值。外鍵關(guān)系特性是關(guān)系型數(shù)據(jù)庫二維表間關(guān)系的最重要的組成之一。l例如,因?yàn)殇N售訂單和銷售人員之間存在一種邏輯關(guān)系,所以AdventureWorks數(shù)據(jù)庫中的 Sales.SalesOrderHeader 表含有一個(gè)指向 Sales.SalesPerson 表的鏈接。SalesOrderHeader 表中的 SalesPersonID 列與 SalesPerson 表中的主

11、鍵列相對(duì)應(yīng)。SalesOrderHeader 表中的 SalesPersonID 列是指向 SalesPerson 表的外鍵。10.4.1 10.4.1 一個(gè)外鍵約束的示例一個(gè)外鍵約束的示例l示例:在AdventureWorks數(shù)據(jù)庫中,許多數(shù)據(jù)表都有外鍵約束,可以通過以下步驟查看示例數(shù)據(jù)庫中Production.Product數(shù)據(jù)表的外鍵約束l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。l(2)在“對(duì)象資源管理器”中,連接到SQ

12、L Server 2008數(shù)據(jù)庫引擎實(shí)例,再展開該實(shí)例。l(3)在“對(duì)象資源管理器”中,展開數(shù)據(jù)庫目錄,“AdventureWorks”數(shù)據(jù)庫節(jié)點(diǎn),在表目錄下的Production.Product數(shù)據(jù)表目錄下,找到“鍵”節(jié)點(diǎn),展開該節(jié)點(diǎn),就可以看到“FK_Product_ProductModel_ProductModelID”鍵。l(4)雙擊該節(jié)點(diǎn),打開外鍵關(guān)系對(duì)話框。l(5)在“外鍵關(guān)系”對(duì)話框中,單擊右則“表和列規(guī)范”項(xiàng),單擊出現(xiàn)的()按鈕。l(6)彈出“表和列”對(duì)話框。例如,Product.Production的FK_Product_ProductModel_ProductModelID

13、外鍵關(guān)系,ProductModel表的主鍵ProductModelID,在Production中的ProductModelID為外鍵。10.4.2 10.4.2 使用表設(shè)計(jì)器定義外鍵約束使用表設(shè)計(jì)器定義外鍵約束l示例:用戶可以使用表設(shè)計(jì)器定義外鍵約束,具體的操作可以參考如下步驟實(shí)現(xiàn)(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”

14、窗口。(2)在查詢窗口中,輸入代碼。(3)在SQL Server Management Studio工具“對(duì)象資源管理器”數(shù)據(jù)表列表中,右擊數(shù)據(jù)表“new_phones”,選擇“設(shè)計(jì)”菜單命令,打開數(shù)據(jù)表設(shè)計(jì)器,可以查看到已經(jīng)建立的鍵。(4)在“表設(shè)計(jì)器”的快捷菜單中,選擇“關(guān)系”菜單命令。(5)彈出“外鍵關(guān)系”對(duì)話框,單擊“添加”按鈕,從“選定的關(guān)系”列表中選擇關(guān)系。(6)在網(wǎng)格中,單擊“表和列規(guī)范”,然后左鍵單擊右側(cè)的省略號(hào)()按鈕,彈出“表和列”對(duì)話框。(7)在“表和列”對(duì)話框中,從列表中選擇其他表列。外鍵列必須與主鍵列的數(shù)據(jù)類型和大小相匹配,本示例中在主鍵表中選擇“new_employ

15、ees”,數(shù)據(jù)列選擇id_num;在外鍵表中選擇employeeid項(xiàng),單擊“確定”按鈕。(8)當(dāng)關(guān)閉表設(shè)計(jì)器中的網(wǎng)格時(shí),對(duì)關(guān)系的屬性所做的任何更改將立即生效。單擊工具欄上的“保存”按鈕保存表,將在數(shù)據(jù)庫中更改該約束,單擊保存時(shí)出現(xiàn)提示,單擊“是”按鈕完成建立外鍵。(9)在SQL Server Management Studio工具的“對(duì)象資源管理器”中,用戶可以查看外鍵關(guān)系,外鍵顯示為一個(gè)灰色的鑰匙圖標(biāo)。10.4.3 10.4.3 使用使用T-SQLT-SQL定義外鍵約束定義外鍵約束l示例:以下示例在ALTER TABLE語句中,使用FOREIGN KEY(employeeid) REFER

16、ENCES dbo.new_employees (id_num)為數(shù)據(jù)表增加外鍵約束,具體操作請(qǐng)參考如下步驟(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。(2)在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”窗口。(3)在查詢編輯器中,錄入代碼,單擊“執(zhí)行”按鈕。10.5 UNIQUE10.5 UNIQUE約束約束lUNIQUE約束是指表中的任何兩行都不能有相同的列值。主鍵

17、也強(qiáng)制實(shí)施唯一性,但主鍵不允許 NULL的出現(xiàn)。一般情況下UNIQUE約束用于確保在非主鍵列中不輸入重復(fù)的值。l用戶可以在創(chuàng)建表時(shí),將UNIQUE約束作為表定義的一部分。也可以在已經(jīng)存在的數(shù)據(jù)表中,使用圖形工具或者T-SQL腳本添加UNIQUE約束。一個(gè)表可含有多個(gè)UNIQUE約束。10.5.1 10.5.1 一個(gè)一個(gè)UNIQUEUNIQUE約束的示例約束的示例l用戶可以使用T-SQL在建立數(shù)據(jù)表時(shí)建立UNIQUE約束。l示例:以下示例在CREATE TABLE語句中,使用UNIQUE NONCLUSTERED關(guān)鍵字,為數(shù)據(jù)表增加UNIQUE約束,具體操作請(qǐng)參考如下步驟l(1)單擊“開始|所有

18、程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”窗口。l(2)在查詢窗口中,輸入代碼如下,并單擊“執(zhí)行”按鈕,如下所示。l(3)使用SQL Server Management Studio工具,在“對(duì)象資源管理器”中,展開數(shù)據(jù)庫,“AdventureWorks”數(shù)據(jù)庫節(jié)點(diǎn),在表目錄下的dbo.new_phone_with_unique數(shù)據(jù)表目錄下,找

19、到“鍵”節(jié)點(diǎn),展開該節(jié)點(diǎn),就可以看到“UQ_new_phone_with_u_041093DD”鍵。注意該節(jié)點(diǎn)以“藍(lán)色向上的鑰匙”圖標(biāo)表示該鍵為數(shù)據(jù)表的UNIQUE約束。l(4)雙擊該節(jié)點(diǎn),然后鼠標(biāo)左鍵單擊工具欄上的“管理索引和鍵”按鈕。l(5)打開“索引/鍵”對(duì)話框。l(6)在右側(cè)網(wǎng)格中,左鍵單擊“列”項(xiàng),再單擊屬性右側(cè)的省略號(hào)()按鈕,顯示該約束,涉及的數(shù)據(jù)列,如本示例的employeeid列。10.5.2 10.5.2 使用表設(shè)計(jì)器定義使用表設(shè)計(jì)器定義UNIQUEUNIQUE約約束束l示例:用戶可以使用表設(shè)計(jì)器定義UNIQUE約束,具體操作可以參考如下的步驟(1)單擊“開始|所有程序|M

20、icrosoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。(2)在“對(duì)象資源管理器”中,連接到SQL Server 2008數(shù)據(jù)庫引擎實(shí)例,再展開該實(shí)例。(3)在“對(duì)象資源管理器”的“數(shù)據(jù)表”目錄,右擊數(shù)據(jù)表,如前例中的“dbo. new_employees”表,選擇“設(shè)計(jì)”菜單命令,打開數(shù)據(jù)表設(shè)計(jì)器,可以查看到已經(jīng)建立主鍵關(guān)系。(4)右擊“表設(shè)計(jì)器”的行選擇器,選擇“索引與鍵”菜單命令。(5)打開“索引/鍵”對(duì)話框,單擊“添加”按鈕,在右側(cè)網(wǎng)格的“類型”選擇中選擇“唯一鍵

21、”項(xiàng)。(6)在“列”選擇列時(shí),單擊屬性右側(cè)的省略號(hào)()按鈕,彈出“索引列”對(duì)話框。本示將name作為唯一鍵的索引列。在下拉列表框中選擇“name”字段,單擊“確定”按鈕。(7)當(dāng)關(guān)閉表設(shè)計(jì)器中的網(wǎng)格時(shí),對(duì)關(guān)系的屬性所做的任何更改將立即生效。在保存表時(shí),將在數(shù)據(jù)庫中更改該約束,單擊工具欄上“保存”按鈕時(shí)出現(xiàn)提示,在提示對(duì)話框中單擊“是”按鈕完成建立UNIQUE約束。(8)在SQL Server Management Studio工具的“對(duì)象資源管理器”中查看UNIQUE約束。10.5.3 10.5.3 使用使用T-SQLT-SQL定義定義UNIQUEUNIQUE約束約束l示例:以下示例在ALTE

22、R TABLE語句中,使用ADD CONSTRAINT U_phone UNIQUE (phone)語句為數(shù)據(jù)表增加UNIQUE約束,具體操作請(qǐng)參考如下步驟l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”窗口。l(2)在查詢窗口中,輸入代碼如下,并單擊“執(zhí)行”按鈕。10.6 CHECK10.6 CHECK約束約束lCHECK約

23、束是限制列可接受的值,它可以強(qiáng)制域的完整性。在數(shù)據(jù)庫中,一般會(huì)經(jīng)常使用CHECK約束。用戶可以通過代碼和SQL Server Management Studio圖形工具建立CHECK約束。10.6.1 10.6.1 一個(gè)一個(gè)CHECKCHECK約束的示例約束的示例l示例:使用SQL Server Management Studio工具的表設(shè)計(jì)器查看CHECK約束。具體操作請(qǐng)參考如下操作l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。

24、l(2)使用SQL Server Management Studio工具,在“對(duì)象資源管理器”中,展開數(shù)據(jù)庫,“AdventureWorks”數(shù)據(jù)庫節(jié)點(diǎn),在表目錄下的Production.Product數(shù)據(jù)表目錄下,找到“約束”節(jié)點(diǎn),展開該節(jié)點(diǎn),就可以看到“CK_Product_ListPrice”約束。l(3)雙擊“CK_Product_ListPrice”節(jié)點(diǎn),打開CHECK約束對(duì)話框??梢钥吹皆摷s束,網(wǎng)格的表達(dá)式為“(ListPrice=(0.00)”,即價(jià)格值必須滿足大于等于0.00元。10.6.2 10.6.2 使用表設(shè)計(jì)器定義使用表設(shè)計(jì)器定義CHECKCHECK約約束束l示例:使用

25、表設(shè)計(jì)器建立CHECK約束比較簡單,具體操作請(qǐng)參考如下步驟(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”窗口。(2)在查詢窗口中,輸入代碼如下,并單擊“執(zhí)行”按鈕。(3)建立一個(gè)示例數(shù)據(jù)表。USE AdventureWorks(4)在SQL Server Management Studio工具“對(duì)象資源管理器”中,展開數(shù)據(jù)庫

26、“AdventureWorks”節(jié)點(diǎn),在其表目錄下右擊“dbo.new_employee_check”表,選擇“設(shè)計(jì)”菜單命令,打開數(shù)據(jù)表設(shè)計(jì)器,可以查看到已經(jīng)建立主鍵關(guān)系。 (5)在“表設(shè)計(jì)器”的快捷菜單中,選擇“CHECK約束”菜單命令。(6)彈出“CHECK約束”對(duì)話框,單擊“添加”按鈕,此時(shí)系統(tǒng)在“選定的CHECK約束列表”中自動(dòng)添加了一個(gè)約束,單擊右側(cè)網(wǎng)格的“表達(dá)式”,單擊表達(dá)式右側(cè)的省略號(hào)()按鈕,在彈出的“CHECK約束表達(dá)式”對(duì)話框中,輸入age年齡的最小值表達(dá)式,即“age10”。(7)當(dāng)關(guān)閉對(duì)話框后,保存數(shù)據(jù)表時(shí),將在數(shù)據(jù)庫中更改該約束,單擊“保存”時(shí)出現(xiàn)提示,單擊“是”完

27、成建立CHECK約束。(8)在SQL Server Management Studio工具中“對(duì)象資源管理器”中查看CHECK約束。10.6.3 10.6.3 使用使用T-SQLT-SQL定義定義CHECKCHECK約束約束l示例:以下示例在ALTER TABLE語句中,使用ADD CONSTRAINTCHECK語句為數(shù)據(jù)表增加CHECK約束,具體操作請(qǐng)參考如下步驟l(1)單擊“開始|所有程序|Microsoft SQL Server 2005|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。在SQL Serve

28、r Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”窗口。l(2)在查詢窗口中,輸入代碼如下,并單擊“執(zhí)行”按鈕。10.7 DEFAULT10.7 DEFAULT約束約束l默認(rèn)值是一種常用的約束。在數(shù)據(jù)表中插入行時(shí)沒有為列指定值,默認(rèn)值則指定列中使用什么值。默認(rèn)值可以是計(jì)算結(jié)果為常量的任何值,如常量、內(nèi)置函數(shù)或數(shù)學(xué)表達(dá)式。10.7.1 10.7.1 使用表設(shè)計(jì)器定義使用表設(shè)計(jì)器定義DEFAULTDEFAULT約束約束l示例:用戶可以使用SQL Server Management Studio工具的表設(shè)計(jì)器定義DEFAULT約束,具體操作可以參考如下的步驟(1

29、)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。(2)在“對(duì)象資源管理器”中,連接到SQL Server 2008數(shù)據(jù)庫引擎實(shí)例,再展開該實(shí)例。(3)在“對(duì)象資源管理器”數(shù)據(jù)表,右擊數(shù)據(jù)表,如前例中的“dbo.new_employee”表,選擇“設(shè)計(jì)”菜單命令,打開數(shù)據(jù)表設(shè)計(jì)器,可以查看到已經(jīng)建立的鍵。(4)在表設(shè)計(jì)器的列屬性選項(xiàng)頁中,可以找到“默認(rèn)值或綁定”項(xiàng),在其右側(cè)的網(wǎng)格中輸入默認(rèn)值,本例中在“dbo.new_employee”表的

30、name字段的默認(rèn)值中輸入default。(5)單擊工具欄上的“保存”按鈕,保存數(shù)據(jù)表,即完成建立DEFAULT約束。(6)在SQL Server Management Studio工具的“對(duì)象資源管理器”中,該表的“約束”目錄下,可以看到“DF_new_employees_name”約束。10.7.2 10.7.2 使用使用T-SQLT-SQL定義定義DEFAULTDEFAULT約約束束l示例:以下示例在ALTER TABLE語句中,使用ADD CONSTRAINTDEFAULTFOR語句為數(shù)據(jù)表增加DEFAULT約束,具體操作請(qǐng)參考如下步驟l(1)單擊“開始|所有程序|Microsoft

31、SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。在SQL Server Management Studio工具中,單擊“新建查詢”按鈕,打開一個(gè)“新建查詢”窗口。l(2)在查詢窗口中,輸入代碼,并單擊“執(zhí)行”按鈕。10.8 10.8 禁用約束禁用約束l用戶有的時(shí)候需要禁用約束,例如在大容量的導(dǎo)入導(dǎo)出數(shù)據(jù)、臨時(shí)性的數(shù)據(jù)維護(hù)或者其他操作時(shí),SQL Server 2008數(shù)據(jù)表為用戶提供了禁用約束的方法,這將幫助用戶更好的維護(hù)數(shù)據(jù)。本節(jié)將列舉一些禁用約束的示例。10.8.1 10.8.1

32、 對(duì)復(fù)制禁用外鍵約束對(duì)復(fù)制禁用外鍵約束l示例:對(duì)復(fù)制用戶可以禁用外鍵約束,這是約束關(guān)系的一個(gè)屬性,具體操作可以參考如下步驟l(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。l(2)在“對(duì)象資源管理器”中,展開要修改的外鍵約束的表,再展開“鍵”節(jié)點(diǎn)。l(3)右擊要設(shè)置復(fù)制禁用的外鍵約束,選擇“修改”菜單命令。l(4)打開“外鍵關(guān)系”對(duì)話框,對(duì)“強(qiáng)制用于復(fù)制”選擇“否”值。l(5)單擊“關(guān)閉”按鈕,再單擊“保存”按鈕完成保存數(shù)據(jù)表即可。1

33、0.8.2 10.8.2 對(duì)復(fù)制禁用對(duì)復(fù)制禁用CHECKCHECK約束約束l示例:對(duì)復(fù)制用戶可以禁用CHECK約束,這也是約束關(guān)系的一個(gè)屬性,具體操作可以參考如下步驟(1)單擊“開始|所有程序|Microsoft SQL Server 2008|SQL Server Management Studio”命令,啟動(dòng)SQL Server Management Studio工具。(2)在“對(duì)象資源管理器”中,展開具有要修改的約束的表,再展開“約束”節(jié)點(diǎn)。(3)右擊該約束,選擇“修改”菜單命令。(4)打開“CHECK約束”對(duì)話框,對(duì)“強(qiáng)制用于復(fù)制”選擇“否”值。(5)單擊“關(guān)閉”按鈕,再單擊“保存”按鈕完成保存數(shù)據(jù)表即可。10.8.3 10.8.3 對(duì)對(duì)INSERTINSERT和和UPDATEUPDATE語句禁語句禁用外鍵約

溫馨提示

  • 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)論