第3章關系數(shù)據(jù)庫的創(chuàng)建與維護_第1頁
第3章關系數(shù)據(jù)庫的創(chuàng)建與維護_第2頁
第3章關系數(shù)據(jù)庫的創(chuàng)建與維護_第3頁
第3章關系數(shù)據(jù)庫的創(chuàng)建與維護_第4頁
第3章關系數(shù)據(jù)庫的創(chuàng)建與維護_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 關系數(shù)據(jù)庫的創(chuàng)建與維護 uSQl Server 2005概述uSQL Server數(shù)據(jù)庫組成 u數(shù)據(jù)庫的創(chuàng)建和維護數(shù)據(jù)庫的創(chuàng)建和維護數(shù)據(jù)表約數(shù)和數(shù)據(jù)完整性控制索引的創(chuàng)建和維護3.1Microsoft SQL Server 2005概述概述 Microsoft SQL 是Microsoft公司在Windows平臺上開發(fā)一個高性能關系數(shù)據(jù)庫管理系統(tǒng)。它支持關系數(shù)據(jù)庫的創(chuàng)建和管理??梢詰迷诰W絡環(huán)境下客戶機/服務器、瀏覽器/服務器結構的信息系統(tǒng)中,作為支持聯(lián)機事務處理系統(tǒng)、聯(lián)機分析處理系統(tǒng)的數(shù)據(jù)庫服務器。 類似地,還有很多商用數(shù)據(jù)庫管理系統(tǒng),例如Oracle公司的Oracle,IBM公司的D

2、B2等也經常用于建設大規(guī)模的信息系統(tǒng)。還有,桌面型數(shù)據(jù)庫管理系統(tǒng),例如Microsoft 公司的Foxpro, Access等,可用于構建小型信息系統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System, DBMS)是數(shù)據(jù)庫系統(tǒng)的一個重要組成部分,是位于應用程序與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。數(shù)據(jù)庫應用程序提出數(shù)據(jù)操作要求,通過DBMS,才能訪問數(shù)據(jù)庫。數(shù)據(jù)庫管理員也是通過DBMS對數(shù)據(jù)庫實施管理。 DBMS是創(chuàng)建和使用數(shù)據(jù)庫必不可少的軟件!什么是數(shù)據(jù)庫管理系統(tǒng)?什么是數(shù)據(jù)庫管理系統(tǒng)?(1)數(shù)據(jù)定義(2)數(shù)據(jù)操縱(3)數(shù)據(jù)庫運行管理(4)數(shù)據(jù)庫維護(5)支持數(shù)據(jù)庫語言數(shù)據(jù)庫

3、管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng) 的主要功能的主要功能建立數(shù)據(jù)庫,定義數(shù)據(jù)庫的模式結構、數(shù)據(jù)庫的完整性約束規(guī)則和安全性控制方式實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的檢索以及更新(包括插入、刪除和修改)包括并發(fā)控制、安全性檢查、完整性約束條件的檢查和執(zhí)行、數(shù)據(jù)庫的內部管理和維護數(shù)據(jù)庫的備份和恢復、導入和導出功能,數(shù)據(jù)庫的重組功能和性能監(jiān)視、分析功能等支持使用數(shù)據(jù)庫語言來使用和管理數(shù)據(jù)庫,關系型DBMS支持SQL語言(1)圖形化的操作環(huán)境 Windows風格的可視化操作環(huán)境,易于學習和使用。(2) 高性能的數(shù)據(jù)庫管理和使用功能 支持高性能應用,支持分布式查詢訪問多數(shù)據(jù)源、充分的數(shù)據(jù)庫完整性保護等。 (3) 可伸縮性和高度可用

