第五講-數據庫保護-網絡數據庫技術課件_第1頁
第五講-數據庫保護-網絡數據庫技術課件_第2頁
第五講-數據庫保護-網絡數據庫技術課件_第3頁
第五講-數據庫保護-網絡數據庫技術課件_第4頁
第五講-數據庫保護-網絡數據庫技術課件_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

索引建立索引的作用用戶對數據庫最頻繁的操作為數據查詢,為提高檢索數據的能力,數據庫引入索引機制保證數據記錄的唯一性實現表間的參照完整性減少ORDERBY、GROUPBY查詢的排序和分組時間第五講數據庫保護

數據完整性2023/7/221第五講 數據庫保護(數據完整性)索引的定義一個單獨的、物理的數據庫結構。是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針表。依賴于表建立,提供了數據庫中編排表中數據的內部方法。表存儲由兩部分組成用來存放表的數據頁面存放索引頁面索引存放在索引頁面上,通常索引頁面相對于數據頁面來說小得多。當進行數據檢索時,系統先搜索索引頁面從中找到所需數據的指針,再直接通過指針從數據頁面中讀取數據。從某種程度上可以把數據庫看作一本書,把索引看作書的目錄,通過目錄查找書中的信息顯然較沒有目錄的書方便快捷。2023/7/222第五講 數據庫保護(數據完整性)索引的創(chuàng)建用企業(yè)管理器創(chuàng)建索引用索引創(chuàng)建向導創(chuàng)建索引在目錄樹中選擇要創(chuàng)建索引的表的數據庫結點,從“工具”菜單中選擇“向導”命令,在出現的“選擇向導”界面中,單擊“創(chuàng)建索引向導”,出現“創(chuàng)建索引向導”界面2023/7/225第五講 數據庫保護(數據完整性)2023/7/226第五講 數據庫保護(數據完整性)單擊“下一步”,選擇要創(chuàng)建索引的表及其所屬的數據庫2023/7/227第五講 數據庫保護(數據完整性)單擊“下一步”,顯示表中已經存在的索引信息,若表還未創(chuàng)建任何索引,不會出現此界面2023/7/228第五講 數據庫保護(數據完整性)單擊“下一步”,列出表中的所有列信息,從中選擇創(chuàng)建索引的列2023/7/229第五講 數據庫保護(數據完整性)單擊“下一步”,列出可供選擇的索引設置選項(參考CREATEINDEX命令)單擊“下一步”,完成索引創(chuàng)建界面,可指定索引名,及調整組成索引的列順序,單擊“完成”結束索引創(chuàng)建過程,系統會彈出一個創(chuàng)建索引成功信息對話框,2023/7/2210第五講 數據庫保護(數據完整性)索引的創(chuàng)建用企業(yè)管理器創(chuàng)建索引用索引創(chuàng)建向導創(chuàng)建索引直接創(chuàng)建索引選擇要創(chuàng)建索引的表,單擊右鍵,從快捷菜單中選擇“所有任務”中的“管理索引”選項,2023/7/2211第五講 數據庫保護(數據完整性)出現“索引管理”對話框,列出了表中已存在索引,選擇“新建按鈕,進入“創(chuàng)建索引”對話框,輸入要創(chuàng)建的索引名,再選擇索引列并設置索引的各種選項,單擊“確定”按鈕完成2023/7/2212第五講 數據庫保護(數據完整性)用CREATEINDEX命令創(chuàng)建索引CREATEINDEX既可以創(chuàng)建一個可改變表的物理順序的簇索引也可以創(chuàng)建提高查詢性能的非簇索引CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX<索引名>ON

