第三章關(guān)系數(shù)據(jù)庫的創(chuàng)建與維護(hù)_第1頁
第三章關(guān)系數(shù)據(jù)庫的創(chuàng)建與維護(hù)_第2頁
第三章關(guān)系數(shù)據(jù)庫的創(chuàng)建與維護(hù)_第3頁
第三章關(guān)系數(shù)據(jù)庫的創(chuàng)建與維護(hù)_第4頁
第三章關(guān)系數(shù)據(jù)庫的創(chuàng)建與維護(hù)_第5頁
免費預(yù)覽已結(jié)束,剩余69頁可下載查看

付費下載

下載本文檔

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

文檔簡介

第3章關(guān)系數(shù)據(jù)庫的創(chuàng)建與維護(hù)數(shù)據(jù)庫管理系統(tǒng)概述123數(shù)據(jù)庫的創(chuàng)建和維護(hù)SQLServer數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)表的創(chuàng)建和維護(hù)45數(shù)據(jù)表約束和數(shù)據(jù)完整性6索引的創(chuàng)建與維護(hù)13.1SQLServer數(shù)據(jù)庫管理系統(tǒng)概述2數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,DBMS)是位于應(yīng)用程序與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。數(shù)據(jù)庫應(yīng)用程序提出數(shù)據(jù)操作要求,通過DBMS,才能訪問數(shù)據(jù)庫。數(shù)據(jù)庫管理員也是通過DBMS對數(shù)據(jù)庫實施管理。DBMS是創(chuàng)建和使用數(shù)據(jù)庫必不可少的軟件!1.數(shù)據(jù)庫管理系統(tǒng)3.1SQLServer2005概述3數(shù)據(jù)定義數(shù)據(jù)操縱數(shù)據(jù)庫運行管理數(shù)據(jù)庫維護(hù)支持?jǐn)?shù)據(jù)庫語言2.數(shù)據(jù)庫管理系統(tǒng)的主要功能建立數(shù)據(jù)庫,定義數(shù)據(jù)庫的模式結(jié)構(gòu)、數(shù)據(jù)庫的完整性約束規(guī)則和安全性控制方式實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的檢索以及更新(包括插入、刪除和修改)包括并發(fā)控制、安全性檢查、完整性約束條件的檢查和執(zhí)行、數(shù)據(jù)庫的內(nèi)部管理和維護(hù)數(shù)據(jù)庫的備份和恢復(fù)、導(dǎo)入和導(dǎo)出功能,數(shù)據(jù)庫的重組功能和性能監(jiān)視、分析功能等支持使用數(shù)據(jù)庫語言來使用和管理數(shù)據(jù)庫,關(guān)系型DBMS支持SQL語言3.1SQLServer2005概述4SQLServer是Microsoft公司在Windows平臺上開發(fā)的一個高性能關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它支持構(gòu)建基于網(wǎng)絡(luò)的信息系統(tǒng)。3.1SQLServer2005概述3.MicrosoftSQLServer2005圖形化的操作環(huán)境,易學(xué)易用支持高性能應(yīng)用可伸縮性和高度可用性與Internet應(yīng)用的集成支持?jǐn)?shù)據(jù)倉庫分析54.SQLServer主要管理工具

SQLServer提供了一整套數(shù)據(jù)庫系統(tǒng)管理工具和實用程序,打開“開始/程序/MicrosoftSQLServer2005”菜單即可看到如下程序組:3.1SQLServer2005概述6SQLServerManagementStudio

SQLServerManagementStudio是一個管理平臺,集成了多個圖形工具和豐富的腳本支持。用于建立、訪問、配置、控制、管理和開發(fā)數(shù)據(jù)庫。3.1SQLServer2005概述7啟動SQLServerManagementStudio選擇“開始/程序/MicrosoftSQLServer2005/SQLServerManagementStudio”菜單出現(xiàn)“連接到服務(wù)器”窗口。服務(wù)器類型:指明要連接的服務(wù)。如果是管理和訪問數(shù)據(jù)庫服務(wù)器,選擇“數(shù)據(jù)庫引擎”。服務(wù)器名稱:選擇或輸入該服務(wù)器的計算機(jī)名稱或IP地址,也可輸入“.”或“(local)”,表示本機(jī)服務(wù)器。身份驗證:指明驗證方式。注意SQLServer身份驗證需用戶名和密碼,默認(rèn)用戶為“sa”