4、性 根據(jù)訪問量動態(tài)使用軟、硬件資源;支持從 KB 到TB 數(shù)量級的數(shù)據(jù)庫;7*24可用性。(4)與Internet應用的集成 提供了豐富的XML支持,可以輕松地存儲和檢索數(shù)據(jù),并將查詢結果直接用于各種網頁程序。 (5) 對數(shù)據(jù)倉庫的支持 提供數(shù)據(jù)倉庫組建和數(shù)據(jù)分析工具,有效支持決策分析處理。 SQL Server的主要特性的主要特性 SQL Server主要管理工具主要管理工具 SQL Server提供了一整套數(shù)據(jù)庫系統(tǒng)管理工具和實用程序,打開“開始/程序/Microsoft SQL Server2005 ”菜單即可看到如下所示的SQL Server程序組 : 1SQL Server Mana

5、gement Studio SQL Server Management Studio 是一個管理平臺,集成了多個圖形工具和豐富的腳本支持。用于建立、訪問、配置、控制、管理和開發(fā)數(shù)據(jù)庫。啟動SQL Server Management Studio 選擇“開始/程序/Microsoft SQL Server2005/ SQL Server Management Studio”菜單出現(xiàn)“連接到服務器”窗口。服務器類型:指明要連接的服務。如服務器類型:指明要連接的服務。如果是管理和訪問數(shù)據(jù)庫服務器,選擇果是管理和訪問數(shù)據(jù)庫服務器,選擇“數(shù)據(jù)庫引擎數(shù)據(jù)庫引擎”。服務器名稱:選擇或輸入該服務器的服務器名稱

6、:選擇或輸入該服務器的計算機名稱或計算機名稱或IPIP地址,也可輸入地址,也可輸入“. .”或或“(locallocal)”,表示本機服務器。,表示本機服務器。身份驗證:指明驗證方身份驗證:指明驗證方式。注意式。注意SQL ServerSQL Server身身份驗證需用戶名和密碼,份驗證需用戶名和密碼,默認用戶為默認用戶為“sasa” 。SQL Server Management Studio已在本SQL Server Management Studio下注冊的服務器,可啟動或停止服務器,更改連接選項所有數(shù)據(jù)庫對象的樹型視圖??梢詾g覽、管理、維護所有數(shù)據(jù)庫對象。當選擇某一數(shù)據(jù)庫對象后,中間的“

7、摘要”窗口自動顯示該對象所包含的下一級對象或該對象的詳細內容。創(chuàng)建數(shù)據(jù)庫對象所需要使用的基本SQL語句段的文件,對復雜腳本定義提供一種快捷支持,可方便地利用模板創(chuàng)建各種數(shù)據(jù)庫對象 方便對腳本的集中編輯、保存和管理??山⒁粋€項目對多個腳本進行管理,多個項目又可作為一個解決方案。SQL Server Management Studio“新建查詢”可打開查詢編輯器窗口,用于編輯SQL語句,執(zhí)行和查看結果。例如,查詢學生表的信息:2SQL Server Configuration Manager 管理與SQL Server相關聯(lián)的服務。啟動: “開始/程序/Microsoft SQL Server2

8、005/配置工具/SQL Server Configuration Manager” 。點擊左邊的“SQL Server 2005服務”,右邊窗格顯示所有SQL Server服務,包括已注冊的不同數(shù)據(jù)庫服務器實例的服務。這些服務是SQL Server提供各項管理和服務功能的基礎,如果服務停止,相關功能就無法使用。服務有3種狀態(tài):停止(紅色)、啟動(綠色)、暫停(藍色)。SQL Server的核心服務組件,是實際的數(shù)據(jù)庫服務器,該服務啟動后,客戶端才可以連接到服務器。一般的數(shù)據(jù)庫功能都由它提供。作業(yè)調度和管理,支持數(shù)據(jù)庫定時、自動備份、維護,監(jiān)視數(shù)據(jù)庫、異常告警等功能,必需和SQL Server