{<表名>|<視圖名>}<列名>[ASC|DESC][,...n])[WITH[[,]FILLFACTOR=<填充因子>][[,]IGNORE_DUP_KEY][[,]DROP_EXISTING]]若使用兩個或以上的列組成一個索引,則稱為復合索引。一個索引中最多可以指定16列但列的數據類型的長度和不能超過900個字節(jié)一個表中惟一,同一數據庫或不同數據庫中可重復數據類型為TEXT、NTEXT、IMAGE或BIT的列不能作為索引的列2023/7/2213第五講 數據庫保護(數據完整性)用CREATEINDEX命令創(chuàng)建索引CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX<索引名>ON{<表名>|<視圖名>}<列名>[ASC|DESC][,...n])[WITH[[,]FILLFACTOR=<填充因子>][[,]IGNORE_DUP_KEY][[,]DROP_EXISTING]]UNIQUE:創(chuàng)建惟一索引,即索引的鍵值不重復,在列包含重復值時不能建惟一索引。還應確定索引所包含的列均不允許NULL值CLUSTERED:創(chuàng)建的索引為簇索引,若缺省則為非簇索引NONCLUSTERED:創(chuàng)建的索引為非簇索引,其索引數據頁包含指向數據庫實際表數據頁的指針ASC|DESC:指定索引列的排序方式,默認為升序ASC2023/7/2214第五講 數據庫保護(數據完整性)FILLFACTOR=<填充因子>:創(chuàng)建索引時每個索引頁的數據占索引頁大小的百分比。<填充因子>的值為0到100。它同時指出了索引頁保留的自由空間占索引頁大小的百分比,即100-<填充因子>。對于頻繁進行大量數據插入或刪除的表,在建索引時應為將來生成的索引數據預留較大的空間,即將<填充因子>設得較小,否則索引頁會因數據的插入而很快填滿并產生分頁,而分頁會大大增加系統的開銷。但如果設得過小又會浪費大量的磁盤空間,降低查詢性能。因此對于此類表通常設一個大約為10的<填充因子>,而對于數據不更改的、高并發(fā)的只讀表,<填充因子>可設到95以上乃至100。IGNORE_DUP_KEY:控制當往包含在惟一約束中的列中插入重復數據時,SQLServer所作的反應。選擇此項,SQLServer返回一個錯誤信息,跳過此行數據的插入,繼續(xù)執(zhí)行下面的插入操作;未選此項,SQLServer除返回錯誤信息外,還會回滾整個INSERT語句。DROP_EXISTING:刪除并重新創(chuàng)建簇索引。2023/7/2215第五講 數據庫保護(數據完整性)例:為表products創(chuàng)建一個簇索引createuniqueclusteredindexpk_p_idonproducts(ProductId)withfillfactor=10,ignore_dup_key,drop_existing例:為表products創(chuàng)建一個復合索引createindexpk_p_mainonproducts(ProductID,ProductName,UnitPrice)withfillfactor=502023/7/2216第五講 數據庫保護(數據完整性)查看與修改索引用企業(yè)管理器查看修改索引選擇要查看的數據庫表上單擊右鍵,從快捷菜單中選擇”所有任務“中的”管理索引“項,出現”索引管理“對話框選擇要查看或修改的索引,單擊”編輯“按鈕,出現”修改索引“對話框可修改索引的大部分設置,還可單擊”編輯SQL…“按鈕,在顯示的SQL腳本編輯框直接修改其SQL腳本,但不能修改索引名,程序方式的索引名修改需要使用系統存儲過程Sp_rename要在企業(yè)管理器中修改索引名、改變其所屬文件組等其它信息則需要在表的屬性對話框中進行,該屬性對話框是從”設計表結構“對話框中調用,而不是直接通過快捷菜單的”屬性“菜單項調用2023/7/2217第五講 數據庫保護(數據完整性)查看與修改索引用企業(yè)管理器查看修改索引用存儲過程Sp_helpindex查看索引返回表的所有索引的信息:sp_helpindex[@objname=]‘表名‘例:查看表orders的索引

usenorthwindexecsp_helpindexorders運行結果為3列:索引名、索引描述、索引鍵用存儲過程Sp_rename更改索引名例:更改orders表中的索引orders_quan名為orders_quantityexecsp_rename'orders.[orders_quan]','orders_quantity','index'2023/7/2218第五講 數據庫保護(數據完整性)刪除索引用企業(yè)管理器刪除索引在”索引管理“對話框或”表屬性“對話框中選擇要刪除的索引,再選擇”刪除“按鈕用DROPINDEX命令刪除索引可刪除一個或多個當前數據庫中的索引

