《SQLServer2005數(shù)據(jù)庫技術(shù)及應(yīng)用》課件第12章 數(shù)據(jù)完整性的實現(xiàn)方法_第1頁
《SQLServer2005數(shù)據(jù)庫技術(shù)及應(yīng)用》課件第12章 數(shù)據(jù)完整性的實現(xiàn)方法_第2頁
《SQLServer2005數(shù)據(jù)庫技術(shù)及應(yīng)用》課件第12章 數(shù)據(jù)完整性的實現(xiàn)方法_第3頁
《SQLServer2005數(shù)據(jù)庫技術(shù)及應(yīng)用》課件第12章 數(shù)據(jù)完整性的實現(xiàn)方法_第4頁
《SQLServer2005數(shù)據(jù)庫技術(shù)及應(yīng)用》課件第12章 數(shù)據(jù)完整性的實現(xiàn)方法_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第12章 數(shù)據(jù)完整性的實現(xiàn)方法第12章 數(shù)據(jù)完整性的實現(xiàn)方法12.1 約束12.1.1 主鍵(PRIMARY KEY)約束12.1.2 唯一(UNIQUE)約束12.1.3 檢查(CHECK)約束12.1.4 外鍵(FOREIGN KEY)約束12.1.5 默認(rèn)值(DEFAULT)約束12.2 默認(rèn)值12.3 規(guī)則 SQL Server 200512.1 約束約束(CONSTRAINTS)是實現(xiàn)數(shù)據(jù)完整性的首選方法。顧名思義,約束就是一種限制,使數(shù)據(jù)表中對象的取值不能隨心所欲,要在允許的范圍內(nèi) 約束支持域完整性、實體完整性、引用完整性以及用戶定義的完整性。約束分為列級約束和表級約束:前者是只對

2、一列起作用的約束;后者則是對多個列起作用的約束 約束既可以用SQL Server Management Studio創(chuàng)建,也可以用T-SQL語句創(chuàng)建 SQL Server 200512.1.1 主鍵約束主鍵約束(PRIMARY KEY)保證某一列或多列組合中的數(shù)據(jù)相對于表中的每一行都是唯一的,并且這些列就是該表的主鍵。主鍵約束不允許在創(chuàng)建主鍵約束的列上有空值 SQL Server 2005 12.1.1主鍵約束使用SQL Server Management Studio設(shè)置主鍵約束的步驟:啟動SQL Server Management Studio 在對象資源管理器上點擊“+”,展開欲設(shè)置的數(shù)

3、據(jù)庫和表,在彈出的快捷菜單上單擊“修改” 鼠標(biāo)右擊要設(shè)置為主鍵的字段,在彈出的快捷菜單上選擇“設(shè)置主鍵”選項,單擊鼠標(biāo)左鍵 12.1.1 主鍵約束用T-SQL語句創(chuàng)建主鍵約束的語法格式: CREATE TABLE table_name( column_name datatype CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ,n CONSTRAINT constraint_name PRIMARY KEY ,)12.1.2 唯一約束唯一約束的作用是確保在非主鍵列中不輸入重復(fù)值。唯一約束和主鍵約束比較相似,都不允許

4、表中對應(yīng)字段存在重復(fù)值,但二者有以下重要區(qū)別:一個表可以定義多個唯一約束,但只能定義一個主鍵約束。允許為空值的列上可以定義唯一約束,但不能定義主鍵約束。SQL Server 200512.1.2 唯一約束使用SQL Server Management Studio設(shè)置唯一約束的步驟如下:展開數(shù)據(jù)庫和表,右擊鼠標(biāo)選擇“修改”,在窗口空白處單擊鼠標(biāo)右鍵,選擇“索引/鍵” 單擊“添加”按鈕,系統(tǒng)會自動加上一個默認(rèn)的唯一約束名稱 在常規(guī)項“列”對應(yīng)的輸入框選擇要創(chuàng)建唯一性約束的列名及排列順序,在“是唯一的”對應(yīng)下拉框中選擇“是”,單擊“關(guān)閉”按鈕 12.1.2 唯一約束 用T-SQL語句創(chuàng)建唯一約束的