9、服務一起使用。対數(shù)據(jù)倉庫、商務智能和line-of-business解決方案提供分析支持偵聽對SQL Server 資源的傳入請求,提供計算機上安裝的 SQL Server 實例的有關信息支持基于全文索引的數(shù)據(jù)庫表的全文搜索服務可用于數(shù)據(jù)質量管理和數(shù)據(jù)清洗。通過數(shù)據(jù)分析和數(shù)據(jù)挖掘,實現(xiàn)數(shù)據(jù)提取、轉換和加載。 SQL Server2005網絡配置,支持完成本計算機上的 SQL Server服務器的網絡協(xié)議管理,如Shared Memory、TCP/IP、Named Pipes等,主要任務包括:啟動或停止某個網絡協(xié)議,配置網絡協(xié)議,例如修改協(xié)議所用端口、加密方法等。SQL Native Clien

10、t 配置,支持配置本服務器上運行的客戶機程序的網絡協(xié)議。其他客戶機上需要安裝并配置SQL Native Client來支持客戶機程序與SQL Server連接。主要功能:指定連接到 SQL Server 時的協(xié)議順序,配置客戶端連接協(xié)議,創(chuàng)建 SQL Server 的別名,使客戶端能用自定義連接字符串進行連接。 數(shù)據(jù)庫在信息系統(tǒng)中用于實現(xiàn)數(shù)據(jù)的存儲和管理,它是SQL Server的主要管理對象。3.2 SQL Server數(shù)據(jù)庫基礎數(shù)據(jù)庫基礎 數(shù)據(jù)庫不僅存儲數(shù)據(jù),所有與數(shù)據(jù)結構、數(shù)據(jù)處理操作有關的信息也都存儲其中。 因此,數(shù)據(jù)庫并不是簡單的數(shù)據(jù)集合!SQL Server數(shù)據(jù)庫管理的數(shù)據(jù)庫對象有

11、兩類:系統(tǒng)數(shù)據(jù)庫和用戶自定義數(shù)據(jù)庫。 SQL Server數(shù)據(jù)庫分類數(shù)據(jù)庫分類 (1)系統(tǒng)數(shù)據(jù)庫:存放SQL Server工作時所需要的系統(tǒng)級信息,系統(tǒng)自動維護和管理。數(shù)據(jù)庫數(shù)據(jù)庫主要作用主要作用master從整體上控制SQL Server系統(tǒng)和用戶數(shù)據(jù)庫的運行。保存登錄標識、系統(tǒng)配置、用戶數(shù)據(jù)庫基本信息等。該庫非常重要,應設置權限禁止一般用戶訪問,另外要及時備份model是新建數(shù)據(jù)庫的模板,包含了每個用戶數(shù)據(jù)庫都需要的一些系統(tǒng)表,SQL Server以它為基礎創(chuàng)建新的數(shù)據(jù)庫msdb支持SQL Server Agent服務,它記錄有關作業(yè)、警報、操作員等信息tempdb是一個臨時數(shù)據(jù)庫,它為S

12、QL Server的查詢、存儲過程等的執(zhí)行提供臨時存儲SQL Server數(shù)據(jù)庫分類數(shù)據(jù)庫分類 (2)用戶自定義數(shù)據(jù)庫:用戶根據(jù)數(shù)據(jù)管理的需要建立的數(shù)據(jù)庫,由用戶創(chuàng)建和維護。 例如,為了管理教務信息,可建立教務系統(tǒng)數(shù)據(jù)庫,為了實現(xiàn)網上書店,建立圖書銷售數(shù)據(jù)庫等。 SQL Server自帶了3個樣本數(shù)據(jù)庫,供用戶學習使用:AdventureWorks是個OLTP數(shù)據(jù)庫示例AdventureWorksDW是個OLAP數(shù)據(jù)庫倉庫示例AdventureWorksAS是個分析服務數(shù)據(jù)庫示例表:存儲數(shù)據(jù)的二維關系表表:存儲數(shù)據(jù)的二維關系表視圖:通過查詢從一個或多個數(shù)據(jù)視圖:通過查詢從一個或多個數(shù)據(jù)表獲得的