。3.1SQLServer2005概述8SQLServerManagementStudio窗口已在本SQLServerManagementStudio下注冊的服務(wù)器,可啟動或停止服務(wù)器,更改連接選項所有數(shù)據(jù)庫對象的樹型視圖??梢詾g覽、管理、維護(hù)所有數(shù)據(jù)庫對象。當(dāng)選擇某一數(shù)據(jù)庫對象后,中間的“摘要”窗口自動顯示該對象所包含的下一級對象或該對象的詳細(xì)內(nèi)容。創(chuàng)建數(shù)據(jù)庫對象所需要使用的基本SQL語句段的文件,對復(fù)雜腳本定義提供一種快捷支持,可方便地利用模板創(chuàng)建各種數(shù)據(jù)庫對象方便對腳本的集中編輯、保存和管理??山⒁粋€項目對多個腳本進(jìn)行管理,多個項目又可作為一個解決方案。9“新建查詢”可打開查詢編輯器窗口,用于編輯SQL語句,執(zhí)行和查看結(jié)果。例如,查詢學(xué)生表的信息:SQLServerManagementStudio窗口10SQLServerConfigurationManager管理與SQLServer相關(guān)聯(lián)的服務(wù)。啟動:“開始/程序/MicrosoftSQLServer2005/配置工具/SQLServerConfigurationManager”。點擊左邊的“SQLServer2005服務(wù)”,右邊窗格顯示所有SQLServer服務(wù),包括已注冊的不同數(shù)據(jù)庫服務(wù)器實例的服務(wù)。這些服務(wù)是SQLServer提供各項管理和服務(wù)功能的基礎(chǔ),如果服務(wù)停止,相關(guān)功能就無法使用。服務(wù)有3種狀態(tài):停止(紅色)、啟動(綠色)、暫停(藍(lán)色)。SQLServer的核心服務(wù)組件,是實際的數(shù)據(jù)庫服務(wù)器,該服務(wù)啟動后,客戶端才可以連接到服務(wù)器。一般的數(shù)據(jù)庫功能都由它提供。作業(yè)調(diào)度和管理,支持?jǐn)?shù)據(jù)庫定時、自動備份、維護(hù),監(jiān)視數(shù)據(jù)庫、異常告警等功能,必需和SQLServer服務(wù)一起使用。対數(shù)據(jù)倉庫、商務(wù)智能和line-of-business解決方案提供分析支持偵聽對SQLServer資源的傳入請求,提供計算機(jī)上安裝的SQLServer實例的有關(guān)信息支持基于全文索引的數(shù)據(jù)庫表的全文搜索服務(wù)可用于數(shù)據(jù)質(zhì)量管理和數(shù)據(jù)清洗。通過數(shù)據(jù)分析和數(shù)據(jù)挖掘,實現(xiàn)數(shù)據(jù)提取、轉(zhuǎn)換和加載。11SQLServer2005網(wǎng)絡(luò)配置,支持完成本計算機(jī)上的SQLServer服務(wù)器的網(wǎng)絡(luò)協(xié)議管理,如SharedMemory、TCP/IP、NamedPipes等,主要任務(wù)包括:啟動或停止某個網(wǎng)絡(luò)協(xié)議,配置網(wǎng)絡(luò)協(xié)議,例如修改協(xié)議所用端口、加密方法等。SQLNativeClient配置,支持配置本服務(wù)器上運行的客戶機(jī)程序的網(wǎng)絡(luò)協(xié)議。其他客戶機(jī)上需要安裝并配置SQLNativeClient來支持客戶機(jī)程序與SQLServer連接。主要功能:指定連接到SQLServer時的協(xié)議順序,配置客戶端連接協(xié)議,創(chuàng)建SQLServer的別名,使客戶端能用自定義連接字符串進(jìn)行連接。3.1SQLServer2005概述123.2SQLServer數(shù)據(jù)庫基礎(chǔ)13數(shù)據(jù)庫不僅存儲數(shù)據(jù),所有與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)完整性約束、數(shù)據(jù)處理操作有關(guān)的信息也都存儲其中。

因此,數(shù)據(jù)庫并不是簡單的數(shù)據(jù)集合!3.2SQLServer數(shù)據(jù)庫基礎(chǔ)SQLServer管理的主要對象是數(shù)據(jù)庫。14SQLServer中數(shù)據(jù)庫對象有兩類:系統(tǒng)數(shù)據(jù)庫和用戶自定義數(shù)據(jù)庫。1.SQLServer中數(shù)據(jù)庫的分類

系統(tǒng)數(shù)據(jù)庫:存放SQLServer工作時所需要的系統(tǒng)級信息,系統(tǒng)自動維護(hù)和管理。數(shù)據(jù)庫主要作用master從整體上控制SQLServer系統(tǒng)和用戶數(shù)據(jù)庫的運行。保存登錄標(biāo)識、系統(tǒng)配置、用戶數(shù)據(jù)庫基本信息等。該庫非常重要,應(yīng)設(shè)置權(quán)限禁止一般用戶訪問,另外要及時備份model是新建數(shù)據(jù)庫的模板,包含了每個用戶數(shù)據(jù)庫都需要的一些系統(tǒng)表,SQLServer以它為基礎(chǔ)創(chuàng)建新的數(shù)據(jù)庫msdb支持SQLServerAgent服務(wù),它記錄有關(guān)作業(yè)、警報、操作員等信息tempdb是一個臨時數(shù)據(jù)庫,它為SQLServer的查詢、存儲過程等的執(zhí)行提供臨時存儲3.2SQLServer數(shù)據(jù)庫基礎(chǔ)15