DROPINDEX‘表名.索引名'[,...n]注不能刪除由CREATETABLE或ALTERTABLE命令創(chuàng)建的PRIMARYKEY或UNIQUE約束索引不能刪除系統表中的索引例:刪除表products中的索引p_quantitydropindexproducts1.p_quantity2023/7/2219第五講 數據庫保護(數據完整性)數據完整性概述輸入數據庫中的數據可能無效或錯誤,為保證輸入的數據符合規(guī)定,成為數據庫系統特別是多用戶關系數據庫系統首要關注的問題數據完整性(DataIntegrity)指數據的精確性(Accuracy)和可靠性(Reliability),為防止數據庫中存在不符合語義規(guī)定的數據和防止因錯誤信息的輸入輸出造成的無效操作或錯誤信息分類(4類)實體完整性(EntityIntegrity)域完整性DomainIntegrity參照完整性ReferentialIntegrity用戶定義的完整性User-definedIntegrity2023/7/2220第五講 數據庫保護(數據完整性)實體完整性(EntityIntegrity)規(guī)定表的每一行在表中是惟一的。實體表中定義的UNIQUE、PRIMARYKEY、和IDENTITY約束都是實體完整性的體現域完整性DomainIntegrity指數據庫表中的列必須滿足某種特定的數據類型或約束,其中約束又包括取值范圍、精度等規(guī)定。表中的CHECK、FOREIGNKEY約束和DEFAULT、NOTNULL定義都屬于域完整性的范疇參照完整性ReferentialIntegrity兩個表的主鍵和外鍵的數據應對應一致。它確保了有主鍵的表中對應其它表的外鍵的行存在,即保證表之間的數據的一致性,防止數據丟失或無意義的數據在數據庫中擴散。參照完整性是建立在外鍵和主鍵之間或外鍵和惟一性關鍵字之間的關系上的,在SQLServer中參照完整性作用表現在如下幾個方面禁止在從表中插入包含主表中不存在的關鍵字的數據行2023/7/2221第五講 數據庫保護(數據完整性)禁止會導致從表中的相應值孤立的主表中的外關鍵字值改變禁止刪除在從表中的有對應記錄的主表記錄用戶定義的完整性User-definedIntegrity根據應用環(huán)境的不同所需的一些特殊約束條件,是針對某個特定關系數據庫的約束條件,它反映某一具體應用所涉及的數據必須滿足的語義要求。數據完整性類型實現方法實體完整性PrimaryKey、UniqueKey、UniqueIndex、IdentityColumn域完整性Default、CHECK、ForeignKey、DataType、Rule參照完整性ForeignKey、CHECK、Trigger、Procedure用戶定義完整性Rule、Trigger、Procedure、CreateTable中的所有列級和表級約束2023/7/2222第五講 數據庫保護(數據完整性)使用約束實現數據完整性約束(Constraint)限制輸入到表中的值的范圍,SQLServer提供多種約束PrimaryKey約束ForeignKey約束Unique約束CHECK約束創(chuàng)建約束前要考慮的問題什么約束實現自己所需的數據完整性約束實施的時機列級約束行定義的一部分,只能應用在一列上表級約束定義獨立于列的定義,可以應用在一個表中的多列上查看約束信息使用sp_helpconstraint系統存儲過程:sp_helpconstraint<表名>2023/7/2223第五講 數據庫保護(數據完整性)使用PRIMARYKEY約束(主鍵約束)指定表的一列或幾列的組合值在表中具有惟一性,即能惟一標識一行記錄。操作方式有3在創(chuàng)建表時,定義主鍵,主鍵是表的一部分在一個沒有定義主鍵的表上,加上一個主鍵修改或刪除表上已經定義的主鍵定義主鍵CONSTRAINT<約束名>PRIMARYKEY[CLUSTERED|NONCLUSTERED](<列名1>[,<列名2>,…,<列名16>)]約束名在數據庫中是惟一的,若不指定,系統會自動生成一個約束名指定索引類別,CLUSTERED為缺省值指定組成主鍵的列名,主鍵最多由16列組成每個表中只能有一列被指定為主鍵IMAGE和TEXT類型的列不能被指定為主鍵不允許指定的主鍵列有NULL屬性若在多列上建立主鍵,必須建立表級約束2023/7/2224第五講 數據庫保護(數據完整性)例:創(chuàng)建一個產品信息表以產品編號和名稱為主關鍵字createtableproducts(ProductIDchar(8)notnull,ProductNamechar(10)notnull,pricemoneydefault0.01,quantitysmallintnull,constraintpk_p_idprimarykey(ProductID,ProductName))2023/7/2225第五講 數據庫保護(數據完整性)使用企業(yè)管理器定義主鍵創(chuàng)建表時在某(些)列上單擊右鍵,從快捷菜單中選擇”設置主鍵“設置或取消主鍵創(chuàng)建表時選擇某(些)列上,單擊工具欄上的”主鍵“圖標設置或取消主鍵查看主鍵信息使用存儲過程sp_pkeys:sp_pkeys<表名>刪除主鍵ALTERTABLE<表名>DROP{[CONSTRAINT]<主鍵名>}[,…n]例:刪除建立在表test1上的主鍵約束ALTERTABLEproductsDROPCONSTRAINTpk_p_id2023/7/2226第五講 數據庫保護(數據完整性)添加主鍵ALTERTABLE<表名>ADD[CONSTRAINT]<主鍵名>]PRIMARYKEY[CLUSTERED|NONCLUSTERED](<列名1>[,<列名2>,…,<列名16>)]例:恢復表test1中的主鍵ALTERTABLEproductsADDCONSTRAINTpk_p_idPRIMARYKEYCLUSTERED(ProductID,ProductName)Go2023/7/2227第五講 數據庫保護(數據完整性)使用UNIQUE約束用來確保不受主鍵約束的列上的數據的惟一性,與主鍵的區(qū)別為:用在非主鍵的一列或多列上要求數據唯一的情況允許列可以有NULL值可在一個表上設置多個唯一約束,而一個表上只能有一個主鍵在創(chuàng)建表時定義UNIQUE約束CONSTRAINT<約束名>UNIQUE[CLUSTERED|NONCLUSTERED]<列名1>[,<列名2>,…,<列名16>]例:定義一個員工信息表,其中員工的身份證號具有惟一性createtableemployees(emp_idchar(8),emp_namechar(10),emp_cardidchar(18),constraintpk_emp_idprimarykey(emp_id),constraintuk_emp_cardidunique(emp_cardid))2023/7/2228第五講 數據庫保護(數據完整性)使用企業(yè)管理器完成UNIQUE約束進入”設計表“窗口,在要添加UNIQUE約束的行上單擊右鍵,從快捷菜單中選擇”屬性“命令進入”索引/鍵“選項卡,單擊”新建“按鈕,在列名列表中選擇約束列選中”創(chuàng)建Unique“復選框,再選中”索引“單選按鈕,單擊”關閉“完成在”索引/鍵“選項卡中,選擇相應的UNIQUE約束名,單擊”刪除“按鈕可刪除約束刪除UNIQUE約束ALTERTABLE<表名>DROP{[CONSTRAINT]<唯一約束名>}[,…n]添加UNIQUE約束ALTERTABLE<表名>ADD[CONSTRAINT]<唯一約束名>]UNIQUE[CLUSTERED|NONCLUSTERED](<列名1>[,<列名2>,…,<列名16>)]2023/7/2229第五講 數據庫保護(數據完整性)使用CHECK約束對輸入列或整個表中的值設置檢查條件,以限制輸入值,保證數據庫的數據完整性與ForeignKey約束的相同之處通過檢查數據值的合理性來實現數據完整性的維護與ForeignKey約束的不同之處ForeignKey約束是從另一張表上獲得合理數據CHECK約束通過對一個邏輯表達式的結果進行判斷來對數據進行核查定義CHECK約束CONSTRAINT<約束名>(邏輯表達式)添加CHECK約束返回值為TRUE或FALSE2023/7/2230第五講 數據庫保護(數據完整性)使用CHECK約束添加CHECK約束ALTERTABLE<表名>{ADD<列名><列定義>CHECK(邏輯表達式)|[WITHCHECK|WITHNOCHECK]ADDCONSTRAINT<CHECK約束名>CHECK(邏輯表達式)[,…n]}[,…]刪除CHECK約束ALTERTABLE<表名>DROP{[CONSTRAINT]<CHECK約束名>}[,…n]使CHECK約束無效ALTERTABLE<表名>{CHECK|NOCHECK}CONSTRAINT{ALL|<約束名>}[,…n]}2023/7/2231第五講 數據庫保護(數據完整性)例:使authors表上的所有約束無效USEpubsGOALTERTABLEauthorsNOCHECKCONSTRAINTALL例:創(chuàng)建一個訂貨表,其中定貨量必須不小于10createtableorders(order_idchar(8),p_idchar(8),p_namechar(10),quantitysmallint,constraintpk_order_idprimarykey(order_id),constraintchk_quantitycheck(quantity>=10))2023/7/2232第五講 數據庫保護(數據完整性)使用企業(yè)管理器完成CHECK約束進入”設計表“窗口,在要添加CHECK約束的列上單擊右鍵,從快捷菜單中選擇”屬性“命令進入”CHECK約束“選項卡,單擊”新建“按鈕,在”約束表達式“文本框中,輸入檢查約束的邏輯表達式可在”約束名“文本框中輸入約束名可選擇”創(chuàng)建中檢查現存數據“對現存數據進行檢查可設置”對INSERT和UPDATE強制約束“為空,使插入或修改數據時檢查約束無效可設置”對復制強制約束“為空,使數據復制時檢查約束無效2023/7/2233第五講 數據庫保護(數據完整性)使用FOREIGNKEY(外鍵)約束維護兩個表之間的一致性關系定義主鍵約束的表中更新列值時其它表中有與之相關聯的外鍵約束的表中的外鍵列也將被相應地做相同的更新當向含有外鍵的表插入數據時,如果與之相關聯的表的列中無與插入的外鍵列值相同的值時,系統會拒絕插入數據定義外鍵約束CONSTRAINT<約束名>FOREIGNKEY<列名1>[,<列名2>,…,<列名16>]REFERENCES