13、虛擬表,可簡化用戶數(shù)據(jù)表獲得的虛擬表,可簡化用戶數(shù)據(jù)顯示、增強數(shù)據(jù)庫安全性顯示、增強數(shù)據(jù)庫安全性可編程性:包括存儲過程、觸發(fā)器、規(guī)可編程性:包括存儲過程、觸發(fā)器、規(guī)則、函數(shù)、默認值等則、函數(shù)、默認值等安全性:包括用戶、角色、密鑰、證書等安全性:包括用戶、角色、密鑰、證書等 數(shù)據(jù)庫由一組存儲、管理和使用數(shù)據(jù)的對象構成。這些對象及相互關系構成了數(shù)據(jù)庫邏輯存儲結構。觀察master數(shù)據(jù)庫,可看到數(shù)據(jù)庫所包含的主要對象:SQL Server數(shù)據(jù)庫組成數(shù)據(jù)庫組成數(shù)據(jù)庫文件在磁盤上存儲的數(shù)據(jù)庫文件有三種:數(shù)據(jù)庫的物理存儲結構數(shù)據(jù)庫的物理存儲結構 主數(shù)據(jù)文件主數(shù)據(jù)文件:用來存儲數(shù)據(jù)庫的系統(tǒng)表和所有對象啟動信

14、息,并且存儲數(shù)據(jù)庫的數(shù)據(jù)。每個數(shù)據(jù)庫都有且只有1個主數(shù)據(jù)文件。主數(shù)據(jù)文件使用.MDF為擴展名。次數(shù)據(jù)文件次數(shù)據(jù)文件:用來存儲不能置于主數(shù)據(jù)文件中的其他數(shù)據(jù)。每個數(shù)據(jù)庫可以包含0個或多個次數(shù)據(jù)文件。擴展名為.NDF。事務日志文件事務日志文件:記錄SQL Server執(zhí)行的所有事務以及由這些事務操作引起的數(shù)據(jù)庫的變化,可用于恢復數(shù)據(jù)庫。 每個數(shù)據(jù)庫至少包含1個事務日志文件,擴展名為.LDF。每個數(shù)據(jù)庫至少包含2個文件:主數(shù)據(jù)文件主數(shù)據(jù)文件和事務日志文件事務日志文件。(2) 數(shù)據(jù)文件組l用戶自定義文件組(User_defined):指在創(chuàng)建或更改數(shù)據(jù)庫時,用戶明確創(chuàng)建的任何文件組。 l主文件組(Pr

15、imary):包含主數(shù)據(jù)文件和其它文件。所有系統(tǒng)表都包含在主文件組中 例如:將兩個不同物理磁盤上的數(shù)據(jù)庫文件組成一個文件組,在該組上建立的數(shù)據(jù)表中的數(shù)據(jù)會存儲在不同的物理設備上,查詢操作可能并行。 文件組是用戶對數(shù)據(jù)庫文件(不包括事務日志文件)進行分組而形成的。合理使用文件組對數(shù)據(jù)進行分布存儲,可以提高表中數(shù)據(jù)的操作性能。 若不指定用戶定義文件組,則所有數(shù)據(jù)文件都包含在主文件組中。一個文件只能是一個文件組的成員,一個文件或文件組只能被一個數(shù)據(jù)庫使用!3.3數(shù)據(jù)庫的創(chuàng)建與維護數(shù)據(jù)庫的創(chuàng)建與維護 1. 數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建 數(shù)據(jù)庫創(chuàng)建就是在磁盤上建立數(shù)據(jù)庫文件的過程。下面通過一個實例介紹使用Man

16、agement Studio創(chuàng)建數(shù)據(jù)庫的步驟和方法 。【例3.2】 創(chuàng) 建 數(shù) 據(jù)庫School,它包含主數(shù)據(jù)文件SchoolDB.MDF,初始大小為5MB,事務日志文件SchoolDB_log.LDF,并將這 兩 個 文 件 建 立 在C:DBExample文件夾下,其他按照默認設置不變?!纠?.2】操作步驟:操作步驟: 在桌面上選擇“我的電腦”,在C:下新建文件夾,命名為“DBExample”。 在對象資源管理器窗口右擊“數(shù)據(jù)庫”,從快捷菜單中選擇“新建數(shù)據(jù)庫”命令,將彈出 “新建數(shù)據(jù)庫”對話框。 提示:提示:SQL Server以model數(shù)據(jù)庫為模板創(chuàng)建一個新的數(shù)據(jù)庫,其數(shù)據(jù)文件的默認