用戶自定義數(shù)據(jù)庫:用戶根據(jù)數(shù)據(jù)管理的需要建立的數(shù)據(jù)庫,由用戶創(chuàng)建和維護(hù)。例如,為了管理教務(wù)信息,可建立教務(wù)系統(tǒng)數(shù)據(jù)庫,為了實現(xiàn)網(wǎng)上書店,建立圖書銷售數(shù)據(jù)庫等。

SQLServer自帶了3個樣本數(shù)據(jù)庫,供用戶學(xué)習(xí)使用:AdventureWorks是個OLTP數(shù)據(jù)庫示例AdventureWorksDW是個OLAP數(shù)據(jù)庫倉庫示例AdventureWorksAS是個分析服務(wù)數(shù)據(jù)庫示例3.2SQLServer數(shù)據(jù)庫基礎(chǔ)16表:存儲數(shù)據(jù)的二維關(guān)系表視圖:通過查詢從一個或多個數(shù)據(jù)表獲得的虛擬表,可簡化用戶數(shù)據(jù)顯示、增強(qiáng)數(shù)據(jù)庫安全性可編程性:包括存儲過程、觸發(fā)器、規(guī)則、函數(shù)、默認(rèn)值等安全性:包括用戶、角色、密鑰、證書等SQLServer中,一組存儲、管理和使用數(shù)據(jù)的對象構(gòu)成了數(shù)據(jù)庫的邏輯存儲結(jié)構(gòu)。觀察master數(shù)據(jù)庫包含的主要對象:2.SQLServer數(shù)據(jù)庫的存儲結(jié)構(gòu)數(shù)據(jù)庫的邏輯存儲結(jié)構(gòu)17

數(shù)據(jù)庫的物理存儲結(jié)構(gòu)主數(shù)據(jù)文件:用來存儲數(shù)據(jù)庫的系統(tǒng)表和所有對象啟動信息,并且存儲數(shù)據(jù)庫的數(shù)據(jù)。每個數(shù)據(jù)庫都有且只有1個主數(shù)據(jù)文件。主數(shù)據(jù)文件使用.MDF為擴(kuò)展名。次數(shù)據(jù)文件:用來存儲不能置于主數(shù)據(jù)文件中的其他數(shù)據(jù)。每個數(shù)據(jù)庫可以包含0個或多個次數(shù)據(jù)文件。擴(kuò)展名為.NDF。事務(wù)日志文件:記錄SQLServer執(zhí)行的所有事務(wù)以及由這些事務(wù)操作引起的數(shù)據(jù)庫的變化,可用于恢復(fù)數(shù)據(jù)庫。每個數(shù)據(jù)庫至少包含1個事務(wù)日志文件,擴(kuò)展名為.LDF。每個數(shù)據(jù)庫至少包含2個文件:主數(shù)據(jù)文件和事務(wù)日志文件。3.2SQLServer數(shù)據(jù)庫基礎(chǔ)數(shù)據(jù)庫以文件方式存儲在磁盤上。所有數(shù)據(jù)庫對象都存儲在這些文件中:18用戶自定義文件組(User_defined):指用戶創(chuàng)建的任何文件組,存儲其他次數(shù)據(jù)文件,可以多個。

主文件組(Primary):包含主數(shù)據(jù)文件和若干次數(shù)據(jù)文件。所有系統(tǒng)表都包含在主文件組中

為了更好地對數(shù)據(jù)文件進(jìn)行管理和實現(xiàn)分布存儲,SQLServer可對數(shù)據(jù)庫文件(不包括事務(wù)日志文件)進(jìn)行分組管理。合理使用文件組對數(shù)據(jù)進(jìn)行分布存儲,可以提高表中數(shù)據(jù)的操作性能。3.2SQLServer數(shù)據(jù)庫基礎(chǔ)19例如:將兩個不同物理磁盤上的數(shù)據(jù)庫文件組成一個文件組,在該組上建立的數(shù)據(jù)表中的數(shù)據(jù)會存儲在不同的物理設(shè)備上,查詢操作可并行。合理使用文件組對數(shù)據(jù)進(jìn)行分布存儲,可以提高表中數(shù)據(jù)的操作性能。3.2SQLServer數(shù)據(jù)庫基礎(chǔ)注意:若不指定用戶定義文件組,則所有數(shù)據(jù)文件都包含在主文件組中。一個文件只能是一個文件組的成員一個文件或文件組只能被一個數(shù)據(jù)庫使用!203.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)211.數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫創(chuàng)建有多種方式。下面通過實例介紹使用ManagementStudio創(chuàng)建數(shù)據(jù)庫的步驟和方法?!纠?.2】在C:\DBExample文件夾下創(chuàng)建數(shù)據(jù)庫School,它包含主數(shù)據(jù)文件SchoolDB.MDF,初始大小為5MB,事務(wù)日志文件SchoolDB_log.LDF,其他按照默認(rèn)設(shè)置不變。3.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)①在桌面上選擇“我的電腦”,在C:\下新建文件夾,命名為“DBExample”。②在對象資源管理器窗口右擊“數(shù)據(jù)庫”,從快捷菜單中選擇“新建數(shù)據(jù)庫”命令,將彈出“新建數(shù)據(jù)庫”對話框。22提示:SQLServer以model數(shù)據(jù)庫為模板創(chuàng)建一個新的數(shù)據(jù)庫,其數(shù)據(jù)文件的默認(rèn)值為:初始大小3MB,以1MB自動增長,不限制增長;事務(wù)日志文件的默認(rèn)值為:初始大小1MB,按10%的比例自動增長,不限制增長。3.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)23④將數(shù)據(jù)文件的邏輯名稱修改為“SchoolDB”,在路徑下的文本框輸入或點擊其后“…”按鈕選擇修改數(shù)據(jù)庫文件的位置為“C:\DBExample”。在初始大小后的文本框中把3改為5。⑤將日志文件的邏輯名稱修改為“SchoolDB_log”,“路徑”設(shè)置為“C:\DBExample”。⑥單擊“確定”按鈕,數(shù)據(jù)庫創(chuàng)建完成。③“選擇頁”默認(rèn)為“常規(guī)”,在“數(shù)據(jù)庫名稱”文本框中輸入“School”。3.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)24使用“我的電腦”查看“C:\DBExample”文件夾,可以看到文件SchoolDB和SchoolDB_log。建好的School數(shù)據(jù)庫在對象資源管理器展開的“數(shù)據(jù)庫”下可以看到,并且系統(tǒng)在School下自動創(chuàng)建了其包含的相關(guān)對象。

