版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第8章章 數(shù)據(jù)完整性數(shù)據(jù)完整性本章內(nèi)容本章內(nèi)容8.1 使用規(guī)則實(shí)施數(shù)據(jù)完整性使用規(guī)則實(shí)施數(shù)據(jù)完整性8.2 使用默認(rèn)值實(shí)施數(shù)據(jù)完整性使用默認(rèn)值實(shí)施數(shù)據(jù)完整性8.3 使用約束實(shí)施數(shù)據(jù)完整性使用約束實(shí)施數(shù)據(jù)完整性 數(shù)據(jù)完整性概述數(shù)據(jù)完整性概述n數(shù)據(jù)完整性防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù)完整性防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù)和防止因錯(cuò)誤信息的輸入輸出造成無(wú)效操作數(shù)據(jù)和防止因錯(cuò)誤信息的輸入輸出造成無(wú)效操作或錯(cuò)誤信息而提出的?;蝈e(cuò)誤信息而提出的。數(shù)據(jù)完整性有數(shù)據(jù)完整性有3種類型:種類型:實(shí)體完整性實(shí)體完整性(Entity Integrity)、參照完整性參照完整性(Referential Int
2、egrity)、用戶定義的完整性用戶定義的完整性(User-defined Integrity)。n在在SQL Server中可以通過(guò)各種規(guī)則中可以通過(guò)各種規(guī)則(Rule)、默認(rèn)、默認(rèn)(Default)、約束、約束(Constraint)和觸發(fā)器和觸發(fā)器(Trigger)等等數(shù)據(jù)庫(kù)對(duì)象來(lái)保證數(shù)據(jù)的完整性。數(shù)據(jù)庫(kù)對(duì)象來(lái)保證數(shù)據(jù)的完整性。8.1 使用規(guī)則實(shí)施數(shù)據(jù)完整性使用規(guī)則實(shí)施數(shù)據(jù)完整性8.1.1 創(chuàng)建規(guī)則創(chuàng)建規(guī)則8.1.2 查看規(guī)則查看規(guī)則8.1.3 規(guī)則的綁定與松綁規(guī)則的綁定與松綁8.1.4 刪除規(guī)則刪除規(guī)則8.1.1 創(chuàng)建規(guī)則創(chuàng)建規(guī)則n規(guī)則規(guī)則(Rule)就是數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在表的列或用戶定
3、義數(shù)據(jù)就是數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在表的列或用戶定義數(shù)據(jù)類型中的值的規(guī)定和限制。類型中的值的規(guī)定和限制。n規(guī)則是單獨(dú)存儲(chǔ)的獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象。規(guī)則是單獨(dú)存儲(chǔ)的獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象。n規(guī)則和約束可以同時(shí)使用,表的列可以有一個(gè)規(guī)則及多個(gè)規(guī)則和約束可以同時(shí)使用,表的列可以有一個(gè)規(guī)則及多個(gè)約束。規(guī)則與檢查約束在功能上相似,但在使用上有所區(qū)約束。規(guī)則與檢查約束在功能上相似,但在使用上有所區(qū)別。別。檢查約束是在檢查約束是在CREATE TABLE或或ALTER TABLE語(yǔ)句中定義的,語(yǔ)句中定義的,嵌入了被定義的表結(jié)構(gòu),即刪除表的時(shí)候檢查約束也就隨之被刪嵌入了被定義的表結(jié)構(gòu),即刪除表的時(shí)候檢查約束也就隨之被刪除。除。而規(guī)
4、則需要用而規(guī)則需要用CREATE RULE語(yǔ)句定義后才能使用,是獨(dú)立于表語(yǔ)句定義后才能使用,是獨(dú)立于表之外的數(shù)據(jù)庫(kù)對(duì)象,刪除表并不能刪除規(guī)則,需要用之外的數(shù)據(jù)庫(kù)對(duì)象,刪除表并不能刪除規(guī)則,需要用DROP RULE語(yǔ)句才能刪除。語(yǔ)句才能刪除。相比之下,使用在相比之下,使用在CREATE TABLE或或ALTER TABLE語(yǔ)句中定義語(yǔ)句中定義的檢查約束是更標(biāo)準(zhǔn)的限制列值的方法,但檢查約束不能直接作的檢查約束是更標(biāo)準(zhǔn)的限制列值的方法,但檢查約束不能直接作用于用戶定義數(shù)據(jù)類型。用于用戶定義數(shù)據(jù)類型。 8.2 8.2 使用規(guī)則實(shí)施數(shù)據(jù)完整性使用規(guī)則實(shí)施數(shù)據(jù)完整性2用用CREATE RULE語(yǔ)句創(chuàng)建規(guī)則
5、語(yǔ)句創(chuàng)建規(guī)則8.2.1 8.2.1 創(chuàng)建規(guī)則創(chuàng)建規(guī)則nCREATE RULE語(yǔ)句用于在當(dāng)前數(shù)據(jù)庫(kù)中語(yǔ)句用于在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建規(guī)則,其語(yǔ)法格式如下:創(chuàng)建規(guī)則,其語(yǔ)法格式如下:CREATE RULE rule_name AS condition_expression8.2.1 8.2.1 創(chuàng)建規(guī)則創(chuàng)建規(guī)則CREATE RULE hire_date_ruleAS hire_date=1980-01-01 and hire_date18)WITH CHECK | WITH NOCHECK 指定表中的數(shù)據(jù)是否用指定表中的數(shù)據(jù)是否用新添加的或重新啟用的新添加的或重新啟用的 FOREIGN KEY 或或 C
6、HECK 約束約束進(jìn)行驗(yàn)證。如果沒(méi)有指定,對(duì)于新約束,假定為進(jìn)行驗(yàn)證。如果沒(méi)有指定,對(duì)于新約束,假定為 WITH CHECK,對(duì)于重新啟用的約束,假定為,對(duì)于重新啟用的約束,假定為 WITH NOCHECK。 8.4.4 8.4.4 檢查約束檢查約束例例8-25 創(chuàng)建一個(gè)訂貨表創(chuàng)建一個(gè)訂貨表orders,保證各訂單,保證各訂單的訂貨量必須不小于的訂貨量必須不小于10。CREATE TABLE orders( order_id char(8), p_id char(8), p_name char(10) , quantity smallint CONSTRAINT chk_quantity CH
7、ECK (quantity=10), CONSTRAINT pk_orders_id PRIMARY KEY (order_id) )8.4.4 8.4.4 檢查約束檢查約束CREATE TABLE transporters( transporter_id char(4) NOT NULL, transport_name varchar(50), linkman_name char(8), address varchar(50), telephone char(12) NOT NULL CHECK(telephone LIKE 01-90-90-9-1-90-90-90-90-90-90-9
8、OR telephone LIKE 01-90-9-1-90-90-90-90-90-90-90-9)例例8-26 創(chuàng)建創(chuàng)建transporters表并定義檢查約束表并定義檢查約束8.4 8.4 使用約束實(shí)施數(shù)據(jù)完整性使用約束實(shí)施數(shù)據(jù)完整性8.3.5 默認(rèn)約束默認(rèn)約束n默認(rèn)默認(rèn)(Default)約束通過(guò)定義列的默認(rèn)值或使約束通過(guò)定義列的默認(rèn)值或使用數(shù)據(jù)庫(kù)的默認(rèn)值對(duì)象綁定表的列,以確用數(shù)據(jù)庫(kù)的默認(rèn)值對(duì)象綁定表的列,以確保在沒(méi)有為某列指定數(shù)據(jù)時(shí),來(lái)指定列的保在沒(méi)有為某列指定數(shù)據(jù)時(shí),來(lái)指定列的值。值。n默認(rèn)值可以是常量,也可以是表達(dá)式,還默認(rèn)值可以是常量,也可以是表達(dá)式,還可以為可以為NULL值。值
9、。8.4.5 8.4.5 默認(rèn)約束默認(rèn)約束定義默認(rèn)約束的語(yǔ)法格式定義默認(rèn)約束的語(yǔ)法格式CONSTRAINT constraint_nameDEFAULT constant_expression FOR column_name8.4.5 8.4.5 默認(rèn)約束默認(rèn)約束例例8-27 在在Sales數(shù)據(jù)庫(kù)中,為員工表數(shù)據(jù)庫(kù)中,為員工表employee的的sex列添加默認(rèn)約束,默認(rèn)值是列添加默認(rèn)約束,默認(rèn)值是“男男”。ALTER TABLE employeeADD CONSTRAINT sex_default DEFAULT 男男 FOR sexn例例8-28 更改表更改表employee為為hire_
10、date列定義列定義默認(rèn)約束。默認(rèn)約束。ALTER TABLE employeeADD CONSTRAINT hire_date_df DEFAULT (getdate() FOR hire_date8.4.5 8.4.5 默認(rèn)約束默認(rèn)約束例例8-29 添加具有默認(rèn)值的可為空的列添加具有默認(rèn)值的可為空的列ALTER TABLE employeeADD hire_date datetime DEFAULT (getdate() WITH VALUES8.4.5 8.4.5 默認(rèn)約束默認(rèn)約束例例8-30 使用默認(rèn)約束。使用默認(rèn)約束。-創(chuàng)建表創(chuàng)建表purchase_orderCREATE TABLE
11、 purchase_order( order_id2 char(6)NOT NULL, goods_id char(6) NOT NULL, employee_id char(4) NOT NULL, supplier_id char(5) NOT NULL, transporter_id char(4), order_num float NOT NULL, discount float DEFAULT (0),order_date datetime NOT NULL DEFAULT (GetDate(), send_date datetime, arrival_date datetime)-
12、使用使用DEFAULT VALUES選項(xiàng)為選項(xiàng)為purchase_order表裝載數(shù)據(jù)。表裝載數(shù)據(jù)。INSERT INTO purchase_order DEFAULT VALUES8.4.5 8.4.5 默認(rèn)約束默認(rèn)約束例例8-31 為表為表purchase_orders定義多個(gè)約束定義多個(gè)約束CREATE TABLE purchase_orders( order_id2 char(6) NOT NULL, goods_id char(6) NOT NULL, employee_id char(4) NOT NULL, supplier_id char(5) NOT NULL, transp
13、orter_id char(4), order_num float NOT NULL, discount float CHECK (discount=0 AND discount order_date), CHECK (arrival_date send_date) 本章小結(jié)本章小結(jié)(1)數(shù)據(jù)完整性有)數(shù)據(jù)完整性有4種類型。實(shí)體完整性、參照完整性和用戶定義的完整種類型。實(shí)體完整性、參照完整性和用戶定義的完整性。在性。在SQL Server 2005中可以通過(guò)各種約束、默認(rèn)、規(guī)則和觸發(fā)器等數(shù)據(jù)中可以通過(guò)各種約束、默認(rèn)、規(guī)則和觸發(fā)器等數(shù)據(jù)庫(kù)對(duì)象來(lái)保證數(shù)據(jù)的完整性。庫(kù)對(duì)象來(lái)保證數(shù)據(jù)的完整性。(2)規(guī)
14、則實(shí)施數(shù)據(jù)的完整性。規(guī)則是數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在表的列或用戶定)規(guī)則實(shí)施數(shù)據(jù)的完整性。規(guī)則是數(shù)據(jù)庫(kù)中對(duì)存儲(chǔ)在表的列或用戶定義數(shù)據(jù)類型中的值的規(guī)定和限制??梢酝ㄟ^(guò)義數(shù)據(jù)類型中的值的規(guī)定和限制??梢酝ㄟ^(guò)Transact-SQL語(yǔ)句來(lái)創(chuàng)建、刪除、語(yǔ)句來(lái)創(chuàng)建、刪除、查看規(guī)則以及規(guī)則的綁定與松綁。查看規(guī)則以及規(guī)則的綁定與松綁。(3)默認(rèn)值實(shí)施數(shù)據(jù)完整性。默認(rèn)值是用戶輸入記錄時(shí)沒(méi)有指定具體數(shù))默認(rèn)值實(shí)施數(shù)據(jù)完整性。默認(rèn)值是用戶輸入記錄時(shí)沒(méi)有指定具體數(shù)據(jù)的列中自動(dòng)插入的數(shù)據(jù)。默認(rèn)值對(duì)象可以用于多個(gè)列或用戶定義數(shù)據(jù)類型,據(jù)的列中自動(dòng)插入的數(shù)據(jù)。默認(rèn)值對(duì)象可以用于多個(gè)列或用戶定義數(shù)據(jù)類型,它的管理與應(yīng)用同規(guī)則有許多相似之處。表的一列或一個(gè)用戶定義數(shù)據(jù)類型它的管理與應(yīng)用同規(guī)則有許多相似之處。表的一列或一個(gè)用戶定義數(shù)據(jù)類型也只能與一個(gè)默認(rèn)值相綁定。在也只能與一個(gè)默認(rèn)值相綁定。在SQL Server中使用中使用Transact-SQL語(yǔ)句實(shí)現(xiàn)語(yǔ)句實(shí)現(xiàn)默認(rèn)值的創(chuàng)建、查看、刪除以及默認(rèn)值的綁定與松綁。默認(rèn)值的創(chuàng)建、查看、刪除
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 婦幼保健院母嬰護(hù)理環(huán)境改善方案
- 企業(yè)人力資源管理制度規(guī)范
- 企業(yè)市場(chǎng)分析報(bào)告編制手冊(cè)
- 醫(yī)院康復(fù)科室設(shè)備配置方案
- 供應(yīng)鏈物流配送流程規(guī)范
- 市政供水服務(wù)操作手冊(cè)(標(biāo)準(zhǔn)版)
- 醫(yī)院資源共享平臺(tái)建設(shè)方案
- 小學(xué)計(jì)算機(jī)房設(shè)備更新方案
- 鋼結(jié)構(gòu)構(gòu)件運(yùn)輸及堆放管理方案
- 水利工程質(zhì)量安全監(jiān)督管理指南
- 民法典與生活同行宣傳手冊(cè)
- 財(cái)務(wù)調(diào)賬管理辦法
- 老年醫(yī)學(xué)科老年綜合評(píng)估表
- 銷售內(nèi)勤年終總結(jié)
- 妊娠合并梅毒治療指南
- 共線清潔驗(yàn)證方案
- 亞馬遜運(yùn)營(yíng)廣告培訓(xùn)
- 北方工業(yè)集團(tuán) 筆試題目
- 環(huán)境監(jiān)測(cè)機(jī)構(gòu)質(zhì)量保證制度
- 酒店消殺方案
- 當(dāng)前消費(fèi)者權(quán)益保護(hù)工作中出現(xiàn)的新情況新問(wèn)題與對(duì)策建議百度文剖析
評(píng)論
0/150
提交評(píng)論