17、值為:初始大小3MB,以1MB自動增長,不限制增長;事務日志文件的默認值為:初始大小1MB,按10%的比例自動增長,不限制增長。 將數(shù)據(jù)文件的邏輯名稱修改為“SchoolDB”,在路徑下的文本框輸入或點擊其后“”按鈕選擇修改數(shù)據(jù)庫文件的位置為“C:DBExample”。在初始大小后的文本框中把3改為5。 將日志文件的邏輯名稱修改為“SchoolDB_log”,“路徑”設置為“C:DBExample”。 單擊“確定”按鈕,數(shù)據(jù)庫創(chuàng)建完成。 “選擇頁”默認為“常規(guī)”,在“數(shù)據(jù)庫名稱”文本框中輸入“School”。 使用“我的電腦”查看“C:DBExample”文件夾,可以看到文件SchoolDB和

18、SchoolDB_log。建好的School數(shù)據(jù)庫在對象資源管理器展開的“數(shù)據(jù)庫”下可以看到,并且系統(tǒng)在School下自動創(chuàng)建了其包含的相關對象。 2. 數(shù)據(jù)庫維護數(shù)據(jù)庫維護 數(shù)據(jù)庫創(chuàng)建后,磁盤上的數(shù)據(jù)文件和日志文件名就不能改變了。對已存在的數(shù)據(jù)庫可以進行如下的修改:增加或刪除數(shù)據(jù)文件改變數(shù)據(jù)文件的大小和增長方式改變日志文件的大小和增長方式增加或刪除日志文件增加或刪除文件組重命名數(shù)據(jù)文件,書庫文件和日志文件邏輯名。(1)修改數(shù)據(jù)庫)修改數(shù)據(jù)庫右單擊需要修改的數(shù)據(jù)庫,在快捷菜單中選擇“屬性”命令,彈出“數(shù)據(jù)庫屬性”窗口。其中包含8個選項,每個選項下可對數(shù)據(jù)庫的相關屬性進行修改。(2)刪除數(shù)據(jù)庫)

19、刪除數(shù)據(jù)庫操作步驟如下:操作步驟如下: 右擊要刪除的數(shù)據(jù)庫,在彈出的快捷菜單中選擇“刪除”命令。 在彈出的“刪除對象”對話框中單擊“確定”按鈕,即可刪除要刪除的數(shù)據(jù)庫。 提示:提示:注意數(shù)據(jù)庫一旦被刪除,數(shù)據(jù)庫文件及其數(shù)據(jù)都被從服務器上的磁盤中刪除,該數(shù)據(jù)庫中所有的對象均被刪除,即永久性刪除,不能恢復,所以刪除操作要慎重!新建一個數(shù)據(jù)庫操作完成后,只是建立了數(shù)據(jù)庫框架和相關的系統(tǒng)對象, 接下來的任務是建立具體的數(shù)據(jù)表。例如:建立如下教務系統(tǒng)的數(shù)據(jù)庫,要建立6個數(shù)據(jù)表,并建立表之間的關系。具體定義見教材P37頁。3.4 數(shù)據(jù)表的創(chuàng)建和維護數(shù)據(jù)表的創(chuàng)建和維護 1)設計表結構)設計表結構,包括: 定