252.數(shù)據(jù)庫維護(hù)對已存在的數(shù)據(jù)庫可以進(jìn)行如下的修改:增加或刪除數(shù)據(jù)文件改變數(shù)據(jù)文件的大小和增長方式改變?nèi)罩疚募拇笮『驮鲩L方式增加或刪除日志文件增加或刪除文件組重命名數(shù)據(jù)庫名、數(shù)據(jù)文件和日志文件邏輯名。注意:數(shù)據(jù)庫創(chuàng)建后,磁盤上的數(shù)據(jù)文件和日志文件名就不能改變了。3.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)26修改數(shù)據(jù)庫右單擊需修改的數(shù)據(jù)庫,在快捷菜單中選擇“屬性”命令,彈出“數(shù)據(jù)庫屬性”窗口。其中包含8個選項,每個選項下可對數(shù)據(jù)庫的相關(guān)屬性進(jìn)行修改。3.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)27刪除數(shù)據(jù)庫①右擊要刪除的數(shù)據(jù)庫,在彈出的快捷菜單中選擇“刪除”命令。②在彈出的“刪除對象”對話框中單擊“確定”按鈕,即可刪除要刪除的數(shù)據(jù)庫。提示:注意數(shù)據(jù)庫一旦被刪除,數(shù)據(jù)庫文件及其數(shù)據(jù)都被從服務(wù)器上的磁盤中刪除,該數(shù)據(jù)庫中所有的對象均被刪除,即永久性刪除,不能恢復(fù),所以刪除操作要慎重!3.3數(shù)據(jù)庫的創(chuàng)建與維護(hù)283.4數(shù)據(jù)表的創(chuàng)建與維護(hù)29新建一個數(shù)據(jù)庫只是建立了數(shù)據(jù)庫框架和相關(guān)的系統(tǒng)對象,接下來的任務(wù)是在庫中創(chuàng)建各個對象,最基本的是數(shù)據(jù)表。例如:建立如下教務(wù)系統(tǒng)的數(shù)據(jù)庫,要建立6個數(shù)據(jù)表,并建立表之間的關(guān)系。具體定義見教材P37頁。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)301)設(shè)計表結(jié)構(gòu),包括:定義字段(1)創(chuàng)建列名、數(shù)據(jù)類型(2)設(shè)置列屬性也稱列約束。包括:PRIMARYKEY:主關(guān)鍵字約束UNIQUE:唯一性約束CHECK:檢查約束DEFAULT:默認(rèn)值約束NOTNULL:非空約束IDENTITY:標(biāo)識規(guī)范保存表3)表創(chuàng)建后,可輸入一些記錄數(shù)據(jù)來檢驗表結(jié)構(gòu)。創(chuàng)建數(shù)據(jù)表的一般過程:2)建立表之間的關(guān)系:依次建立各個表,再建立關(guān)系。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)311.SQLServer數(shù)據(jù)類型數(shù)據(jù)表中每一列都需要定義明確的數(shù)據(jù)類型,數(shù)據(jù)類型決定了該字段的數(shù)據(jù)取值類型、范圍和存儲格式。數(shù)據(jù)類型主要類型符號標(biāo)識整型bigint、int、smallint、tinyint浮點型float、real、decimal、numeric字符型char、varchar、nchar、nvarchar日期時間型datetime、smalldatetime文本型text、ntext圖像型image貨幣型money、smallmoney位型bit二進(jìn)制型binary、varbinary其他uniqueidentifierSQLServer的系統(tǒng)數(shù)據(jù)類型3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)32(1)整型整型用于存儲整數(shù),有4種整型分別用于存儲不同范圍的整數(shù)。數(shù)據(jù)類型數(shù)據(jù)范圍占用存儲空間bigint-263~263-18個字節(jié)int-231~231-14個字節(jié)smallint-215~215-12個字節(jié)tinyint0~2551個字節(jié)3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)33float和real是近似數(shù)值型,以科學(xué)計數(shù)法表示數(shù)據(jù);decimal和numeric是精確數(shù)值類型,以明確、完整的精度(固定精度和小數(shù)位數(shù))存儲數(shù)據(jù)。(2)浮點型浮點型用于存儲含小數(shù)的十進(jìn)制數(shù)。

