




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第1章 初識SQL Server 2000 21.1 SQL Server 2000的歷史和發展 SQL Server是Microsoft公司推出的關系型數據庫管理軟件。它從SQL Server 1.0版到目前的版本SQL Server 2000(8.0版),經歷了10多年的發展過程。“SQL Server”這個名稱第一次出現是在1988年。Microsoft總裁Jon Shirley和Sybase發起人兼總裁Mark Hoffman簽訂合約;之后,Microsoft又與Ashton-Tate達成協議,發布產品Ashton-Tate / Microsoft SQL Server。該產品只能在
2、OS / 2操作系統上運行。經歷了10多年的發展,Microsoft公司已經擁有了自己的Microsoft SQL Server代碼,也成為提供企業數據庫的一個大公司。Microsoft公司又在2005年推出了Microsoft SQL Server 2005版本。31.2 關系型數據庫1.2.1 關系型數據庫的定義在數據庫發展歷史上,主要有3種數據模型:層次模型、網狀模型和關系模型。所謂數據模型,是指描述記錄之間聯系的數據結構形式。層次模型指的是樹狀的記錄型結點;網狀模型則是以記錄型為結點的網絡;而關系模型就是一張二維表格,如表1-1所示?,F在的大多數數據庫管理系統都是使用關系型的數據模型,
3、SQL Server就是一種典型的關系型數據庫管理系統。41.2.2 主碼和外碼1主碼(Primary Key,縮寫為PK)碼是指二維表中的某一列或者組合列(幾個列作為一個整體),該列的值唯一地標識了一行。如在導師表中,“導師編號”的每個值都代表了“某一個導師”。因為在同一個學校中,經常會出現導師重名的現象,但他們的“導師編號”絕對不會相同。也就是說,如果我們說張三老師,可能會有人問“哪一個”張老師,但是說“導師編號”為“1005”的張老師,就會“唯一地”確定是哪個張老師了。2外碼(Foreign Key,縮寫為FK)一個表中的某個列(非主碼)是另一個表的主碼,那么該列被稱為外碼。例如在表1-
4、4中,研究生表中的主碼是“學號”,“導師編號”是非主碼,而在表1-3的導師表中,“導師編號”卻是主碼,那么我們就說“導師編號”是研究生表的外碼。51.2.3 關系型數據庫的主要特點這里所說的關系型數據庫,主要是指能夠支持企業級應用的關系型數據庫管理系統,比如SQL Server、Oracle等。雖然FoxPro等也是關系型數據庫管理系統(RDBMS),但卻不具有下面的全部特點。幾乎當今所有的關系型數據庫管理系統都采用SQL語言來操縱數據庫中的數據。SQL Server 2000不僅和ANSI-92SQL完全兼容,而且SQL Server 2000還對這種語言進行了擴展,添加了許多重要的新特性。
5、通常,SQL Server 2000中的SQL版本被稱作事務型SQL(Transact-SQL)。6能夠保證數據的完整性。否則,存儲在SQL Server 2000數據庫中的數據就是毫無價值的。關系型數據庫管理系統包括許多特性,目的是阻止不符合要求的數據進入數據庫。關系型數據庫管理系統是一個便于修改的系統。在文件系統中,相同的數據常重復出現在許多文件中,而關系數據庫系統則會排出大多數的冗余數據。這就減少了對存儲空間的要求,加快了數據訪問的速度。應用程序可以通過多級的安全檢查來限制對數據的訪問。71.3 SQL Server 2000的新特點概括起來,SQL Server關系型數據庫的新特點有以
6、下幾點。圖形化管理:可以說SQL Server具有十分強烈的微軟氣息,它的管理系統使用圖形化的管理工具。SQL Server的所有管理都可以使用SQL Server Enterprise Manager,即SQL Server企業管理器實現,這是一個基于圖形用戶界面的集成管理工具,使用起來十分方便、直觀。豐富的編程接口:SQL Server提供了DB-Library for C、Transact-SQL、嵌入式SQL開發工具、ODBC規范、OLE DB規范等開發工具,這樣,用戶可根據自己的需要開發更適合處理事務的程序。多線程系統:由于支持了多線程操作,SQL Server可以在多用戶并發訪問時
7、,不占用系統的過多資源,從而可以承受較大訪問量的沖擊。8良好的并發控制:在SQL Server中,用戶可以不用關心并發操作中的鎖定過程,系統自動利用動態鎖功能防止用戶在進行查詢、修改、刪除等并發操作時發生的相互沖突。與操作系統良好的接口:SQL Server既能夠運行于Windows 98/95操作系統下(只能作為客戶端),也可以運行于Windows NT和Windows 2000(包括Windows 2000 Server/Advance Server)環境下。作為微軟自己開發的數據庫管理系統,SQL Server與以上的操作系統有著良好的接口,并充分利用其中所提供的服務,可以提高SQL S
8、erver數據庫管理系統的運行性能。與Back Office集成:SQL Server與Microsoft服務器套件BackOffice成員產品可以有機結合,充分利用它們提供的功能和服務,增強SQL Server數據庫管理系統本身的功能。這些成員軟件包括:Microsoft Internet lnformation Server(IIS)、Microsoft Exchange Server、Microsoft SNA Server等。91.4 SQL Server和客戶端/服務器模式早期的數據庫系統是單點處理方式,DBMS軟件、所有用戶的數據和應用程序都存儲在一個中心計算機上(也稱主機),它們
9、通常是大型機。用戶僅能通過終端發出存取數據庫的請求,由通信線路傳輸給主機,主機響應并處理之后,再將處理結果通過通信線路返回用戶終端。這種系統稱為主從式或主機/終端式系統,是一種集中式數據庫體系結構。SQL Server是客戶端/服務器系統的一個典型的示例,服務器端負責創建和維護表和索引等數據庫對象,維護引用完整性和安全性,確保在出現某種錯誤信息時能夠恢復操作。客戶應用程序負責為用戶顯示信息,處理數據庫和用戶屏幕上的信息,顯示報表并提供用戶可中斷的操作。101.4.1 客戶端/服務器數據庫系統客戶端/服務器系統的結構中,數據庫放在一個被稱為服務器的中央計算機中,而多個用戶共享這個數據庫。用戶通過
10、一個應用程序訪問服務器。在一個兩級客戶端/服務器系統中,用戶在他們的本地計算機上運行被稱做客戶端的應用程序,通過網絡連接運行在服務器計算機上的SQL Server 2000實例??蛻舳藨贸绦蜻\行商業事務和代碼,為用戶顯示輸出信息。在一個多級客戶端/服務器系統中,客戶端應用程序運行在兩個或多個位置:客戶端運行在用戶的本地計算機上并且集中為用戶顯示結果。 111.4.2 客戶端/服務器數據庫系統的優點客戶端/服務器數據庫系統將數據庫的存儲和管理集中在一個地方,有以下優點:每個數據都存儲在一個所有用戶都可以訪問的中央位置。 商務規則和安全規則可以在服務器上定義一次,但對所有用戶都平等執行。 關系型
11、數據庫服務器通過僅返回應用程序需要的數據來優化網絡通信量。 大幅降低硬件費用。 服務器可以配置成使需要檢索數據的磁盤輸入/輸出(I/O)能力最優化,而客戶端可以配置成使從服務器檢索到的數據格式化顯示最優化。 簡化了維護任務,如備份和恢復數據,因為它們集中在中央服務器中。121.4.3 SQL Server 2000客戶端/服務器系統的優點非常大的Internet站點能夠將它們的數據在多個服務器間劃分,將處理負擔分布到許多計算機上,且允許站點為大量用戶服務。多實例SQL Server 2000可以在單臺計算機上運行。 SQL Server 2000應用程序也可以像SQL Server 2000一
12、樣運行在同一臺計算機上。 131.5 DBA簡介DBA(Data Base Administrator)簡單的定義就是數據庫管理員,一個管理數據庫和數據庫服務器的人。要做一個好的SQL Server DBA,需要學很多知識。因為SQL Server與Windows NT/2000捆綁在一起,所以SQL Server DBA不僅要精通SQL Server,還要精通Windows NT/2000。141.5.1 需要掌握的技能(1)精通SQL Server(2)精通Windows NT/2000的運行機制(3)掌握關系型數據庫的基本結構及運行機制(4)掌握SQL語言。(5)備份和恢復數據庫。(6)
13、掌握基本的物流運作。151.5.2 日常需要處理的事情(1)安裝SQL Server(2)建立和維護數據庫(3)負責維修數據庫(4)管理用戶(5)管理權限(6)備份和恢復數據(7)調度任務(8)數據的導入和導出(9)管理SQL Server復制(10)監視和調整服務器(11)解決SQL Server問題161.6 上機實訓實驗目的了解關系型數據庫的概念;掌握關系型數據庫的應用。實驗內容用二維表格形式創建一個簡單的學生信息管理系統。實驗過程創建表格171創建一個二維表格 學生基本信息表182創建二維表格 學院信息表193創建二維表格 課程信息表204創建二維表格 學生成績表21第2章 SQL S
14、erver 2000安裝與概述222.1 SQL Server 2000簡介Microsoft SQL Server 2000由一系列產品組成,不僅能夠滿足最大的數據處理系統和商業Web站點存儲和處理數據的需要,還能為個人或小企業提供容易使用的數據存儲服務?,F在的企業或政府部門對數據存儲的要求非常高,如要求系統必須可以同時處理上千件訂單,有可靠的聯機分析處理系統,這些系統能夠很容易地通過OLPT(聯機事務處理)數據生成,并支持復雜的數據分析。要求數據存儲系統可由應用程序配置,然后系統自身可以自動調整,用戶不需要專門的數據庫管理員不間斷地監視和調整應用程序。Microsoft SQL Serve
15、r 2000通過提供一系列相互協助的組件滿足了用戶的各種要求。232.2 安裝SQL Server 2000的要求2.2.1 安裝前的事項在安裝前,需要考慮以下幾個方面的問題:確保計算機滿足安裝SQL Server 2000的硬件和軟件需求。如果在已安裝SQL Server 7.0的計算機上安裝SQL Server 2000,需要備份SQL Server 7.0數據庫的內容。如果打算安裝一個故障切換群集,必須在運行安裝程序之前取消與任何網絡的連接。如果在Windows NT/2000上安裝,需要事先設置一個或多個域用戶賬號,以便SQL Server 2000和其他客戶端、服務器端進行通信。以本
16、地管理員權限的用戶賬號登錄系統。關閉所有與SQL Server 2000有關的服務,包括如何使用ODBC的服務。關閉Microsoft Windows NT事件閱讀器和文件Regedit.exe或Regedit32.exe。242.2.2 安裝SQL Server 2000的硬件和軟件要求1硬件需求252軟件需求263Internet 與網絡需求272.3 創建SQL Server服務器SQL Server包含兩個重要的服務: Microsoft SQL Server服務(MS SQL Server)和SQL Server Agent服務。SQL Server Agent服務負責管理日常的維護
17、任務,如管理警報、任務、事件和復制。MS SQL Server是Microsoft SQL Server的引擎,直接通過Transact-SQL管理數據庫。282.4 安裝SQL Server 2000SQL Server 2000可以方便地安裝到Windows 2000 Server/XP或者Windows NT上。292.4.1 SQL Server 2000的安裝路徑 用戶可以根據需要自行改變程序和數據文件的安裝路徑。提 示SQL Server 2000的安裝目錄位置與以前版本有所不同。在SQL Server 2000的默認安裝下,程序文件和數據文件的默認安裝路徑均為“ProgramFi
18、lesMicrosoft SQL ServerMSSQL”。302.4.2 安裝SQL Server 2000不論安裝到哪一種操作系統上,安裝SQL Server 2000的過程都十分類似,在此,我們以在Windows XP操作系統上安裝為例進行講解。安裝SQL Server 2000的詳細過程將在上機實訓中講解。 312.5 SQL Server 2000的組件1Server Component2Management Tools3Client Connectivity4Books Online5Development Tools6Code Samples322.6 SQL Server 20
19、00的新功能SQL Server具有很好的易用性和伸縮性。新增加的向導功能將允許許多有能力的用戶作為數據庫管理員。SQL Server 2000的OLAP Service可創建多維數據庫的快速捕獲,為易用性創造了新標準。SQL Server 2000具有強大的數據倉庫功能,支持各種企業解決方案,并且能夠與Microsoft BackOffice 實現非常出色的交互操作。其他一些改進,如行級鎖、平行性及新的聯合技術,將提供更好的性能,尤其適合于企業資源規劃與應用。332.6.1 系統性能的增強1聯盟的數據庫服務器2通過視圖創建索引3校對功能4文本搜索功能5多實例操作6網絡庫功能提高7備份和恢復功
20、能8實用工具操作方面9日志管理342.6.2 編程功能的增強 1支持XML2新的數據類型3新增觸發器4用戶自定義函數5分布式查詢352.6.3 數據轉換功能1支持關鍵字和約束數據轉換功能(DTS)支持關鍵字和約束??梢允褂肈TS Import/Export Wizard將主關鍵字、外部關鍵字和約束從源表復制到目的表。2將DTS數據包保存成Visual Basic文件將DTS數據包保存成Visual Basic文件可以讓DTS Import Wizard、DTS Export Wizard創建數據包,允許將DTS Designer合并到Visual Basic程序中,或者由需要引用DTS對象模型
21、組件的Visual Basic程序開發人員將DTS Designer當作原型使用。362.7 上機實訓實驗目的掌握SQL Server 2000的安裝及其安裝要求。實驗內容安裝SQL Server 2000及其組件。37SQL Server 2000的安裝步驟實驗內容:將SQL Server 2000的安裝盤放入光驅,如果沒有自動安裝,則雙擊“Autorun.exe”;若計算機中有從網絡下載的安裝程序,則也可以雙擊“Autorun.exe”進行安裝,彈出如下圖所示的界面,然后選擇“安裝SQL Server 2000組件”選項。38 安裝界面 39第3章 管理數據庫及SQL Server 200
22、0服務器403.1 創建數據庫創建數據庫的過程實際就是確定數據庫的名稱,大小及用于存儲數據的文件和文件組。數據庫不是任何用戶都可以創建的,只有sysadmin和dbcreator固定服務器的成員才有創建數據庫的權限,當然其他用戶也可以被授予這種權利。413.1.1 SQL Server命名規則SQL Server的命名規則如下。字符的長度可為130字符。名稱的第一個字符必須是一個字母或者是下列字符中的某一個:下畫線“_”、at符號“”或者是英鎊符號“”。在中文版SQL Server 2000中,可以直接使用中文名稱。在首字母后的字符可以是字母、數字或者前面規則中提到的符號。名稱當中不能有任何空
23、格,除非整個名稱用引號括起來。423.1.2 使用SQL語句創建數據庫1CREATE DATABASE 語句的語法2參數說明3示例4權限433.2 管理數據庫信息SQL Server 數據庫分為兩種類型:系統數據庫和用戶數據庫。兩種數據庫都存儲數據,但SQL Server 使用系統數據庫來操作和管理系統。443.2.1 SQL Server 系統數據庫1master數據庫master數據庫包含了SQL Server系統中的所有系統級信息。 2tempdb數據庫tempdb 數據庫是一個臨時數據庫。 3model數據庫model 數據庫只是一個數據模板或者原型。 4msdb數據庫SQL Serv
24、er使用msdb數據庫來調度報警和任務并記錄操作符。453.2.2 管理數據庫1修改數據庫ALTER DATABASE database2壓縮數據庫DBCC SHRINKDATABASE 3刪除數據庫DROP DATABASE database_name , n 463.3 啟動SQL Server 服務器啟動SQL Server,就是啟動SQL Server服務。SQL Server服務可以像Microsoft Windows NT 4.0或Windows 2000服務一樣在本地或遠程啟動。如果是默認實例,SQL Server服務是MS SQL Server,如果是命名實例,那就是MS SQ
25、L $ instancename。473.3.1 修改默認服務器如果用戶必須重新啟動計算機,那么SQL Server服務管理器就自動出現且顯示默認服務。要在SQL Server服務管理器中改變默認服務,操作如下:(1)選擇“開始”“程序”“Microsoft SQL Server”“Service Manager”命令打開SQL Server服務管理器。(2)右擊SQL Server服務管理器標題,從彈出的菜單中選擇Options選項。(3)在“服務”列表框中選擇新的默認服務,重新啟動時,新的默認服務將是用戶新選擇的服務。483.3.2 啟動SQL Server服務器安裝完SQL Server
26、 2000后,安裝程序將SQL Server服務配置成在每次啟動Windows系統時自動啟動。用戶也可以將SQL Server配置成一種自動啟動的服務。在運行Windows系統的計算機上,自動啟動服務器的最簡單方式是在SQL Server服務管理器中選擇 復選框。手動啟動的設置方法,是在SQL Server服務管理器中,單擊 按鈕。493.4 管理服務器SQL Server服務器管理包括各種各樣的管理任務,如下所示:注冊服務器和分配口令。重新配置網絡連接。配置連接的服務器,允許用戶通過SQL Server 企業管理器對OLE DB數據源進行分布式查詢和分布式事務處理。配置遠程服務器,以便用戶使
27、用SQL Server安裝程序來執行駐留在另一個SQL Server安裝程序中的存儲過程。配置可靠的故障切換服務器。設置服務器配置選項。管理SQL Server消息。503.4.1 注冊服務器要使用SQL Server企業管理器來管理服務器,必須先注冊本地或遠程服務器,在注冊服務器時必須指定:服務器的名稱。登錄到服務器時使用的安全類型。如果需要,指定登錄名和密碼。注冊了服務器后想將該服務器列入其中的組的名稱。513.4.2 創建服務器組在SQL Server企業管理器中創建服務器組的方法如下:(1)右擊服務器組,選擇“新建SQL Server組”選項。(2)在“名稱”文本框中輸入新的組名。(3
28、)選擇組級別:頂層組或下面項目的子組。(4)單擊 按鈕。(5)重復以上步驟,創建所需的新服務器組。523.4.3 設定sa密碼sa為系統管理員的賬號,在安裝SQL Server時,SQL Server安裝程序不會給sa登錄指派密碼,但可以在安裝完服務器后給sa指派密碼。當第一次登錄到SQL Server實例時,使用sa作為登錄標識并且不使用密碼。在登錄之后,必須更改sa密碼以防其他用戶使用sa權限。533.5 配置連接服務1對SQL Server使用防火墻系統如果要求Internet用戶使用TCP/IP連接SQL Server實例,而且自己的組織正在使用防火墻系統將包含SQL Server的網
29、絡和其余的Internet隔離開,那么一定要保證SQL Server為它的引入連接使用特定的端口,然后防火墻系統才能從端口到SQL Server繼續向前連接。542啟動加密系統使用網絡實用工具在安裝SQL Server后啟動加密的步驟如下:(1)選擇“開始”“程序”“Microsoft SQL Server”“服務器網絡實用工具”命令。(2)如果在“啟用的協議”列表框中沒有出現“多協議”選項,則在“禁用的協議”列表框中單擊它,然后單擊“啟用”按鈕。(3)在“啟用的協議”列表框中選擇“多協議”選項,然后單擊“屬性”按鈕,彈出“CRYSTALZ-多協議”對話框。(4)選擇“啟用加密”復選框。553
30、.6 管理客戶端SQL Server客戶端包括以下組成部分。OLE DB用戶:這些應用程序使用Microsoft SQL Server或Microsoft OLE DB Provider for ODBC連接SQL Server實例。OLE DB供應商作為SQL Server和客戶端應用程序間的媒介,這些應用程序將SQL Server數據用做OLE DB行集。ODBC應用程序:它們包括同SQL Server一起安裝的客戶端實用工具,如SQL Server Enterprise Manager和SQL Query Analyzer,以及其他使用SQL Server ODBC驅動程序連接SQL S
31、erver實例的應用程序。DB-Library客戶端:包括SQL Server isql命令行實用工具和寫入DB-Library的客戶端。563.6.1 配置客戶端在配置SQL Server客戶端之前需要做好以下兩項工作:必須在客戶端和服務器上安裝一個匹配的SQL Server Ner-Library(正常情況下,所有的SQL Server客戶端網絡庫和服務器網絡庫將在安裝SQL Server時自動安裝)。每一對Net-Library都支持一種特定的網絡協議(如客戶端TCP/IP Sockets網絡庫和服務器TCP/IP Sockets網絡庫都支持TCP/IP)。在客戶端和服務器上必須安裝正確
32、的網絡協議。網絡協議一般是在Windows安裝過程中安裝的,而不是SQL Server安裝程序或配置的一部分。只有當客戶端和服務器上都安裝了與SQL Server Net-Library相對應的網絡協議時,SQL Server Net-Library才有效。573.6.2 配置客戶端網絡連接用戶的服務器,用戶不需要重新配置客戶端連接,而只在以下情況配置客戶端:將默認的客戶端網絡庫設置成一個除TCP/IP外的選項。為特定的服務器通信添加一個不同的配置項。在默認情況下,在運行Windows NT 4.0和Windows 2000的計算機上,SQL Server實例監聽服務器TCP/IP套接字和多協
33、議Net-Library。583.6.3 配置ODBC數據源ODBC應用程序使用數據源連接到SQL Server。數據源是一個存儲定義,主要內容包括:連接到數據源所使用的ODBC驅動程序。ODBC驅動程序連接到數據源所使用的信息。連接所使用的驅動程序特有的選項。593.6.4 配置OLE DB客戶端配置OLE DB客戶端連接到SQL Server時,需要通過OLE DB提供程序使服務器名稱和連接信息可由客戶端(或OLE DB用戶)使用。通過OLE DB建立SQL Server連接一般使用:用于SQL Server的Microsoft OLE DB提供程序(SQL OLE DB)。用于ODBC的
34、Microsoft OLE DB提供程序。603.6.5 設置DB-Library選項客戶端網絡實用工具中包含安裝在計算機上的DB-Library的文件信息,以及用來設置DB-Library的首選項。這些選項包括:自動轉換ANSI到OEM。使用國際設置。613.7 上機實訓實驗目的熟練掌握數據庫的創建和管理,并能自行創建服務器和管理服務器。實驗內容使用SQL Server企業管理器創建數據庫使用SQL Server企業管理器修改數據庫使用SQL Server企業管理器壓縮數據器使用SQL Server企業管理器刪除數據器623.7.1 使用SQL Server 企業管理器創建數據庫實驗內容:(
35、1)在SQL Server企業管理器中選擇“工具”“向導”選項,如下圖所示。選擇“工具”“向導”選項 63(2)彈出“選擇向導”對話框,選擇“創建數據庫向導”選項,單擊按鈕,如下圖所示?!斑x擇向導”對話框643.7.2 使用SQL Server企業管理器修改數據庫實驗內容:在企業管理器中打開一個服務器中的“數據庫”節點,右擊其中的一個數據庫,選擇“屬性”選項,出現如下圖所示的對話框。其中的選項和參數與創建數據庫中的意義均相同。分別對“常規”、“數據文件”、“事務日志”、“文件組”、“選項”、“權限”選項卡中的選項進行修改。65修改數據庫 663.7.3 使用SQL Server企業管理器壓縮數
36、據庫實驗內容:(1)打開企業管理器,在控制臺中展開“數據庫”節點,選擇要操作的數據庫,在其上右擊,選擇“所有任務”“收縮數據庫”選項。(2)進入“收縮數據庫”對話框,對其中的參數進行修改。 673.7.4 使用SQL Server企業管理器刪除數據庫實驗內容:打開企業管理器,在控制臺中展開“數據庫”節點,選擇要刪除的數據庫,在其上右擊,然后選擇“刪除”選項,彈出如下圖所示的對話框。對話框中的復選框可以選擇數據庫刪除是否備份并還原歷史記錄?!皠h除數據庫”對話框68第4章 SQL Server 2000數據完整性實現694.1 數據完整性實體完整性:實體完整性把表中的每行看作一個實體,也可以稱為表
37、完整性,它要求所有行都具有唯一標識。域完整性:也稱列完整性,要求域中指定列的數據具有正確的數據類型、格式和有效的數值范圍。域完整性通過默認值、FOREIGN KEY、CHECK等約束及默認、規則等數據庫對象來實現。引用完整性:引用完整性維持被參照表和參照表之間的數據一致性,它通過PRIMARY KEY約束和FOREIGN KEY約束來實現。引用完整性確保鍵值在所有表中一致。這樣的一致性要求不能引用不存在的值,如果鍵值更改了,那么在整個數據庫中,對該鍵值的所有引用要進行同樣的更改。參照完整性:引用完整性維持被參照表和參照表之間的數據一致性,它通過PRIMARY KEY約束和FOREIGN KEY
38、約束來實現。用戶定義的完整性(User-defined Integrity):用戶定義的完整性允許用戶定義不屬于其他任何一類完整性的特定規則。各類完整性均支持用戶定義的完整性。704.2 使用約束約束是獨立于表結構的,可作為數據庫定義部分在CREATE TABLE語句中聲明,可以在不改變表結構的基礎上,通過ALTER TABLE語句添加或者刪除。當表被刪除時,表中所有的約束定義也將被刪除。建立和使用約束的目的是保證數據的完整性,約束是SQL Server強制實行的應用規則,它是通過限制列中數據、行中數據和表之間的時間來保證數據的完整性。約束(Constraint)限制了用戶可能輸入到表或字段中
39、的值。SQL Server的約束包括:DEFAULT、CHECK、UNIQUE、PRIMARY KEY和FOREIGN KEY,它們均有各自不同的目的。這就需要用戶根據自己的需要,選擇和使用約束。 714.2.1 DEFAULT約束1DEFAULT約束的語法格式CONSTRAINT 約束名DEFAULT 常量表達式 | NULL FOR 字段名 2示例 /*默認值的表達書寫格式*/ALTER TABLE 學生基本信息表ADDCONTRAINT 性別 DEFAULT男FOR 性別此例說明如果沒有指定某個學生的“性別”,則系統默認為 男。724.2.2 CHECK約束1CHECK約束的語法格式 C
40、ONSTRAINT constrain_name CHECK NOT FOR REPLICATION ( logical_expression )邏輯表達式可以是AND或者OR連接的多個簡單邏輯表達式構成的復合型邏輯表達式,通過任何基于邏輯運算符返回結果TRUE或FALSE的邏輯表達式來創建CHECK約束。2示例/*增加一個CHECK約束*/USE afuGOALTER TABLE studentADDCONTRAINT studentid CHECK ( studentid LIKE 0-90-90-9)該示例中,輸入學生的學號被限定為一個三位數,且該三位數的每一位只能在09的范圍內,使用字
41、母以及其他符號是無效的。734.2.3 UNIQUE約束1UNIQUE約束的語法格式 CONSTRAINT constraint_name UNIQUE CLUSTERED | NONCULUSTERED WITH FILLFACTOR = fillfactor ON filegroup | DEFAULT 2示例/*在表course中添加一個UNIQUE約束*/USE afuGOALTER TABLE CourseADDCONTRAINT u_coursename_no UNIQUE NONCLUSTERED ( coursename_no )該例在表Course中的課程名列上創建一個UNI
42、QUE約束。這樣,就不能在該表中插入同樣課程名的數據了。744.2.4 PRIMARY KEY約束1PRIMARY KEY約束的語法格式 CONSTRAINT constraint_name PRIMARY KEY CLUSTERED | NONCLUSTERED ( column ,n ) WITH FILLFACTOR = fillfactor ON filegroup | DEFAULT 752示例/*添加一個主鍵*/USE afuGOALTER TABLE 學生基本信息表ADDCONSTRAINT PK_studentid PRIMARY KEY CLUSTERED (studenti
43、d)該示例在表“學生基本信息表”中增加一個主鍵,并指定studentid(學號)列為主鍵值,同時創建了一個聚簇索引,這意味著以后不能在該表中插入學號兩個相同的學生基本信息。764.2.5 FOREIGN KEY約束1FOREIGN KEY約束定義格式 CONSTRAINT constraint_name FOREIGN KEY ( column ,n ) REFERENCES ref_table ( ref_column ,n ) NOT FOR REPLICATION 772示例/*增加一個FOREIGN KEY*/USE afuGOALTER TABLE grade ADDCONTRAIN
44、T FK_studentidFOREIGN KEY ( studentid )REFERANCES student ( studentid )上例在表grade中增加一個FOREIGN KEY約束,該約束把表grade中的studentid與表student中的studentid聯系起來,在這兩個表之間創建一種約束關系。784.3 使用規則規則是一種數據庫對象,與默認的使用方法類似,規則可以綁定到一列或者多列上,也可以綁定到用戶定義的數據類型上,其作用類似于CHECK約束為INSERT語句指定可接受的數據值的范圍。CHECK 約束作為 CREATE TABLE 語句的一部分進行指定,而規則可以
45、作為單獨的對象進行創建,然后綁定到列上。 794.3.1 創建規則1創建規則的語法格式CREATE RULE rule_name AS condition_expression2參數說明rule_name是新規則的名稱,規則名稱必須符合標識規則,可以選擇是否指定規則所有者的名稱。condition_expression是定義規則的條件。規則可以是WHERE子句中的任何有效的表達式,并且可以包含諸如算術運算符、關系運算符和IN、LIKE、BETWEEN之類的元素。803示例/*創建學生的年齡必須在一定范圍的規則*/CREATE RULE age_ruleAS /*創建交通燈顏色的規則*/CREA
46、TE RULE colour_ruleAS colour IN (red, yellow,green)814.3.2 綁定規則1綁定規則的語句sp_bindrule rulename = rule , objname = object_name , futureonly = futureonly_flag 822參數說明 rulename = rule:由 CREATE RULE 語句創建的規則名稱。rule 的數據類型為 nvarchar(776),無默認值。objname = object_name:綁定了規則的表和列或用戶定義的數據類型。object_name 的數據類型為 nvarch
47、ar(517),無默認值。如果 object_name 沒有采取 table.column 格式,則認為它屬于用戶定義數據類型。默認情況下,用戶定義的數據類型的現有列繼承 rule,除非直接在列上綁定了規則。futureonly = futureonly_flag:僅當將規則綁定到用戶定義的數據類型時才使用。future_only_flag 的數據類型為 varchar(15),默認值為 NULL。將此參數設置為 futureeonly 時,它會防止用戶定義數據類型的現有列繼承新規則。如果 futureonly_flag 為 NULL,那么新規則將綁定到用戶定義數據類型的每一列,條件是此數據類
48、型當前無規則或者使用用戶定義數據類型的現有規則。 833示例/*將規則綁定到用戶定義的數據類型*/USE masterEXEC sp_bindrule rule_tip, tip4權限只有 sysadmin 固定服務器角色、db_owner 和 db_ddladmin 固定數據庫角色成員及表所有者才能執行 sp_bindrule。844.3.3 刪除規則1刪除規則的語句DROP RULE ,.n 2參數說明rule_name:現存的規則名稱??梢酝ㄟ^執行sp_help查詢規則列表;通過執行存儲過程sp_helptext查詢某條規則的文本;執行sp_rename對規則進行重新命名。n:是可以指定
49、多個規則的占位符。853示例/*解除綁定的規則并將其刪除*/USE afuGOIF EXISTS (SELECT age FROM student WHEREage=age_rule AND type=int) BEGIN EXEC sp_unbindrulestuent.age_rule DROP RULE age_rule ENDGO在該示例中,首先解除了綁定在表student中age列的規則age_rule(即取消了對年齡的范圍限制),然后刪除該規則。864.3.4 使用規則的條件規則只能用來查找常量、SQL Server函數和編輯掩碼,它不能用來查找表,也不能用來比較表中的列。每列只能
50、與一條規則綁定。如果某列已經綁定了一條規則,又要為之綁定一條新規則時,那么舊規則將被新規則代替。規則不能使用表中已經存在的數據,但當存在的行修改后可以使用。如果規則與某列或某個用戶定義的數據類型綁定,那么規則不能被直接刪除。必須先解除規則與所有的列和數據類型綁定關系,然后才能使用DROP RULE命令刪除規則。向系統中大量復制數據時,規則不起作用。在使用規則時,要確保規則中的值與其綁定列的數據類型一致。874.4 使用默認默認是一種數據庫對象,它與DEFAULT約束的作用類似。默認用來向無值的列提供一個預先指定的值。和規則一樣,默認在創建后必須和某一列綁定,然后才能生效。若用戶輸入記錄時,系統
51、會在沒有給出具體的數據的字段中自動插入一個數據。默認對象在功能上與DEFAULT約束是一樣的,但是在使用上有所區別。DEFAULT約束是在CREATE TABLE或ALTER TABLE語句中定義的,嵌入了被定義的表的結構,也就是說,在刪除表的時候DEFAULT約束也就隨之被刪除了。而默認的使用需要用CREATE DEFAUT語句進行定義。作為一種單獨存儲的數據庫對象,它是獨立于表外的,刪除表并不能刪除默認,而需要使用DROP DEFAULT語句。884.4.1 使用CREATE DEFAULT語句創建默認1創建默認的語句格式CREATE DEFAULT default_name AS con
52、stant_expression2參數說明default_name:所創建的默認名稱。默認名稱必須符合標識符的規則。constant_expression:設置的常量表達式,即默認值,該常量表達式的數據類型必須與默認所綁定列的數據類型完全相同或兼容。893注釋4示例/*默認性別為男*/CREATE DEFAULT gender_default AS male/*默認籍貫為廣東*/CREATE DEFAULT birthplace_default AS guangdong/*默認時間為系統當前時間*/CREATE DEFAULT time_default AS getdate()904.4.2
53、默認的使用在創建默認后,必須將它與用戶定義的數據類型綁定后才能發揮作用。用sp_bindefault可以將默認和列綁定起來。如果在插入行時沒有指定列的值,那么默認指定列中所使用的值。 914.4.3 刪除默認1刪除默認的語句格式DROP DEFAULT default_name ,n 2參數說明default_name:現有默認對象名稱??梢酝ㄟ^執行sp_help查詢現有默認對象列表。n:表示可以指定多個規則的占位符。923示例/*取消綁定到列的默認并將其刪除*/USE afuGOIF EXISTS ( SELECT gender FROM student WHERE gender = mal
54、e AND type = R) BEGIN EXEC sp_unbindrulestuent.gender DROP DEFAULT male ENDGO此例中,首先解除了綁定在student表中gender(性別)列的默認值male(男),然后刪除該默認對象。934.4.4 使用默認的條件在使用默認時,必須要注意以下條件:通過DEFAULT子句為列(字段)定義默認值或者綁定默認與某列,兩者只能選擇一種方式。默認只能用來設置常量或者SQL Server函數值。每列只能與一個默認綁定。如果將某列與第二個默認綁定,SQL Server會給出錯誤信息。確保默認的數值類型與其綁定列的數據類型一致,否則
55、,帶有默認值的行將不會被接受。默認用于規則檢驗之前,可使規則應用于默認值而不是應用于空值。確保默認值與該列的規則一致,否則默認值不會被系統接受。如果默認已經與某列用戶定義的數據類型綁定,那么就不能刪除它,除非在刪除之前,已經解除默認、列或者數據類型的所有綁定關系。944.5 約束和默認/規則的比較約束符合ANSI-89 SQL,它規定了所在表的特征,約束是限制列數據的較好方法。因為約束的定義存儲在表中,刪除表時也會自動刪除約束。另外,約束是與表結構分開維護的,所以可以建立、更改和刪除約束,而不需要刪除和重建表。954.6 上機實訓實驗目的熟練掌握用SQL Server Enterprise M
56、anager創建默認和規則。實驗內容使用SQL Server企業管理器創建規則。使用SQL Server企業管理器查看規則及屬性使用SQL Server企業管理器創建默認。使用查詢分析器刪除默認964.6.1 使用SQL Server企業管理器創建規則實驗內容:(1)選擇“開始”“所有程序”“Microsoft SQL Sever”“企業管理器”命令,打開SQL Server企業管理器。(2)在控制臺中展開服務器,打開“數據庫”節點,雙擊需要創建規則的數據庫,下面以afu數據庫為例。單擊“規則”數據庫對象,從彈出的菜單中選擇“新建規則”選項。(3)在彈出的“規則屬性”對話框中輸入規則名稱和表達
57、式,單擊按鈕即完成規則的創建。974.6.2 使用SQL Server企業管理器查看規則及屬性實驗內容:(1)打開SQL Server企業管理器。(2)在控制臺中展開服務器,打開“數據庫”節點,雙擊需要查看的數據庫,例如afu。單擊數據庫對象“規則”,從右邊的窗格中,可以看到規則的部分信息,包括規則名稱、所有者和創建時間等,如下圖所示。98(3)若要查看規則的屬性,右擊該規則,從彈出的快捷菜單擊中選擇“屬性”選項,則會彈出“規則屬性”對話框。 查看規則 994.6.3 使用SQL Server企業管理器創建默認實驗內容:(1)打開SQL Server企業管理器。(2)在控制臺中展開服務器,打開
58、“數據庫”節點,雙擊要創建默認的數據庫,例如afu。右擊數據庫對象“默認”,然后選擇“新建默認”選項。(3)在彈出的對話框中,輸入默認的名稱和默認值,然后點擊 按鈕。1004.6.4 使用查詢分析器刪除默認實驗內容:(1)打開查詢分析器或者在企業管理器中的“工具”菜單,選擇“SQL 查詢分析器”選項。(2)選擇要操作的數據庫,或者使用USE Databasename GO命令打開數據庫。(3)輸入命令,單擊 按鈕,或者按【F5】鍵執行命令。命令執行成功后即刪除了默認,如下圖所示。101刪除默認 102第5章 表(Table) 1035.1 表的創建表是包含數據庫中所有數據的數據庫對象。表定義為
59、列的集合。與電子表格相似,數據在表中是按行和列的格式組織排列的。每行代表唯一的一條記錄,而每列代表記錄中的一個域。例如,在一個關于學生基本信息表中,每一行表示某個學生的所有相關信息,如學號、姓名、性別、年齡、籍貫、出生年月等數據信息。表的每行可以分成若干列。表中的每一列稱為字段,它代表記錄中實體的某一方面的信息。 1045.1.1 設計表創建一個表最有效的方法是將表中所需的信息一次定義完成,包括數據約束和附加成分。也可以先創建一個基礎表,向其中添加一些數據并使用一段時間。這種方法可以在添加各種約束、索引、默認設置、規則和其他對象形成最終設計之前,發現哪些事務最常用,哪些數據經常輸入。1055.
60、1.2 創建表1使用Transact-SQL語言格式CREATE TABLE Database_name. owner . | owner. table_name( | column_name AS computed_column_expression | : = CONSTRAINT constraint_name | PRIMARY KEY | UNIQUE ,N ) ON filegroup | DEFAULT TEXTIMAGE_ON filegroup | DEFAULT 1062參數說明table_name:新建表名,它必須遵循Transact-SQL語言中的標識符命名規則。 co
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美術課件創意兒童
- 美術學科知識課件講解
- 重大事故隱患治理方案內容口訣
- 幼兒園各崗位安全職責一覽表
- 危險化學品經營事故應急預案
- 生產安全事故報告和處理規定
- 嬰童免疫培訓課件
- 安全生產培訓的收獲和體會
- 結構計算培訓課件
- 計劃免疫規劃培訓課件
- 2008-2024年河南省信陽市固始縣事業單位考試《公共基礎知識》試卷及答案
- 商業聯盟策劃方案(3篇)
- 養老項目商業計劃書
- 2025年新高考1卷(新課標Ⅰ)數學試卷
- 夜市項目的可行性報告
- 火力發電廠項目工程建設規范標準強制性條文執行表格電氣分冊
- 2025年海上風力發電場運維管理技術創新與運維效率提升報告
- ISO37301:2021合規管理體系程序文件一整套
- 【英特爾】工業人工智能白皮書2025年版邊緣AI驅動助力新質生產力8045mb
- 內蒙古自治區包頭市東河區第二中學2025屆八年級物理第二學期期末經典試題含解析
- 三農課件教學課件
評論
0/150
提交評論