20、義字段(1)創(chuàng)建列名、數(shù)據(jù)類型 (2)設置列屬性也稱列約束。包括:PRIMARY KEY:主關鍵字約束UNIQUE:唯一性約束CHECK:檢查約束DEFAULT:默認值約束NOT NULL:非空約束 保存表3)表創(chuàng)建后,可輸入一些記錄數(shù)據(jù)來檢驗表結構。創(chuàng)建數(shù)據(jù)表的一般過程:2)建立表之間的關系:)建立表之間的關系:依次建立各個表,再建立關系。1SQL Server數(shù)據(jù)類型數(shù)據(jù)表中每一列都需要定義明確的數(shù)據(jù)類型,數(shù)據(jù)類型決定了該字段的數(shù)據(jù)取值類型、范圍和存儲格式。數(shù)據(jù)類型數(shù)據(jù)類型主要類型符號標識主要類型符號標識整型bigint、int、smallint 、tinyint浮點型float、real

21、、decimal、numeric字符型char、varchar、nchar、nvarchar日期時間型datetime、smalldatetime文本型text、ntext圖像型image貨幣型money、smallmoney位型bit二進制型binary、varbinary其他uniqueidentifierSQL Server的系統(tǒng)數(shù)據(jù)類型(1)整型 整型用于存儲整數(shù),有4種整型分別用于存儲不同范圍的整數(shù)。數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)范圍數(shù)據(jù)范圍占用存儲空間占用存儲空間bigint-263 263-18 個字節(jié)int-231 231-14 個字節(jié)smallint-215 215-12 個字節(jié)tin

22、yint0 2551 個字節(jié)float和real是近似數(shù)值型,以科學計數(shù)法表示數(shù)據(jù);decimal 和numeric是精確數(shù)值類型,以明確、完整的精度(固定精度和小數(shù)位數(shù))存儲數(shù)據(jù)。 (2)浮點型 浮點型用于存儲含小數(shù)的十進制數(shù)。 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)范圍數(shù)據(jù)范圍精確度精確度占用存儲空間占用存儲空間float-1.79E+3081.79E+308 可精確到第15位小數(shù)8 個字節(jié)real-3.40E+383.40E+38 可精確到第7位小數(shù)4 個字節(jié)decimal-1038+11038-1完整精度217 個字節(jié)numeric-1038+11038-1完整精度217 個字節(jié) 例如:指定某字段為精確

23、數(shù)值型,精度為5,小數(shù)位數(shù)為2,即decimal(5,2)或numeric(5,2) , 可表示數(shù)據(jù)范圍為:-999.99-999.99。decimal decimal 和和numericnumeric格式如下:格式如下:decimal |numeric(p,s)其中:p為精度,s為小數(shù)位數(shù),s的默認值為0。 decimal 和numeric的區(qū)別在于decimal不能應用于帶有Identity的列。(3)字符型和文本型 用于存儲由字母、符號和數(shù)字組成的字符串。字符串常量要用單引號作為起止界限 。例如:No1。SQL Server SQL Server 字符數(shù)據(jù)類型和文本數(shù)據(jù)類型字符數(shù)據(jù)類型和

24、文本數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型定義格式定義格式占用存儲空間占用存儲空間charchar(n),存儲,存儲ANSI字符,字符,n表示字符串的長表示字符串的長度,度,1=n =8000定長,最大定長,最大8KBvarcharvarchar (n) ,存儲,存儲ANSI字符,字符,n表示字符串表示字符串可達到的最大長度可達到的最大長度1=n =8000變長,最大變長,最大8KBncharnchar(n),存儲,存儲Unicode字符,字符,n表示字符串表示字符串的長度,的長度,1=n =4000定長,最大定長,最大8KBnvarcharnvarchar (n) ,存儲,存儲Unicode字符,字符,n