數(shù)據(jù)類型數(shù)據(jù)范圍精確度占用存儲空間float-1.79E+308~1.79E+308可精確到第15位小數(shù)8個字節(jié)real-3.40E+38~3.40E+38可精確到第7位小數(shù)4個字節(jié)decimal-1038+1~1038-1完整精度2~17個字節(jié)numeric-1038+1~1038-1完整精度2~17個字節(jié)3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)34例如:指定某字段為精確數(shù)值型,精度為5,小數(shù)位數(shù)為2,即decimal(5,2)或numeric(5,2),可表示數(shù)據(jù)范圍為:-999.99~999.99。decimal和numeric格式如下:decimal|numeric(p[,s])其中:p為精度,s為小數(shù)位數(shù),s的默認(rèn)值為0。

decimal和numeric的區(qū)別在于decimal不能應(yīng)用于帶有Identity的列。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)35(3)字符型和文本型

用于存儲由字母、符號和數(shù)字組成的字符串。字符串常量要用單引號作為起止界限。例如:’No1’。SQLServer字符數(shù)據(jù)類型和文本數(shù)據(jù)類型數(shù)據(jù)類型定義格式占用存儲空間charchar(n),存儲ANSI字符,n表示字符串的長度,1=<n<=8000定長,最大8KBvarcharvarchar(n),存儲ANSI字符,n表示字符串可達(dá)到的最大長度1=<n<=8000變長,最大8KBncharnchar(n),存儲Unicode字符,n表示字符串的長度,1=<n<=4000定長,最大8KBnvarcharnvarchar(n),存儲Unicode字符,n表示字符串可達(dá)到的最大長度1=<n<=4000變長,最大8KBtexttext,存儲ANSI字符變長,大于8KB3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)36char(n)、nchar(n)是定長字符類型,字符串長度超出n的部分被截去;如不足n時,則在串的尾部添加空格以達(dá)到長度n。如char(5),當(dāng)輸入'Tom'字符串時,其存儲長度為5個字節(jié),實際字符串值為'Tom

'varchar(n)、nvarchar(n)是變長字符類型,長度為字符串的實際字符個數(shù)。如varchar(5),當(dāng)輸入‘Tom’字符串時,其存儲長度為3個字節(jié),實際字符串值為'Tom'。

Text是文本數(shù)據(jù)類型,用來存儲可變長度的大量字符數(shù)據(jù),其存儲長度最多可達(dá)20億個ASCII字符。定長和變長的區(qū)別通常,當(dāng)某一字段的字符串長度固定時使用char類型;當(dāng)字符串長度明顯不一致時使用varchar類型。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)37char(n)和varchar(n)存儲ANSI字符,用1個字節(jié)(8bits)表示一個字符,每個漢字占2個字節(jié)。nchar(n)和nvarchar(n)存儲Unicode字符集,用2個字節(jié)(16bits)表示一個字符。通常,char(n)和varchar(n)適合存儲英文字符串。nchar(n)和nvarchar(n)適合存儲中文或中英文混合字符串。例如:char(5)可存儲5個英文字符,但只能存儲2個漢字,而nchar(5)可存儲5個英文或漢字構(gòu)成的字符串。ANSI和Unicode的區(qū)別

ANSI(AmericanNationalStandardInstitite:美國國家標(biāo)準(zhǔn)協(xié)會)和Unicode(UniversalMultiple-OctetCodedCharacterSet:通用字符集)是兩種不同的編碼標(biāo)準(zhǔn)。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)38(4)日期時間型用來存儲日期和時間數(shù)據(jù),默認(rèn)數(shù)據(jù)格式為:“YYYY-MM-DDHH:MM:SS”。例如:“2012-12-0812:35:29”數(shù)據(jù)類型數(shù)據(jù)范圍占用存儲空間datetime1753年1月1日~9999年12月31日之間的日期時間8個字節(jié)smalldatetime1900年1月1日~2079年6月6日之間的日期時間4個字節(jié)使用時也可只存儲日期或時間。

3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)39(5)圖像數(shù)據(jù)類型用于存儲照片、圖片等,實際存儲的是可變長度的二進(jìn)制數(shù)據(jù),其長度最大可達(dá)231-1個字節(jié)。注意:SQLServer不能顯示image類型的數(shù)據(jù),必須由應(yīng)用程序來存取和顯示。