5、語法格式:CREATE TABLE table_name /*指定表名( column_name datatype /*定義字段 CONSTRAINT constraint_name UNIQUE /*列級約束,直接在字段后面定義 CLUSTERED | NONCLUSTERED /*約束的索引類型 ,n /* 表示可定義多個字段CONSTRAINT constraint_name UNIQUE ,) /*表級約束,可在多個字段上定義 12.1.3 檢查約束檢查約束通過限制輸入到列中的值來強制實現(xiàn)域的完整性,方法是通過邏輯表達(dá)式來判斷數(shù)值是否符合要求 SQL Server 200512.1.3

6、 檢查約束 使用SQL Server Management Studio 設(shè)置檢查約束的步驟如下:展開數(shù)據(jù)庫和表 ,右擊鼠標(biāo)選擇“修改”,在窗口空白處單擊鼠標(biāo)右鍵,選擇“check約束” 單擊“添加”按鈕,系統(tǒng)會給出默認(rèn)的約束名稱 在約束表達(dá)式窗格中輸入約束條件,例如 “grade=0 and grade=100” 12.1.3 檢查約束用T-SQL語句創(chuàng)建檢查約束語法格式:CREATE TABLE table_name /*指定表名( column_name datatype /*定義字段check_name CHECK ( logical_expression ) /*CHECK約束表達(dá)式

7、 ,n )12.1.4 外鍵約束外鍵 (FOREIGN KEY) 是用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列。通過將保存表中主鍵值的一列或多列添加到另一個表中,可創(chuàng)建兩個表之間的鏈接。這個列就成為第二個表的外鍵。創(chuàng)建或更改表時都可以定義外鍵約束。有了外鍵約束后,當(dāng)一行新的數(shù)據(jù)被加入到表中,或?qū)Ρ碇幸呀?jīng)存在的屬于外部關(guān)鍵字段上的數(shù)據(jù)進(jìn)行修改時,新數(shù)據(jù)必須存在于另一基本表的主關(guān)鍵字上,或者為NULL SQL Server 200512.1.4 外鍵約束 使用SQL Server Management Studio設(shè)置外鍵約束的步驟如下:展開數(shù)據(jù)庫和表,右擊鼠標(biāo)選擇“修改”,然后在上面窗口空白

8、處單擊鼠標(biāo)右鍵,在快捷菜單中選擇“關(guān)系” 彈出“外鍵關(guān)系”對話窗口,單擊“添加”按鈕,系統(tǒng)會給出默認(rèn)的關(guān)系名稱 點擊“表和列規(guī)范”左邊的“+”,讓系統(tǒng)彈出 “表和列”窗口 在“表和列”窗口選擇所要參考的主鍵的表名、表中的主鍵,以及本表中設(shè)置外鍵的列名,單擊“確定”按鈕,再單擊“關(guān)閉”按鈕 12.1.4 外鍵約束用T-SQL語句創(chuàng)建外鍵約束語法格式:create TABLE table_name /*指定表名( column_name datatype FOREIGN KEYREFERENCES ref_table (ref_column) /*指定被參照基本表的表名和列名, n )或creat

9、e TABLE table_name( /*指定表名column_name datatype , n CONSTRAINT constranint_name FOREIGN KEY(列名) REFERENCES ref_table (ref_column)) /*單獨列出,并指定約束名12.1.5 默認(rèn)值約束默認(rèn)值約束讓用戶能夠定義一個值,每當(dāng)用戶沒有在某一列中輸入值時,則將所定義的值提供給這一列SQL Server 200512.1.5 默認(rèn)值約束用SQL Server Management Studio設(shè)置默認(rèn)值約束的步驟如下:展開數(shù)據(jù)庫和表,右擊鼠標(biāo)選擇“修改” 在系統(tǒng)彈出的窗口中單擊要

10、設(shè)置默認(rèn)的列,在下面列屬性設(shè)置欄的“默認(rèn)值或綁定”輸入框中,輸入對應(yīng)的默認(rèn)值即可 12.1.5 默認(rèn)值約束用T-SQL語句設(shè)置默認(rèn)值約束語法格式:ALTER TABLE table_nameADD CONSTRAINT constraint_name DEFAULT default_value FOR column_name 12.2 默認(rèn)值這里所說的默認(rèn)值是數(shù)據(jù)庫對象之一,它指定在向數(shù)據(jù)庫中的表插入數(shù)據(jù)時,如果用戶沒有明確給出某列的值,SQL Server自動指定該列使用此默認(rèn)值。它是實現(xiàn)數(shù)據(jù)完整性的主要方法之一注意默認(rèn)值對象和前面已經(jīng)提到的默認(rèn)值約束是有區(qū)別的,雖然它們的最終作用是基本一樣

11、的,但用法不同:默認(rèn)值約束是在創(chuàng)建或修改表時直接指定的,而默認(rèn)值對象是先獨立創(chuàng)建,然后再根據(jù)需要綁定到表中某個列上 SQL Server 200512.2 默認(rèn)值用T-SQL創(chuàng)建默認(rèn)值語法:CREATE DEFAULT default_name AS constant_expression參數(shù)說明:default_name是新建默認(rèn)值的名稱;constant_expression為default_name的值,必須是一個常數(shù)表達(dá)式 12.2 默認(rèn)值默認(rèn)值的綁定:默認(rèn)值創(chuàng)建好之后,必須將其綁定到某個列或用戶自定義數(shù)據(jù)類型上才能生效。語法:sp_bindefault default_name, o

12、bject_name參數(shù)說明:sp_bindefault是實現(xiàn)默認(rèn)值綁定功能的系統(tǒng)存儲過程;default_name是默認(rèn)值名稱;object_name是要與默認(rèn)值綁定的列名或用戶自定義數(shù)據(jù)類型名,如果指定的是表中的列,格式必須是“table.column”12.2 默認(rèn)值默認(rèn)值綁定的解除一個默認(rèn)值被綁定到表中的列或用戶自定義數(shù)據(jù)類型之后,如果不想再使用了,可以用系統(tǒng)存儲過程unbinddefault解除綁定,語法如下:sp_unbinddefault object_name注意綁定解除后作為數(shù)據(jù)庫對象的默認(rèn)值仍然存在于數(shù)據(jù)庫中 12.2 默認(rèn)值默認(rèn)值綁定的刪除:如果一個默認(rèn)值不再使用了,可以

13、用DROP語句將其刪除,語法如下:DROP DEFAULT default_name 12.3 規(guī)則規(guī)則也是數(shù)據(jù)庫對象之一,它指定向表的某列插入或更新數(shù)據(jù)時,輸入值被限定的取值范圍。規(guī)則是實現(xiàn)數(shù)據(jù)庫域完整性的主要方法之一,可用于表中的列或用戶自定義的數(shù)據(jù)類型規(guī)則在功能上等同于我們前面已講過的 check約束。類似于default約束和 default對象的區(qū)別,規(guī)則也是要先單獨創(chuàng)建然后再綁定到需要的列或數(shù)據(jù)類型上 SQL Server 200512.3 規(guī)則用T-SQL語句創(chuàng)建規(guī)則:語法:CREATE RULE rule_name AS condition_expression參數(shù)說明:rule_name是被創(chuàng)建的規(guī)則的名稱;condition_express指明定義規(guī)則的條件,在這個條件表達(dá)式中不能包含列名或其他數(shù)據(jù)庫對象名,但它帶有一個為前綴的參數(shù),即參數(shù)的名字必須以為第一個字符 12.3 規(guī)則規(guī)則的綁定:規(guī)則創(chuàng)建好以后,也必須綁定到某個列或用戶自定義的數(shù)據(jù)類型上才能生效。語法:sp_bindrule rule_name, object_name參數(shù)說明:rule_name是已創(chuàng)建的規(guī)則名;object_name指定要與規(guī)則綁定的列名

溫馨提示

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

評論

0/150

提交評論