25、表示字符表示字符串可達到的最大長度串可達到的最大長度1=n ”或“” 鍵可以移向下一個字段。 當一條記錄最后一個字段輸入完畢按“回車”鍵后,光標將自動轉到下一行的第一個字段處,便可插入下一條記錄。 輸入完數(shù)據(jù),單擊“ ”按鈕或“文件/保存”菜單?;蛘邌螕簟氨?dbo.Student”窗口的“關閉”按鈕,添加的記錄就保存到數(shù)據(jù)表中。插入記錄:插入記錄:5. 數(shù)據(jù)表記錄維護數(shù)據(jù)表記錄維護 定位將要刪除的記錄,右擊后在彈出的快捷菜單中選擇“刪除”命令。2)刪除記錄1)修改記錄定位將要修改的記錄字段,對該字段值進行編輯修改。 彈出刪除確認對話框,單擊“是”按鈕即刪除選擇的記錄。數(shù)據(jù)的完整性控制:指保護

26、數(shù)據(jù)庫中的數(shù)據(jù)的正確性、有效性和相容性,防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息進入數(shù)據(jù)庫,并且使數(shù)據(jù)符合所描述的業(yè)務規(guī)則。SQL Server使提供了定義約束、檢查和保持數(shù)據(jù)符合約束的完整性控制機制。通過限制表的字段、記錄以及表之間的數(shù)據(jù)一致來保證數(shù)據(jù)完整性。3.5 數(shù)據(jù)表約束和數(shù)據(jù)完整性控制數(shù)據(jù)表約束和數(shù)據(jù)完整性控制 SQL Server常用完整性約束機制完整性完整性約束約束作用作用實體實體完整性完整性主關鍵字約束(Primary Key) 保證表中記錄行的唯一性唯一性約束(Unique)保證在非關鍵字字段不出現(xiàn)重復值域域完整性完整性 默認值約束(Default)對沒有插入值的列自動

27、添加表定義時對該列設置的默認值非空值約束(Not Null)限定某一列必須有值,即不允許空值檢查約束(Check)限定某一列中可接受的值或數(shù)據(jù)格式參照參照完整性完整性外關鍵字(Foreign Key) 通過表間關系約束字段值的有效性【例例3.43.4】在數(shù)據(jù)庫School中定義學生表T_Student的主鍵為“StudentCode”。【例例3.53.5】在數(shù)據(jù)庫School的學生表Student中不允許出現(xiàn)姓名且生日相同的記錄,并按姓名升序和生日降序排列,即對“StudentName”和“Birthday”字段組合定義唯一性約束。 實體完整性 主關鍵字約束(Primary Key)唯一性約束

28、(Unique) 主關鍵字是表中能保證表中記錄唯一性的一個或多個字段的組合。主鍵的值不能重復,且不能為空。一個表只能有一個主鍵。 唯一性約束可保證非主鍵列不輸入重復值。對非主鍵字段或字段的組合強制唯一性。 對允許空值的字段強制唯一性。 1. 實體完整性主要體現(xiàn)在表中記錄的唯一性?!纠?.43.4】在數(shù)據(jù)庫School中定義學生表T_Student的主鍵為“StudentCode”。 打開Student表的“表設計”窗口,右擊任一字段行,從快捷菜單中選擇“索引/鍵”命令,進入“索引/鍵”窗口。 選擇“添加”命令,將名稱修改為“IX_StudentNameBirth”。點擊“列”后“”按鈕,打開

29、索引列窗口,分別在兩行中選擇“StudentName”、“Birthday”,并選擇排序順序,點擊“確定”返回“索引/鍵”頁。在 “是唯一的”其后下拉列表框中選擇“是”?!纠?.53.5】在數(shù)據(jù)庫School的學生表Student中不允許出現(xiàn)姓名且生日相同的記錄,并按姓名升序和生日降序排列,即對“StudentName”和“Birthday”字段組合定義唯一性約束。 域完整性 默認值約束(Default) 非空值約束(Not Null) 檢查約束(Check) 默認值約束使用戶能夠定義一個值,每當用戶沒有在某一列中輸入值時,則系統(tǒng)將所定義的值提供給這一列 非空值約束要求記錄中的每一列必須有值