在實際應(yīng)用中,通常將圖像以文件的形式存儲在磁盤上,而只將圖像文件的路徑和文件名以字符串類型記錄在數(shù)據(jù)庫中。應(yīng)用程序讀取數(shù)據(jù)庫獲得存取路徑,然后訪問磁盤文件。其他多媒體類型數(shù)據(jù)處理方法類似。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)40(6)貨幣型用十進(jìn)制數(shù)表示貨幣值。貨幣型實際上是一種小數(shù),但小數(shù)點后只有4位,且自動四舍五入。數(shù)據(jù)類型數(shù)據(jù)范圍占用存儲空間money-922,337,203,685,477.5808~+922,337,203,685,477.5807精度為4位小數(shù)8個字節(jié)smallmoney-214,748.3648~214,748.3647,精度為4位小數(shù)4個字節(jié)3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)41(8)uniqueidentifier唯一標(biāo)識符類型。數(shù)據(jù)庫管理系統(tǒng)會隨著記錄的加入自動為字段產(chǎn)生唯一標(biāo)識符。它是一個16字節(jié)長的二進(jìn)制數(shù)。(7)位類型bit用來作為邏輯變量使用,其數(shù)值有兩種取值:1和0

,可分別代表TRUE和FALSE或YES和No等。例如:在Student表中,字段LiveInDorm存儲“是否住?!毙畔⑹褂胋it。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)42教務(wù)系統(tǒng)數(shù)據(jù)庫中有關(guān)字段類型的選取舉例字段名稱字段說明類型定義StudentCode學(xué)號char(4)StudentName學(xué)生姓名nvarchar(20)ClassCode班號char(2)Sex性別nchar(1)Birthday出生日期smalldatetimeLiveInDorm是否住校bitTelephone聯(lián)系電話nvarchar(40)Photo照片(存放路徑和文件名)nvarchar(50)Description個人介紹nvarchar(100)PassWord密碼nvarchar(16)學(xué)生表Student3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)43課程表Course字段名稱字段說明類型定義CourseCode課程號char(3)CourseName課程名稱nvarchar(16)Credit學(xué)分numeric(3,1)Academy開課學(xué)院nvarchar(5)ClassTime上課時間nvarchar(20)ClassPlace上課地點nvarchar(20)ClassHour上課學(xué)時tinyintLabHour實驗學(xué)時tinyintTotalSeats最大學(xué)生數(shù)smallintLeftSeats剩余名額smallintTeacherCode任課教師char(4)Description課程簡介textGradeAnalysis成績分析評價nvarchar(100)3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)44成績表Grade字段名稱字段說明類型定義StudentCode學(xué)號char(4)CourseCode課程號char(3)Grade成績numeric(4,1)WriteStamp錄入時間datetime3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)452.?dāng)?shù)據(jù)表創(chuàng)建【例3.3】在數(shù)據(jù)庫School中建立學(xué)生表Student,完成各字段的定義。①在對象資源管理器中,選擇“數(shù)據(jù)庫/School/表”,右擊后從快捷菜單中選擇“新建表”命令,彈出“表設(shè)計”窗口。②在表設(shè)計窗口,根據(jù)表的設(shè)計結(jié)構(gòu)依次完成每個字段的名稱和數(shù)據(jù)類型設(shè)置。④在對象資源管理器展開“數(shù)據(jù)庫/School/表”可以看到創(chuàng)建好的數(shù)據(jù)表dbo.Student。③在完成所有字段設(shè)計后,可在“屬性”窗格的“(名稱)”處輸入表名“Student”,單擊工具欄上的“”按鈕或“文件/保存”菜單或關(guān)閉表設(shè)計窗口,數(shù)據(jù)表創(chuàng)建完成。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)46屬性設(shè)置區(qū):字段描述、默認(rèn)值、小數(shù)精度及位數(shù)等數(shù)據(jù)表名稱設(shè)置設(shè)計表中字段保存按鈕47修改表結(jié)構(gòu)

增加字段、刪除字段、修改字段屬性等。

3.數(shù)據(jù)表維護(hù)①在對象資源管理器中右擊要修改的“表”,在彈出菜單中選擇“修改”命令,出現(xiàn)“表設(shè)計”窗口。②在“表設(shè)計”窗口,選中需要修改的一行,右擊后彈出快捷菜單可以對表設(shè)置主鍵、插入列、刪除列等。也可通過拖動行來調(diào)整字段的順序。③對表的結(jié)構(gòu)修改完畢后,保存對表結(jié)構(gòu)修改。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)48更改表名刪除數(shù)據(jù)表①在對象資源管理器中,右擊要刪除的表,在快捷菜單中選擇“刪除”命令。①在對象資源管理器中選擇要改名的表右擊,在快捷菜單上選擇“重命名”命令。②在表名位置輸入新的表名即可。②在彈出的“刪除對象”對話框中,選擇“確定”按鈕,即可刪除該表。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)494.數(shù)據(jù)表記錄插入