<關聯表名>[(<關聯列1>[,<關聯列2>,…,<關聯列16>])][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}]][NOTFORREPLICATION]指定要建立關聯的表的信息SQLServer會產生一個錯誤并將父表中的刪除、更新操作回滾.為缺省值2023/7/2234第五講 數據庫保護(數據完整性)使用FOREIGNKEY(外鍵)約束ONDELETECASCADE(ONUPDATE{CASCADE):指定在刪除(更新)表中數據時,對關聯表所做的相關操作在子表中有數據行與父表中的對應數據行相關聯的情況下,如果指定了值CASCADE則在刪除(更新)父表數據行時,會將子表中對應的數據行刪除(更新)例:創(chuàng)建一個訂貨表與前面創(chuàng)建的產品表相關聯createtableorders(OrderIDchar(8),ProductIDchar(8),ProductNamechar(10),constraintpk_order_idprimarykey(OrderID),foreignkey(ProductID,ProductName)referencesproducts(ProductID,ProductName))未給外鍵命名,系統賦予缺省名2023/7/2235第五講 數據庫保護(數據完整性)添加外鍵約束ALTERTABLE<表名>(<列名><列定義>[CONSTRAINT<外鍵約束名>][[FOREIGNKEY]REFERENCES<關聯表名>[(<關聯列>)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][CONSTRAINT<外鍵約束名>]FOREIGNKEY[(<列名1>,…<列名n>)]REFERENCES<關聯表名>[(<關聯列>[,…])]刪除外鍵約束ALTERTABLE<表名>DROP{[CONSTRAINT]<FOREIGN約束名>}[,…n]2023/7/2236第五講 數據庫保護(數據完整性)使用數據庫關系圖管理外鍵約束以圖形化方式管理和使用數據庫的表、列、索引和約束使用圖表建立外鍵約束的步驟展開要建立外鍵的表所在的數據庫結點在”關系圖“上單擊右鍵,從快捷菜單中選擇”新建數據庫關系圖“命令出現”創(chuàng)建數據庫關系圖向導“界面,單擊”下一步“選擇要建立關系的表,單擊”下一步“,單擊”完成“出現”新關系圖“界面,在事先設計好表之間的主鍵約束、UNIQUE約束和外鍵關系后,使用鼠標拖曳字段名到其它表的相應字段上,在出現的”創(chuàng)建關系“對話框中定義關系要刪除已定義的關系,單擊連線,右擊,從快捷菜單中選擇”刪除“命令要修改已定義的關系,單擊連線,右擊,從快捷菜單中選擇”屬性“命令,再選擇”關系“選項卡,進行外鍵屬性修改2023/7/2237第五講 數據庫保護(數據完整性)規(guī)則(Rule)數據庫中對存儲在表列中值的規(guī)定和限制。單獨存儲、獨立的數據庫對象。規(guī)則與其作用的表相互獨立,即表的刪除、修改不會對與之相連的規(guī)則產生影響。規(guī)則和約束可以同時使用,表列可以有一個規(guī)則及多個CHECK約束規(guī)則與CHECK約束很相似,而使用在ALTERTABLE或CREATETABLE命令中的CHECK約束是更標準的限制列值的方法。創(chuàng)建規(guī)則用CREATERULE命令創(chuàng)建規(guī)則CREATERULE<規(guī)則名>AS<條件表達式>規(guī)則的定義,可以是能用于WHERE條件子句中的任何表達式,可以包含算術運算符、關系運算符和謂詞,如INLIKE、BETWEEN等,必須以字符@開頭2023/7/2238第五講 數據庫保護(數據完整性)例:創(chuàng)建雇傭日期規(guī)則hire_date_rulecreaterulehire_date_ruleas@hire_date>='1990-01-01'and@hire_date<=getdate()例:創(chuàng)建工作級別規(guī)則job_level_rulecreaterulejob_level_ruleas@job_levelin('1','2','3','4','5')例:創(chuàng)建評分規(guī)則grade_rulecreaterulegrade_ruleas@valuebetween1and100例:創(chuàng)建字符規(guī)則my_character_rule1createrulemy_character_rule1as@valuelike'[a-z]%[0-9]'/*字符串必須以a到f的字母開頭,以0到9的數字結尾*/例:創(chuàng)建規(guī)則ID_rulecreateruleID_ruleas@IDlike‘[0-9][0-9][0-9]’2023/7/2239第五講 數據庫保護(數據完整性)用企業(yè)管理器創(chuàng)建規(guī)則在企業(yè)管理器中選擇數據庫對象”規(guī)則“,單擊右鍵,從快捷菜單中選擇”新建規(guī)則“選項,出現”創(chuàng)建規(guī)則屬性“對話框輸入規(guī)則名和表達式后,單擊”確定“按鈕即完成規(guī)則的創(chuàng)建查看規(guī)則用企業(yè)管理器查看規(guī)則在企業(yè)管理器中選擇”規(guī)則“對象,即可從右邊的任務板中看到規(guī)則的大部分信息,包括規(guī)則名、所有者、創(chuàng)建時間等要查看規(guī)則表達式,需查看規(guī)則的屬性,選擇要查看規(guī)則,單擊右鍵,從快捷菜單中選擇”屬性“選項,出現”規(guī)則屬性“對話框,可從中編輯規(guī)則表達式、修改規(guī)則名、用存儲過程Sp_helptext查看規(guī)則sp_helptext[@objname=]‘規(guī)則名'例:查看規(guī)則hire_date_ruleexecsp_helptexthire_date_rule2023/7/2240第五講 數據庫保護(數據完整性)規(guī)則的綁定與松綁創(chuàng)建規(guī)則后規(guī)則僅僅只是一個存在于數據庫中的對象并未發(fā)生作用,要將規(guī)則綁定到表列,才能達到創(chuàng)建規(guī)則的目的。綁定:指定規(guī)則作用于哪個表的哪一列。表的一列只能與一個規(guī)則相綁定,而一個規(guī)則可以綁定多個對象。解除規(guī)則與對象的綁定稱為松綁。用存儲過程Sp_bindrule綁定規(guī)則綁定一個規(guī)則到表的一列上sp_bindrule[@rulename=]‘規(guī)則名',[@objname=]‘對象名'2023/7/2241第五講 數據庫保護(數據完整性)例:綁定規(guī)則ID_rule到orders表的字段OrderIDexecsp_bindruleID_rule,‘Orders.[OrderID]'注:規(guī)則對已經輸入表中的數據不起作用規(guī)則所指定的數據類型必須與所綁定的對象的數據類型一致規(guī)則不能綁定一個數據類型為TEXTMAGE或TIMESTAMP的列可直接用一個新的規(guī)則來綁定列,而不需要先將其原來綁定的規(guī)則解除,系統會將舊規(guī)則覆蓋用存儲過程Sp_unbindrule解除規(guī)則的綁定sp_unbindrule[@objname=]‘對象名‘例:解除規(guī)則ID_rule與表Orders的綁定execsp_unbindruleOrders2023/7/2242第五講 數據庫保護(數據完整性)用企業(yè)管理器管理規(guī)則的綁定在企業(yè)管理器中選擇要進行綁定設置的規(guī)則,單擊右鍵,從快捷菜單中選擇”屬性“選項,出現”規(guī)則屬性“對話框,”綁定UDT…“按鈕用于綁定用戶自定義數據類型,”綁定列…“按鈕用于綁定表列單擊”綁定UDT…“按鈕,出現”綁定規(guī)則到用戶自定義數據類型“對話框單擊”綁定列…“按鈕,出現”綁定規(guī)則到表列“對話框刪除規(guī)則在企業(yè)管理器中選擇規(guī)則,單擊右鍵,從快捷菜單中選擇”刪除“命令刪除規(guī)則使用DROPRULE命令刪除當前數據庫中的一個或多個規(guī)則DROPRULE{<規(guī)則名>}[,...n]注:在刪除一個規(guī)則前,必須先將與其綁定的對象解除綁定例:刪除多個規(guī)則droprulemytest1_rule,mytest2_rule2023/7/2243第五講 數據庫保護(數據完整性)使用默認值(Default)

向用戶輸入記錄時沒有指定具體數據的列中自動插入的數據默認值對象與ALTERTABLE或CREATETABLE命令操作表時用DEFAULT選項指定的默認省值功能相似,但默認值對象可以用于多個列管理和使用與規(guī)則相似,表的一列只能與一個默認值相綁定通過定義列的默認值或使用數據庫的默認值對象綁定表列來指定列的默認值,SQLServer推薦使用默認約束而不使用定義默認值的方式來指定列的默認值創(chuàng)建默認值用CREATEDEFAULT命令創(chuàng)建默認值CREATEDEFAULT<默認名>AS<常量表達式>例:創(chuàng)建生日默認值birthday_defacreatedefaultbirthday_defaas'1978-1-1'例:創(chuàng)建ProductName默認值Pname_defacreatedefaultPname_defaas‘car’默認值的定義。<常量表達式>子句可以是數學表達式或函數,也可以包含表列名或其它數據庫對象。2023/7/2244第五講 數據庫保護(數據完整性)用企業(yè)管理器創(chuàng)建默認值選擇數據庫對象”默認“,單擊右鍵,從快捷菜單中選擇”新建默認“選項,出現”創(chuàng)建默認值屬性“對話框,輸入默認值名和值表達式后,單擊”確定“按鈕完成默認值的創(chuàng)建查看和修改默認值

用企業(yè)管理器查看默認值選擇“默認”對象,選擇要查看的默認值,單擊右鍵,從快捷菜單中選擇“屬性”,出現“默認值屬性”對話框,編輯默認值的值表達式修改默認值名。用存儲過程Sp_helptext查看默認值的細節(jié)例:查看默認值birthday_defaexecsp_helptextPname_defa可以用Sp_rename存儲過程修改也可以在企業(yè)管理器的任務板窗口中直接修改2023/7/2245第五講 數據庫保護(數據完整性)默認值的綁定與松綁同規(guī)則一樣需要將默認值與數據庫表綁定后,才能發(fā)揮作用。用企業(yè)管理器管理默認值的綁定選擇要進行綁定設置的默認值,單擊右鍵,從快捷菜單中選擇“屬性”,出現“默認值屬性”對話框,單擊“綁定UDT…”按鈕,綁定用戶自定義數據類型;單擊“綁定列…”按鈕綁定表列。用存儲過程Sp_bindefault綁定默認值綁定一個默認值到表的一個列上sp_bindefault[@defname=]‘默認名',[@objname=]‘對象名'例:綁定默認值Pname_defa到表Orders上execsp_bindefaultPname_defa,‘Orders.ProductName’用存儲過程Sp_unbindefault解除默認值的綁定Sp_unbindefault[@objname=]‘對象名'例:解除默認值num_default與表products的quantity列的綁定execsp_unbindefault‘Orders.[ProductName]’不能綁定默認值到一個用CREATETABLE或ALTERTABLE命令創(chuàng)建或修改表時用DEFAUL

溫馨提示

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

評論

0/150

提交評論