30、,即使是空(NULL)檢查約束限制某一列中可接受的值或格式 2. 域完整性主要體現(xiàn)在表中字段值的有效性?!纠?.63.6】在數(shù)據(jù)庫School的學生表T_Student中,設置性別Sex字段的默認值為“男”。 【例例3.73.7】在數(shù)據(jù)庫School的學生表T_Student中,設置StudentCode、StudentName、ClassCode、Sex字段為非空值,其他字段允許為空。 【例例3.83.8】在數(shù)據(jù)庫School的學生表T_Student中,設置Sex列的值只允許是“男”或“女”。 【例例3.63.6】在數(shù)據(jù)庫School的學生表T_Student中,設置性別Sex字段的默認

31、值為“男”。 打開Student表的“表設計”頁面,選擇“Sex”字段在 “列屬性”窗格中的“默認值或綁定”處填寫男。注意因為Sex字段是字符類型,男采用西文單引號擴起來。當保存表時,該約束設置即保存在數(shù)據(jù)庫中?!纠?.73.7】在數(shù)據(jù)庫School的學生表T_Student中,設置StudentCode、StudentName、ClassCode、Sex字段為非空值,其他字段允許為空。 打開Student表的“表設計”窗口,一個字段在新建立時默認允許空(),如果要設置為非空,只需要點擊該字段在允許空位置的單元格將“”去掉即可,再次點擊又可以設置允許空“”。當保存表時,該約束設置即保存在數(shù)據(jù)

32、庫中?!纠?.83.8】在數(shù)據(jù)庫School的學生表T_Student中,設置Sex列的值只允許是“男”或“女”。 打開Student表的“表設計”窗口,右擊任一字段行,從快捷菜單中選擇“CHECK約束”命令,進入“CHECK約束” 選擇“添加”命令,將名稱修改為 “CK_Student_Sex”。 點擊“表達式”后的按鈕出現(xiàn) “CHECK約束表達式”對話框,輸入:Sex = 男 or Sex = 女 將“表設計器”列表中的“強制用于INSERT 和 UPDATE”、“強制用于復制”、“在創(chuàng)建或重新啟用時檢查現(xiàn)存數(shù)據(jù)” 都改為“是”。參照完整性 : 外關鍵字(Foreign Key) 3.

33、參照完整性主要體現(xiàn)在通過表間關系約束字段的值的有效性。 兩個建立關聯(lián)關系的表中,在主表中相關字段定義了主鍵或唯一性約束,在從表中將相關字段定義為外外鍵。這樣,外鍵的取值必須是主鍵中存在的值或空值?!纠?.93.9】在數(shù)據(jù)庫School的學生表Student和Class表間建立關系,實施參照完整性約束。在該關系中,將Class的ClassCode字段設置為主鍵,將Student 的ClassCode設置為外鍵,并實施參照完整性。 【例例3.93.9】在數(shù)據(jù)庫School的學生表Student和Class表間建立關系,實施參照完整性約束。 打開外表Student表的“表設計”窗口,右擊并選擇“關

34、系”命令,出現(xiàn) “外鍵關系”對話框。 單擊“添加”按鈕,點擊“表和列規(guī)范”后的按鈕,出現(xiàn)“表和列”對話框,將主鍵表改為“Class”,關系的主鍵字段為ClassCode,在“外鍵表”Student下選擇外鍵字段ClassCode。 關系名自動變?yōu)椤癋K_Student_Class,該名可修改。 在“外鍵關系”窗口的 “表和列規(guī)范”、“INSERT 和 UPDATE 規(guī)范”進行設置,實施參照完整性。 選擇“關閉”按鈕完成關系創(chuàng)建。在數(shù)據(jù)庫管理系統(tǒng)中,關系表中的數(shù)據(jù)按記錄存儲。為了提高對數(shù)據(jù)記錄的查詢效率,通常采用索引方法來建立數(shù)據(jù)記錄的存取順序。索引與書的目錄或字典檢字索引的原理是一樣的。數(shù)據(jù)庫管理系統(tǒng)一般集成了多種復雜的快速查找算法,但這些算法基本上都是以數(shù)據(jù)記錄排序為前提的。 索引的

溫馨提示

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

評論

0/150

提交評論