在實際運行的信息系統(tǒng)中,數(shù)據(jù)表必須在完全創(chuàng)建好后(字段建好、各項數(shù)據(jù)完整性約束設(shè)置完成),才添加記錄。而且最好是通過應(yīng)用程序添加。

在系統(tǒng)開發(fā)過程中,可以通過手工添加一些記錄來檢查數(shù)據(jù)表定義是否合理,調(diào)試程序功能是否可用等。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)50手工將記錄添加在數(shù)據(jù)表的尾部,可以向表中插入多條記錄。例如:向Student表添加記錄。操作方法:①在對象資源管理器中,右擊數(shù)據(jù)表dbo.Student,②選“打開表”,出現(xiàn)數(shù)據(jù)窗口“表-dbo.Student”。③在該數(shù)據(jù)窗口中,可插入記錄、修改記錄和刪除記錄。右擊數(shù)據(jù)表dbo.Student3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)51①將光標(biāo)定位在表尾的下一行,逐字段輸入值,按方向鍵“->”或“<Tab>”鍵可以移向下一個字段。②當(dāng)一條記錄最后一個字段輸入完按“回車”鍵,光標(biāo)自動轉(zhuǎn)到下一行第一個字段,可插入下一條記錄。

③輸入完數(shù)據(jù),單擊“”按鈕或“文件/保存”菜單?;騿螕簟氨?dbo.Student”窗口的“關(guān)閉”按鈕,添加的記錄就保存到數(shù)據(jù)表中。插入記錄:

注意:“不允許為空”字段必須輸入值。525.數(shù)據(jù)表記錄維護(hù)①定位將要刪除的記錄,右擊后在彈出的快捷菜單中選擇“刪除”命令。刪除記錄修改記錄定位將要修改的記錄字段,對該字段值進(jìn)行編輯修改。②彈出刪除確認(rèn)對話框,單擊“是”按鈕即刪除選擇的記錄。3.4數(shù)據(jù)表的創(chuàng)建與維護(hù)533.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

54數(shù)據(jù)的完整性控制:指保護(hù)數(shù)據(jù)庫中的數(shù)據(jù)的正確性、有效性和相容性,防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息進(jìn)入數(shù)據(jù)庫,并且使數(shù)據(jù)符合所描述的業(yè)務(wù)規(guī)則。SQLServer使提供了定義約束、檢查和保持?jǐn)?shù)據(jù)符合約束的完整性控制機(jī)制。通過限制表的字段、記錄以及表之間的數(shù)據(jù)一致來保證數(shù)據(jù)完整性。3.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

55SQLServer常用完整性約束機(jī)制完整性約束作用實體完整性主關(guān)鍵字約束(PrimaryKey)

保證表中記錄行的唯一性唯一性約束(Unique)保證在非關(guān)鍵字字段不出現(xiàn)重復(fù)值域完整性

默認(rèn)值約束(Default)對沒有插入值的列自動添加表定義時對該列設(shè)置的默認(rèn)值非空值約束(NotNull)限定某一列必須有值,即不允許空值檢查約束(Check)限定某一列中可接受的值或數(shù)據(jù)格式參照完整性外關(guān)鍵字(ForeignKey)

通過表間關(guān)系約束字段值的有效性3.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

56【例3.4】在數(shù)據(jù)庫School中定義學(xué)生表T_Student的主鍵為“StudentCode”?!纠?.5】在數(shù)據(jù)庫School的學(xué)生表Student中不允許出現(xiàn)姓名且生日相同的記錄,并按姓名升序和生日降序排列,即對“StudentName”和“Birthday”字段組合定義唯一性約束。

實體完整性

主關(guān)鍵字約束(PrimaryKey)唯一性約束(Unique)

主關(guān)鍵字是能保證表中記錄唯一性的一個或多個字段的組合。主鍵的值不能重復(fù),且不能為空。一個表只能有一個主鍵。

唯一性約束可保證非主鍵列不輸入重復(fù)值。對非主鍵字段或字段的組合強(qiáng)制唯一性。對允許空值的字段強(qiáng)制唯一性。

1.

實體完整性主要體現(xiàn)在表中記錄的唯一性。57【例3.4】在數(shù)據(jù)庫School中定義學(xué)生表T_Student的主鍵為“StudentCode”。

3.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

58①

打開Student表的“表設(shè)計”窗口,右擊任一字段行,從快捷菜單中選擇“索引/鍵”命令,進(jìn)入“索引/鍵”窗口。②

選擇“添加”命令,將名稱修改為“IX_StudentNameBirth”。點擊“列”后“…”按鈕,打開索引列窗口,分別在兩行中選擇“StudentName”、“Birthday”,并選擇排序順序,點擊“確定”返回“索引/鍵”頁。在“是唯一的”其后下拉列表框中選擇“是”?!纠?.5】在數(shù)據(jù)庫School的學(xué)生表Student中不允許出現(xiàn)姓名且生日相同的記錄,并按姓名升序和生日降序排列,即對“StudentName”和“Birthday”字段組合定義唯一性約束。

59域完整性默認(rèn)值約束(Default)

非空值約束(NotNull)

檢查約束(Check)

默認(rèn)值約束使用戶能夠定義一個值,每當(dāng)用戶沒有在某一列中輸入值時,則系統(tǒng)將所定義的值提供給這一列

非空值約束要求記錄中的每一列必須有值檢查約束限制某一列中可接受的值或格式

2.域完整性主要體現(xiàn)在表中字段值的有效性?!纠?.6】在數(shù)據(jù)庫School的學(xué)生表T_Student中,設(shè)置性別Sex字段的默認(rèn)值為“男”。

【例3.7】在數(shù)據(jù)庫School的學(xué)生表T_Student中,設(shè)置StudentCode、StudentName、ClassCode、Sex字段為非空值,其他字段允許為空。

【例3.8】在數(shù)據(jù)庫School的學(xué)生表T_Student中,設(shè)置Sex列的值只允許是“男”或“女”。

60【例3.6】在數(shù)據(jù)庫School的學(xué)生表T_Student中,設(shè)置性別Sex字段的默認(rèn)值為“男”。

①打開Student表的“表設(shè)計”頁面,選擇“Sex”字段②在“列屬性”窗格中的“默認(rèn)值或綁定”處填寫‘男’。注意因為Sex字段是字符類型,‘男’采用西文單引號擴(kuò)起來。③當(dāng)保存表時,該約束設(shè)置即保存在數(shù)據(jù)庫中。613.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

【例3.7】在數(shù)據(jù)庫School的學(xué)生表T_Student中,設(shè)置StudentCode、StudentName、ClassCode、Sex字段為非空值,其他字段允許為空。

①打開Student表的“表設(shè)計”窗口,一個字段在新建立時默認(rèn)允許空(√),如果要設(shè)置為非空,只需要點擊該字段在允許空位置的單元格將“√”去掉即可,再次點擊又可以設(shè)置允許空“√”。②當(dāng)保存表時,該約束設(shè)置即保存在數(shù)據(jù)庫中。623.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

【例3.8】在數(shù)據(jù)庫School的學(xué)生表T_Student中,設(shè)置Sex列的值只允許是“男”或“女”。

①打開Student表的“表設(shè)計”窗口,右擊任一字段行,從快捷菜單中選擇“CHECK約束”命令,進(jìn)入“CHECK約束”②

選擇“添加”命令,將名稱修改為“CK_Student_Sex”。③

點擊“表達(dá)式”后的按鈕出現(xiàn)“CHECK約束表達(dá)式”對話框,輸入:Sex=’男’orSex=’女’④

將“表設(shè)計器”列表中的“強(qiáng)制用于INSERT和UPDATE”、“強(qiáng)制用于復(fù)制”、“在創(chuàng)建或重新啟用時檢查現(xiàn)存數(shù)據(jù)”都改為“是”。633.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

參照完整性:外關(guān)鍵字(ForeignKey)

3.參照完整性通過表間關(guān)系約束字段的值的有效性。

兩個建立關(guān)系的表中,在主表中相關(guān)字段定義了主鍵或唯一性約束,在從表中將相關(guān)字段定義為外鍵。這樣,外鍵的取值必須是主鍵中存在的值或空值?!纠?.9】在數(shù)據(jù)庫School的學(xué)生表Student和Class表間建立關(guān)系,實施參照完整性約束。在該關(guān)系中,將Class的ClassCode字段設(shè)置為主鍵,將Student的ClassCode設(shè)置為外鍵,并實施參照完整性。

643.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

【例3.9】在數(shù)據(jù)庫School的學(xué)生表Student和Class表間建立關(guān)系,實施參照完整性約束。

打開外表Student表的“表設(shè)計”窗口,右擊并選擇“關(guān)系”命令,出現(xiàn)“外鍵關(guān)系”對話框。②

單擊“添加”按鈕,點擊“表和列規(guī)范”后的按鈕,出現(xiàn)“表和列”對話框,將主鍵表改為“Class”,關(guān)系的主鍵字段為ClassCode,在“外鍵表”Student下選擇外鍵字段ClassCode。③

關(guān)系名自動變?yōu)椤癋K_Student_Class,該名可修改。④

在“外鍵關(guān)系”窗口的“表和列規(guī)范”、“INSERT和UPDATE規(guī)范”進(jìn)行設(shè)置,實施參照完整性。⑤

選擇“關(guān)閉”按鈕完成關(guān)系創(chuàng)建。653.5數(shù)據(jù)表約束和數(shù)據(jù)完整性控制

3.6索引的創(chuàng)建和維護(hù)

661.什么是索引3.6索引的創(chuàng)建與維護(hù)索引與字典檢字索引的原理是一樣的,可實現(xiàn)快速找到內(nèi)容。一個字典可有多個索引,如拼音、部首、五角號碼等。索引是由表中的一列或者若干列的值與其對應(yīng)的記錄在數(shù)據(jù)表中地

溫馨提示

  • 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

提交評論