《數(shù)據(jù)庫原理及應(yīng)用》課件-數(shù)據(jù)庫原理及應(yīng)用第2版全文-之第7章 基于SQL SERVER 00數(shù)據(jù)庫技術(shù)_第1頁
《數(shù)據(jù)庫原理及應(yīng)用》課件-數(shù)據(jù)庫原理及應(yīng)用第2版全文-之第7章 基于SQL SERVER 00數(shù)據(jù)庫技術(shù)_第2頁
《數(shù)據(jù)庫原理及應(yīng)用》課件-數(shù)據(jù)庫原理及應(yīng)用第2版全文-之第7章 基于SQL SERVER 00數(shù)據(jù)庫技術(shù)_第3頁
《數(shù)據(jù)庫原理及應(yīng)用》課件-數(shù)據(jù)庫原理及應(yīng)用第2版全文-之第7章 基于SQL SERVER 00數(shù)據(jù)庫技術(shù)_第4頁
《數(shù)據(jù)庫原理及應(yīng)用》課件-數(shù)據(jù)庫原理及應(yīng)用第2版全文-之第7章 基于SQL SERVER 00數(shù)據(jù)庫技術(shù)_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)庫原理及應(yīng)用第1章緒論P(yáng)AGE2PAGE1數(shù)據(jù)庫原理及應(yīng)用(第二版)錢雪忠等主編北京郵電大學(xué)出版社2007.04PAGE78PAGE79第7章SQLServer2000&2005數(shù)據(jù)庫管理系統(tǒng)本章要點(diǎn)本章講述了利用SQLServer2000進(jìn)行數(shù)據(jù)庫管理與使用的方法以及最新版本SQLServer2005的系統(tǒng)概述。主要介紹了SQLServer2000企業(yè)管理器、查詢分析器等的基本使用,創(chuàng)建與管理數(shù)據(jù)庫、數(shù)據(jù)表、視圖、索引、存儲(chǔ)過程、觸發(fā)器等的方法,數(shù)據(jù)庫備份與恢復(fù)方法,以及利用Transact-SQL進(jìn)行數(shù)據(jù)庫服務(wù)器端程序設(shè)計(jì)的技能等。在SQLServer2000中創(chuàng)建與管理數(shù)據(jù)庫服務(wù)器對(duì)象的方法與技能,同樣適用于SQLServer2005最新版數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫主要對(duì)象的交互式界面操作方法及基本的Transact-SQL命令操作方法等是我們實(shí)踐數(shù)據(jù)庫應(yīng)用技術(shù)所必須要努力去掌握的。7.1SQLServer2000的簡(jiǎn)介SQLServer是一種關(guān)系數(shù)據(jù)庫,它除了支持傳統(tǒng)關(guān)系數(shù)據(jù)庫組件(如數(shù)據(jù)庫,表)和特性外,另外也支持當(dāng)今關(guān)系數(shù)據(jù)庫常用的組件,如存儲(chǔ)過程,視圖等。SQLServer支持關(guān)系數(shù)據(jù)庫國(guó)際標(biāo)準(zhǔn)語言——SQL(它被稱為Transact-SQL)。SQLServer另外的一項(xiàng)重要的特點(diǎn)是它支持?jǐn)?shù)據(jù)庫復(fù)制的功能。SQLServer最早是由另外一種關(guān)系數(shù)據(jù)庫Sybase演化而來的,事實(shí)上在1988年時(shí)SQLServer的OS/2版本是由Sybase,Microsoft,和Ashton-Tate這三家公司所共同開發(fā)的,后來NT操作系統(tǒng)出現(xiàn)了,Microsoft便將SQLServer移植到NT操作系統(tǒng)上,三者間的合作才告終止。SQLServer在當(dāng)今比較流行的Client/Server(C/S)結(jié)構(gòu)中扮演Server端角色,也就是說SQLServer并不提供工具讓您設(shè)計(jì)出一個(gè)輸入或查詢的操作界面,另外您也看不到和報(bào)表設(shè)計(jì)有關(guān)的工具,因?yàn)閷?duì)于SQLServer所扮演的角色而言,這不是它的職責(zé)所在。這些用戶操作界面的設(shè)計(jì)工作是Client端(如VB,Delphi)的事情。SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的最新版本。SQLServer2000在SQLServer7.0的基礎(chǔ)上對(duì)數(shù)據(jù)庫性能、數(shù)據(jù)可靠性、易用性方面做了重大改進(jìn),這些改進(jìn)使SQLServer2000更加安全且易于使用。為了滿足不同的數(shù)據(jù)庫管理需要,SQLServer2000包含有6種不同的版本。企業(yè)版(EnterpriseEdition)作為各種企業(yè)、單位或組織的數(shù)據(jù)庫服務(wù)器使用,它支持所有SQLServer2000的功能,可作為大型Web站點(diǎn),企業(yè)OLTP(聯(lián)機(jī)事務(wù)處理)以及數(shù)據(jù)倉庫系統(tǒng)(OLAP)等的產(chǎn)品數(shù)據(jù)庫服務(wù)器。標(biāo)準(zhǔn)版(StandardEdition)用于小型的工作組或部門。它支持大多數(shù)的SQLSERVER2000功能,但是不具有支持大型數(shù)據(jù)庫,數(shù)據(jù)倉庫和網(wǎng)站的功能,而且,也不支持所有的關(guān)系數(shù)據(jù)庫引擎的功能。個(gè)人版(PersonalEdition)用于單機(jī)系統(tǒng)或客戶機(jī)。除了事務(wù)處理復(fù)制功能外,SQLServr2000個(gè)人版能夠支持所有SQLServer2000標(biāo)準(zhǔn)版支持的特性。另外,如果該版本安裝在WindowsME和Windows98系統(tǒng)上,那么它將不支持全文搜索。開發(fā)者版(DeveloperEdition)用于程序員開發(fā)應(yīng)用程序時(shí),將SQLServer2000作為其數(shù)據(jù)存儲(chǔ)區(qū)。WindowsCE版安裝于執(zhí)行WindowsCE的個(gè)人數(shù)字助理上(PDA),它能復(fù)制任何SQLServer2000版本的數(shù)據(jù),使WindowsCE數(shù)據(jù)能與公司的主要數(shù)據(jù)庫同步。評(píng)測(cè)版SQLServer2000評(píng)測(cè)版是一個(gè)功能基本齊全的版本,該版本主要用來評(píng)估SQLServer2000的功能。用戶可以根據(jù)實(shí)際情況選擇所要安裝的SQLServer2000版本。以下簡(jiǎn)單介紹SQLServer2000的新特性。7.1.1SQLServer2000的新特性1、在關(guān)系數(shù)據(jù)庫方面的增強(qiáng)(1)XML支持SQLServer2000增加了XML支持,這就使得數(shù)據(jù)庫引擎可以返回?cái)U(kuò)展標(biāo)記語言(XML)文檔格式的數(shù)據(jù);而且XML還可用于在數(shù)據(jù)庫中插入,更新和刪除值.(2)用戶定義函數(shù)和新的數(shù)據(jù)類型在SQLServer2000中還增加了用戶定義函數(shù)和新的數(shù)據(jù)類型。這樣,用戶不但可以通過創(chuàng)建自己的Transact-SQL函數(shù)來擴(kuò)展Transact-SQL的可編程性,而且能夠更加靈活地使用各種類型的數(shù)據(jù)。新增加的三種數(shù)據(jù)類型是:bigint,sql-variant和table類型(3)索引視圖,索引增強(qiáng)索引視圖是SQLServer2000新增加的功能之一。如果在應(yīng)用程序中包含需要經(jīng)常執(zhí)行連接或聚合操作的查詢,那么利用索引視圖可以使查詢性能得到顯著提高??梢栽谟?jì)算字段上創(chuàng)建索引,這是一個(gè)很大的改進(jìn),可指定以升序還是降序生成索引,還可以指定數(shù)據(jù)庫引擎是否應(yīng)在索引創(chuàng)建過程中使用并行掃描和排序。(4)分布式查詢SQLServer2000引入了OPENROWSET()函數(shù),它可以指定在分布式查詢中的一個(gè)特定連接信息,另外,SQLServer2000還指定了一些方法,OLEDB提供程序通過這些方法報(bào)告它所支持的SQL語法的級(jí)別,以及數(shù)據(jù)源中鍵值分布的統(tǒng)計(jì)數(shù)據(jù)。然后,分布式查詢優(yōu)化器可使用這些信息減少必須從OLEDB數(shù)據(jù)源中發(fā)送的數(shù)據(jù)量。(5)備份和還原SQLServer2000增加了一種全新的,更易于理解的模型來指定備份和還原選項(xiàng)。通過使用這種新模型,用戶能夠更加清楚地針對(duì)不同計(jì)劃的性能和日志空間要求,以權(quán)衡增加或降低數(shù)據(jù)損失的風(fēng)險(xiǎn)。同時(shí),用戶還可以為備份集和媒體集設(shè)置密碼,以防止未經(jīng)授權(quán)的用戶訪問SQLServer備份。(6)級(jí)聯(lián)參考完整性約束級(jí)聯(lián)參考完整性約束可以控制在刪除或更新有外鍵約束的數(shù)據(jù)時(shí)所采取的操作,這種控制是通過在CREATETABLE或ALTERTABLE命令中的REFERENCES子句中加入ONDELETE或ONUPDATE子句來實(shí)現(xiàn)的。(7)Collation增強(qiáng)SQLServer2000用Collation來替代Codepages和SortOrders,它比以前的版本提供了更多對(duì)Collation的支持。(8)排序規(guī)則在SQLServer2000中將使用排序規(guī)則代替代碼頁和排序次序。SQLServer2000在支持SQLServer早期版本所支持的大部分排序規(guī)則的同時(shí),也在Windows排序規(guī)則的基礎(chǔ)上增加了一套新的排序規(guī)則。以前,用戶只能在服務(wù)器級(jí)別指定代碼頁和排序次序,然后應(yīng)用于服務(wù)器上的所有數(shù)據(jù)庫。而現(xiàn)在,用戶則可以在數(shù)據(jù)庫級(jí)別或字段級(jí)別上直接指定排序規(guī)則了。2、圖形管理工具增強(qiáng)SQLServer中包含了多種圖形管理工具,這些工具使用起來簡(jiǎn)單方便,可以大大提高工作效率。(1)日志傳送功能日志傳送功能允許用戶連續(xù)備份源數(shù)據(jù)庫中的事務(wù)日志,并將這些日志文件存儲(chǔ)到另一臺(tái)服務(wù)器上的目標(biāo)數(shù)據(jù)庫中。這樣,無論是對(duì)于維護(hù)備用服務(wù)器,還是將查詢處理負(fù)載從源服務(wù)器遷移到一臺(tái)只讀目標(biāo)服務(wù)器上,都是非常有用的。(2)SQL事件探查器增強(qiáng)在SQLServer2000中。SQL事件探查器支持基于大小和基于時(shí)間的兩種跟蹤,并且還包括了“數(shù)據(jù)文件自動(dòng)增長(zhǎng)”,“日志文件自動(dòng)增長(zhǎng)”,“數(shù)據(jù)文件自動(dòng)壓縮”,“日志文件自動(dòng)壓縮”,“顯示全部計(jì)劃”,“顯示計(jì)劃統(tǒng)計(jì)”和“顯示計(jì)劃文本”中的新事件。(3)SQL查詢分析器增強(qiáng)SQLServer2000中的SQL查詢分析器增加了對(duì)象瀏覽器,這個(gè)瀏覽器允許用戶隨意瀏覽和獲取有關(guān)數(shù)據(jù)庫對(duì)象的信息。另外,對(duì)象瀏覽器還支持使用生成腳本執(zhí)行或創(chuàng)建對(duì)象。(4)復(fù)制數(shù)據(jù)庫向?qū)г赟QLServer2000中,可以使用復(fù)制數(shù)據(jù)庫向?qū)QLServer7.0版數(shù)據(jù)庫升級(jí)到SQLServer2000數(shù)據(jù)庫。此向?qū)н€可以用于在SQLServer2000實(shí)例之間復(fù)制完整的數(shù)據(jù)庫。7.1.作為一個(gè)完善的數(shù)據(jù)庫管理系統(tǒng),SQLServer2000提供了一些功能強(qiáng)大,使用方便的數(shù)據(jù)庫管理工具。成功安裝了SQLServer2000以后,可以從開始菜單中看到如圖7.1所示的工具。下面,對(duì)這些組件作一個(gè)簡(jiǎn)單的介紹。1、企業(yè)管理器(EnterpriseManager)企業(yè)管理器是SQLServer中最重要的管理工具。在使用SQLServer的過程中,大部分的時(shí)間都是和它打交道。通過企業(yè)管理器可以管理所有的數(shù)據(jù)庫系統(tǒng)工作和服務(wù)器工作,也可以調(diào)用其他的管理開發(fā)工具。2、查詢分析器(QueryAnalyzer)查詢分析器用于執(zhí)行Transact-SQL命令等SQL腳本程序,以查詢分析或處理數(shù)據(jù)庫中的數(shù)據(jù)。這是一個(gè)非常實(shí)用的工具,對(duì)掌握SQL語言、理解SQLServer的工作有很大幫助。使用查詢分析器的熟練程度是衡量一個(gè)SQLServer用戶水平的標(biāo)準(zhǔn)。3、服務(wù)管理器(ServiceManager)服務(wù)管理器用于啟動(dòng)、暫停或停止SQLServer的四種服務(wù),即分布式事務(wù)協(xié)調(diào)器(DistributedTransactionCoordinator,DTC)、MSSQLServerOLAPservice、SQLServer和SQLServerAgent。4、客戶端網(wǎng)絡(luò)實(shí)用工具(ClientNetworkUtility)客戶端網(wǎng)絡(luò)實(shí)用工具用于配置客戶端的連接、測(cè)定網(wǎng)絡(luò)庫的版本信息以及設(shè)定本地?cái)?shù)據(jù)庫的相關(guān)選項(xiàng)。5、服務(wù)器端網(wǎng)絡(luò)實(shí)用工具(ServerNetworkUtility)服務(wù)器端網(wǎng)絡(luò)實(shí)用工具用于配置服務(wù)器端的連接、測(cè)定網(wǎng)絡(luò)庫的版本信息。6、導(dǎo)入和導(dǎo)出數(shù)據(jù)(ImportandExportData)導(dǎo)入和導(dǎo)出數(shù)據(jù)采用DTSImport/Export向?qū)硗瓿桑讼驅(qū)О怂械臄?shù)據(jù)轉(zhuǎn)換服務(wù)(DataTransformationServices,DTS)工具,提供了在OLEDB數(shù)據(jù)源之間復(fù)制數(shù)據(jù)的最簡(jiǎn)捷的方法。7、在IIS中配置SQLXML支持(ConfigureSQLXMLSupportinIIS)因特網(wǎng)信息服務(wù)(InternetInformationServices,IIS)工具可以在運(yùn)行IIS的計(jì)算機(jī)上定義、注冊(cè)虛擬目錄,并在虛擬目錄和SQLServer實(shí)例之間創(chuàng)建關(guān)聯(lián)。8、事件探查器(Profiler)事務(wù)探查器的功能是監(jiān)視SQLServer數(shù)據(jù)庫系統(tǒng)引擎事件,主要用于監(jiān)聽SQLServer系統(tǒng)的運(yùn)行性能。9、聯(lián)機(jī)叢書(BookOnline)SQLServer2000提供了大量的聯(lián)機(jī)文檔,用戶可以便捷地查到許多很有價(jià)值的信息。一個(gè)優(yōu)秀的SQLServer管理員必然是使用聯(lián)機(jī)文檔的高手。另外,在安裝SQLServer2000的同時(shí),安裝了SQLServer的升級(jí)向?qū)?,在“開始”菜單的“程序”項(xiàng)中,將鼠標(biāo)移到“MicrosoftSQLServer—版本切換”上即可看到SQLServer升級(jí)向?qū)?。SQLServer升級(jí)向?qū)в糜趯⒁粋€(gè)6.5版本的SQLServer的設(shè)置和數(shù)據(jù)庫復(fù)制升級(jí)到本機(jī)上安裝的SQLServer2000中。圖7.1SQLServer2000工具菜單7.2企業(yè)管理器企業(yè)管理器(EnterpriseManager)是SQLSERVER程序組中的最重要的程序之一,是管理服務(wù)器和數(shù)據(jù)庫的主要工具??梢詮拈_始菜單命令“開始→程序→MicrosoftSQLServer→企業(yè)管理器”打開企業(yè)管理器。如圖7.2圖7.2企業(yè)管理器可以看到,企業(yè)管理器的操作窗口和Windows文件管理器非常相似。在企業(yè)管理器中包含兩個(gè)窗口,其中左側(cè)的窗口是以“樹狀目錄”顯示的活動(dòng)窗口,右側(cè)是顯示內(nèi)容的窗口,通過單擊左側(cè)窗口中的加號(hào)可以展開各個(gè)項(xiàng)目包含的子項(xiàng)目,通過選種某個(gè)項(xiàng)目節(jié)點(diǎn)可以在右側(cè)的內(nèi)容窗口中看到該項(xiàng)目包含的內(nèi)容。1、樹狀目錄窗口在左邊的樹狀目錄中,根節(jié)點(diǎn)是“控制面板根目錄”,表示它是所有服務(wù)器控制面板的根。在它的下一級(jí)節(jié)點(diǎn)中,有一個(gè)節(jié)點(diǎn)是“MicrosoftSQLServer”,所有的SQLServer服務(wù)器組都包含在這個(gè)節(jié)點(diǎn)下。可以在“MicrosoftSQLServer”節(jié)點(diǎn)下面根據(jù)需要?jiǎng)?chuàng)建新的服務(wù)器,一般將按照服務(wù)器功能和用途的不同,將服務(wù)器分配到不同組中。2、內(nèi)容窗口企業(yè)管理器右邊的窗口為內(nèi)容窗口。在該窗口中顯示的是在樹狀目錄處于“焦點(diǎn)”狀態(tài)(或選種狀態(tài))的條目中包含的內(nèi)容。可以根據(jù)自己的需要或習(xí)慣更改內(nèi)容窗口的瀏覽模式,可供選擇的瀏覽模式有7種:大圖標(biāo),小圖標(biāo),列表,詳細(xì)信息,任務(wù)版,默認(rèn)數(shù)據(jù)庫關(guān)系圖和企業(yè)管理器的工具菜單。企業(yè)管理器中的菜單分為上下兩行,其中上面一行包括“控制面版”,“窗口”和“幫助”,通過這三個(gè)菜單項(xiàng)可以實(shí)現(xiàn)退出企業(yè)管理器,排列窗口和查詢聯(lián)機(jī)幫助等操作;下面一行菜單是針對(duì)每一個(gè)樹狀目錄中的項(xiàng)目的,包括“操作”,“查看”,“工具”。每個(gè)菜單中可用的條目會(huì)根據(jù)在樹狀目錄中“焦點(diǎn)”狀態(tài)的變化而變化。通過這三個(gè)菜單,可以完成大量的任務(wù),例如,通過選擇“工具”菜單中的命令“SQL查詢分析器”可以直接打開查詢分析器。7.3查詢分析器查詢分析器(QueryAnalyzer)是SQLServer提供的使用方便,界面友好的Transact-SQL語句編譯工具,是SQLServer2000客戶端應(yīng)用程序的重要組成部分。用戶可以通過“開始”菜單或從SQLServer企業(yè)管理器內(nèi)運(yùn)行它。還可以通過執(zhí)行isqlw實(shí)用工具從命令提示符運(yùn)行SQL查詢分析器。啟動(dòng)時(shí)系統(tǒng)首先打開“連接到SQLServer”對(duì)話框,如圖7.3所示。圖7.3啟動(dòng)查詢分析器使用該對(duì)話框可以指定連接到哪個(gè)SQLServer服務(wù)器。選擇服務(wù)器并設(shè)置正確的身份驗(yàn)證方式,單擊“確定”按鈕,即可打開SQLServer查詢分析器,如圖7.4所示圖7.4查詢分析器查詢分析器左邊的窗口是“對(duì)象瀏覽器”,這個(gè)窗口是SQLServer2000中新增的窗口。該窗口包含兩個(gè)選項(xiàng)卡:1)“對(duì)象”選項(xiàng)卡—用于瀏覽SQLServer中所有的數(shù)據(jù)庫對(duì)象,內(nèi)置函數(shù)和數(shù)據(jù)庫類型等;2)“模版”選項(xiàng)卡—提供一些常用的程序模版,用戶可以在這些模版的基礎(chǔ)上進(jìn)行修改,以簡(jiǎn)化Transact-SQL語言的輸入操作。查詢分析器中右邊的窗口是查詢窗口??梢酝瑫r(shí)顯示多個(gè)查詢窗口,每個(gè)查詢窗口包含一個(gè)編輯查詢窗口和一個(gè)結(jié)果窗口。編輯查詢窗口用來書寫和編輯Transact-SQL語句,結(jié)果窗格用于顯示語句的執(zhí)行情況或結(jié)果集。7.4管理數(shù)據(jù)庫7.4.1系統(tǒng)數(shù)據(jù)庫SQLServer2000系統(tǒng)有四種系統(tǒng)數(shù)據(jù)庫:1、master數(shù)據(jù)庫master數(shù)據(jù)庫記錄SQLServer系統(tǒng)的所有系統(tǒng)級(jí)別信息。它記錄所有的登錄賬戶和系統(tǒng)配置設(shè)置。master數(shù)據(jù)庫是這樣一個(gè)數(shù)據(jù)庫,它記錄所有其它數(shù)據(jù)庫的相關(guān)信息,其中包括數(shù)據(jù)庫文件的位置。master數(shù)據(jù)庫記錄SQLServer的初始化信息,它始終有一個(gè)可用的最新master數(shù)據(jù)庫備份供系統(tǒng)使用。2、tempdb數(shù)據(jù)庫tempdb數(shù)據(jù)庫保存所有的臨時(shí)表和臨時(shí)存儲(chǔ)過程。它還滿足任何其它的臨時(shí)存儲(chǔ)要求,例如存儲(chǔ)SQLServer生成的工作表。所有連接到系統(tǒng)的用戶的臨時(shí)表、存儲(chǔ)過程及用戶說明的全局變量值等都存儲(chǔ)在該數(shù)據(jù)庫中。在Tempdb數(shù)據(jù)庫中所做的存儲(chǔ)不會(huì)被記錄,因而在Tempdb數(shù)據(jù)庫中的表上進(jìn)行數(shù)據(jù)操作比在其它數(shù)據(jù)庫中要快得多。3、model數(shù)據(jù)庫model數(shù)據(jù)庫用作在系統(tǒng)上創(chuàng)建的所有數(shù)據(jù)庫的模板(包括用戶數(shù)據(jù)庫和tempdb數(shù)據(jù)庫)。當(dāng)創(chuàng)建數(shù)據(jù)庫時(shí),系統(tǒng)會(huì)將Model數(shù)據(jù)庫中的內(nèi)容復(fù)制到新建的數(shù)據(jù)庫中去。由于SQLServer每次啟動(dòng)時(shí)都要?jiǎng)?chuàng)建tempdb數(shù)據(jù)庫,model數(shù)據(jù)庫必須一直存在于SQLServer系統(tǒng)中。通常可以將以下內(nèi)容添加到Model數(shù)據(jù)庫中:①數(shù)據(jù)庫的最小容量;②數(shù)據(jù)庫選項(xiàng)設(shè)置;③經(jīng)常使用的數(shù)據(jù)庫對(duì)象,如用戶自定義的數(shù)據(jù)類型、函數(shù)規(guī)則和缺省值等。4、msdb數(shù)據(jù)庫SQLServer企業(yè)管理器和SQLServerAgent使用Msdb數(shù)據(jù)庫來存儲(chǔ)計(jì)劃信息以及與備份和還原相關(guān)的信息,尤其是SQLServerAgent需要使用Msdb數(shù)據(jù)庫來執(zhí)行安排工作和警報(bào)以及記錄操作者等操作。7.4.2實(shí)例數(shù)據(jù)庫SQLServer2000有兩個(gè)實(shí)例數(shù)據(jù)庫:pubs和Northwind。與系統(tǒng)數(shù)據(jù)庫一樣,實(shí)例數(shù)據(jù)庫的文件也存儲(chǔ)在SQLServer2000默認(rèn)安裝目錄的Data目錄中。Pubs和Northwind數(shù)據(jù)庫可以作為SQLServer2000的學(xué)習(xí)工具。其中,pubs實(shí)例數(shù)據(jù)庫存儲(chǔ)了一個(gè)虛構(gòu)的圖書出版公司的基本情況,Northwind實(shí)例數(shù)據(jù)庫包含了一個(gè)公司的銷售數(shù)據(jù),是一個(gè)虛構(gòu)的公司,該公司從事世界各地的特產(chǎn)食品進(jìn)出口貿(mào)易。7.4.3創(chuàng)建數(shù)據(jù)庫在SQLServer2000中創(chuàng)建數(shù)據(jù)庫的場(chǎng)所有兩處:一是在企業(yè)管理器中使用現(xiàn)成的命令和功能交互式創(chuàng)建,二是在查詢分析器中書寫Transact-SQL語句。本章將對(duì)這兩個(gè)方法分別闡述。首先介紹如何使用企業(yè)管理器創(chuàng)建自己的用戶數(shù)據(jù)庫。使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫,可以采用兩種方法:①使用創(chuàng)建數(shù)據(jù)庫向?qū)?;②在控制面板樹上選擇數(shù)據(jù)庫,然后選擇“新建數(shù)據(jù)庫”菜單命令直接創(chuàng)建用戶數(shù)據(jù)庫。對(duì)于初學(xué)者來說,數(shù)據(jù)庫創(chuàng)建向?qū)Ш?jiǎn)單易用,但是它的使用在一定程度上限制了物理數(shù)據(jù)庫的復(fù)雜程度,所以在實(shí)際操作中并不常用。因此,我們主要討論第二種方法。在企業(yè)管理器中直接創(chuàng)建用戶數(shù)據(jù)庫的步驟如下:(1)打開企業(yè)管理器(2)在控制面板目錄中選擇“數(shù)據(jù)庫”節(jié)點(diǎn)圖7.5在企業(yè)管理器中創(chuàng)建用戶數(shù)據(jù)庫圖7.6數(shù)據(jù)庫屬性對(duì)話框(3)在“數(shù)據(jù)庫”節(jié)點(diǎn)上單擊右鍵,并在彈出的菜單中選擇“新建數(shù)據(jù)庫”,如圖7.5執(zhí)行上述操作以后,就會(huì)出現(xiàn)如圖7.6所示的數(shù)據(jù)庫屬性對(duì)話框(4)在“名稱”文本框中輸入數(shù)據(jù)庫的名稱student。(5)點(diǎn)擊“數(shù)據(jù)文件”選項(xiàng)卡?!皵?shù)據(jù)文件”是SQLServer2000用于實(shí)際存儲(chǔ)數(shù)據(jù)、索引等數(shù)據(jù)庫對(duì)象的文件。在“數(shù)據(jù)文件”選項(xiàng)卡中指定數(shù)據(jù)庫文件的名稱,存儲(chǔ)位置,初始容量大小和所屬文件組等屬性,并進(jìn)行數(shù)據(jù)庫文件大小,擴(kuò)充方式和容量限制的設(shè)置。(6)點(diǎn)擊“日志文件”選項(xiàng)卡指定事務(wù)日志文件的名稱。存儲(chǔ)位置和初始容量大小等屬性,并進(jìn)行事務(wù)文件大小,擴(kuò)充方式和容量限制的設(shè)置?!笆聞?wù)日志”文件是用來記錄數(shù)據(jù)庫更新情況的文件,擴(kuò)展名為“.ldf”。例如使用INSERT,UPDATE,DELETE等對(duì)數(shù)據(jù)庫進(jìn)行更改的操作都會(huì)被記錄在此文件中,而如SELECT等對(duì)數(shù)據(jù)庫內(nèi)容不會(huì)有影響的操作則不會(huì)被記錄在案。一個(gè)數(shù)據(jù)庫可以有一個(gè)或多個(gè)事務(wù)日志文件。(7)單擊“確定”按鈕,則創(chuàng)建一個(gè)新數(shù)據(jù)庫。數(shù)據(jù)庫名稱最長(zhǎng)128個(gè)字符,且不區(qū)分大小寫,每個(gè)SQLServer實(shí)例的數(shù)據(jù)庫個(gè)數(shù)可達(dá)32767個(gè),一個(gè)數(shù)據(jù)庫在理論上可以管理32767個(gè)文件。7.4.4查看數(shù)據(jù)庫信息1、用企業(yè)管理器查看數(shù)據(jù)庫信息SQLServer2000提供了目錄樹的瀏覽方式,使得瀏覽數(shù)據(jù)庫信息非常方便,快捷。在企業(yè)管理器窗口中查看數(shù)據(jù)庫信息的方法如下。(1)方法1:在企業(yè)管理器窗口中的左側(cè)目錄樹窗口中,展開“數(shù)據(jù)庫”文件夾,在某個(gè)數(shù)據(jù)庫名稱上先單左鍵,再單擊右鍵,在出現(xiàn)的快捷菜單中單擊“查看”中的“任務(wù)板”。(2)方法2:在企業(yè)管理器窗口中的左側(cè)目錄樹窗口中,展開“數(shù)據(jù)庫”文件夾,單擊某個(gè)數(shù)據(jù)庫名稱,然后單擊“查看”菜單,在其下拉菜單中單擊“任務(wù)板”。操作完成后,在企業(yè)管理器窗口右側(cè)的“任務(wù)板”窗口中看到數(shù)據(jù)庫的“常規(guī)”信息,“表”信息和“向?qū)А毙畔?。在打開數(shù)據(jù)庫文件夾目錄樹后,可以選擇各種數(shù)據(jù)庫對(duì)象進(jìn)行信息瀏覽。7.4.5更改數(shù)據(jù)庫在創(chuàng)建了用戶數(shù)據(jù)庫以后,有時(shí)會(huì)根據(jù)需要對(duì)數(shù)據(jù)庫進(jìn)行修改。數(shù)據(jù)庫的修改包括添加、刪除和修改文件或文件組,更改數(shù)據(jù)文件和事務(wù)日志文件的容量,增長(zhǎng)方式和存儲(chǔ)路徑等。1、使用企業(yè)管理器修改數(shù)據(jù)庫的一個(gè)簡(jiǎn)單快捷的方法是使用企業(yè)管理器,使用它修改數(shù)據(jù)庫結(jié)構(gòu)的步驟下:(1)打開需要修改的用戶數(shù)據(jù)庫的數(shù)據(jù)庫屬性對(duì)話框。(2)在屬性對(duì)話框中對(duì)相關(guān)內(nèi)容(如數(shù)據(jù)文件和事務(wù)日志文件的屬性)進(jìn)行修改。修改的過程和創(chuàng)建數(shù)據(jù)庫時(shí)的設(shè)置過程相似,在此不再贅述。2、使用ALTERDATABASE語句修改除使用企業(yè)管理器外,還可以使用ALTERDATABASE語句修改數(shù)據(jù)庫,語法如下:ALTERDATABASEdatabase{ADDFILE〈filespec〉[,…n][TOFILEGROUPfilegroup_name]|ADDLOGFILE〈filespec〉[,…n]|REMOVEFILElogical_file_name|ADDFILEGROUPfilegroup_name|REMOVEFILEGROUPfilegroup_name|MODIFYFILE<filespec>|MODIFYFILEGROUPfile_group_namefilegroup_property}<filespec>::=(NAME=logical_file_name[,FILENAME=’os_file_name’][,SIZE=size][,MAXSIZE={vmax_size|UNLIMITED}][,FILEGROWTH=growth_increment])各參數(shù)說明如下:(1)ADDFILE指定要增加的文件。(2)TOFILEGROUP指定要增加文件到哪個(gè)文件組。(3)ADDLOGFILE指定要增加的事務(wù)日志文件。(4)REMOVEFILE從數(shù)據(jù)庫系統(tǒng)表中刪除指定文件的定義并且刪除其物理文件。文件只有為空時(shí)才能被刪除。(5)ADDFILEGROUP指定要增加的文件組。(6)REMOVEFILEGROUP從數(shù)據(jù)庫中刪除指定文件組的定義并且刪除其包括的所有數(shù)據(jù)庫文件。文件組只有為空時(shí)才能被刪除。(7)MODIFYFILE修改指定文件的文件名,容量大小,最大容量以及文件增容方式等屬性,但一次只能修改一個(gè)文件的一個(gè)屬性。使用此項(xiàng)時(shí)應(yīng)注意:在文件格式filespec中必須指定NAME,以明確標(biāo)識(shí)要修改的文件名稱,如果文件大小已經(jīng)確定,那么新定義的文件大小size必須比當(dāng)前的文件容量大。FILENAME只能指定在tempdbdatabase中存在的文件,并且新的文件名只有在SQLServer2000重新啟動(dòng)后才發(fā)生作用。(8)MODIFYFILEGROUPfilegroup_name{filegroup_property}用于修改文件組屬性。文件組屬性可設(shè)置為:①READONLY指定文件組為只讀。主文件組不能指定為只讀。只有對(duì)數(shù)據(jù)庫有獨(dú)占訪問權(quán)限的用戶才可以將一個(gè)文件組標(biāo)志為只讀。②READWRITE使文件組為可讀寫。只有對(duì)數(shù)據(jù)庫有獨(dú)占訪問權(quán)限的用戶才可以將一個(gè)文件組標(biāo)志為可讀寫。③DEFAULT指定文件組為默認(rèn)文件組。一個(gè)數(shù)據(jù)庫中只能有一個(gè)默認(rèn)文件組。例7.1修改student數(shù)據(jù)庫的主數(shù)據(jù)文件的大小增加到15MB。ALTERDATABASEstudentMODIFYFILE(NAME='員工數(shù)據(jù)庫_dat',SIZE=15)3.更改數(shù)據(jù)庫名重命名數(shù)據(jù)庫需要使用系統(tǒng)存儲(chǔ)過程SP_renamedb,其語法如下:sp_renamedb[@old_name=]'old_name',[@new_name=]'new_name'例7.2更改student數(shù)據(jù)庫的名稱為study。execsp_renamedb'student','study'7.4.6刪除數(shù)據(jù)庫1、用企業(yè)管理器刪除數(shù)據(jù)庫在企業(yè)管理器中,在所要?jiǎng)h除的數(shù)據(jù)庫上單擊鼠標(biāo)右鍵,從快捷菜單中選擇“刪除”選項(xiàng)即可刪除數(shù)據(jù)庫,也可以選擇數(shù)據(jù)庫文件夾或圖標(biāo)后從工具欄中選擇圖標(biāo)來刪除數(shù)據(jù)庫。系統(tǒng)會(huì)提示是否要?jiǎng)h除數(shù)據(jù)庫。刪除數(shù)據(jù)庫一定要慎重,因?yàn)閿?shù)據(jù)庫刪除后,與此數(shù)據(jù)庫有關(guān)聯(lián)的數(shù)據(jù)庫文件和事務(wù)日志文件都會(huì)被刪除,存儲(chǔ)在系統(tǒng)數(shù)據(jù)庫中的關(guān)于該數(shù)據(jù)庫的所有信息也會(huì)被刪除。2、用DROPDATABASE命令刪除數(shù)據(jù)庫DROPDATABASE命令可以從SQLServer中依次刪除一個(gè)或幾個(gè)數(shù)據(jù)庫。數(shù)據(jù)庫所有者(DBO)和數(shù)據(jù)庫管理員(DBA)才有權(quán)執(zhí)行此命令。其語法如下:DROPDATABASEdatabase_name[,…n]例7.3刪除數(shù)據(jù)庫student。DROPDATABASEstudent7.4.7壓縮數(shù)據(jù)庫數(shù)據(jù)庫在使用一段時(shí)間后時(shí)常會(huì)出現(xiàn)因數(shù)據(jù)刪除而造成數(shù)據(jù)庫中空閑空間太多的情況,這時(shí)就需要減少分配給數(shù)據(jù)庫文件和事務(wù)日志文件的磁盤空間,以免浪費(fèi)磁盤空間。當(dāng)數(shù)據(jù)庫中沒有數(shù)據(jù)時(shí),可以修改數(shù)據(jù)庫文件屬性,直接改變其占用空間;但當(dāng)數(shù)據(jù)庫中有數(shù)據(jù)時(shí),這樣做會(huì)破壞數(shù)據(jù)庫中的數(shù)據(jù)。因此需要使用壓縮的方式來縮減數(shù)據(jù)庫空間。對(duì)數(shù)據(jù)庫可以進(jìn)行自動(dòng)壓縮,也可以進(jìn)行人工壓縮。1、自動(dòng)壓縮數(shù)據(jù)庫自壓縮數(shù)據(jù)庫的方法是:在企業(yè)管理器中左側(cè)窗口中,右鍵單擊某個(gè)數(shù)據(jù)庫名稱:在出現(xiàn)的快捷菜單中,單擊“屬性”菜單項(xiàng),出現(xiàn)“數(shù)據(jù)庫屬性”對(duì)話框;單擊對(duì)話框中的“選項(xiàng)”選項(xiàng)卡,在本頁中選擇“自動(dòng)收縮”選項(xiàng),讓系統(tǒng)自動(dòng)壓縮數(shù)據(jù)庫。2、人工壓縮數(shù)據(jù)庫(1)使用企業(yè)管理器壓縮在企業(yè)管理器界面下在要被壓縮大小的數(shù)據(jù)庫上選擇單擊鼠標(biāo)右鍵,在快捷菜單中選取所有任務(wù)→收縮數(shù)據(jù)庫,您將看到如圖7.7的界面圖7.7收縮數(shù)據(jù)庫您可以讓SQLServer盡可能地壓縮數(shù)據(jù)文件的大小,刪除未使用空間或者設(shè)置在數(shù)據(jù)庫被壓縮后,數(shù)據(jù)庫文件保留未使用空間在一定的比例下。如果希望讓此壓縮工作定時(shí)執(zhí)行的話,在“調(diào)度”處選擇,SQLServer默認(rèn)在每周的零時(shí)零點(diǎn)定時(shí)啟動(dòng)執(zhí)行此工作,如果希望自己安排執(zhí)行的時(shí)間的話,按“更改”鈕來加以設(shè)置。(2)用DBCCSHRINKDATABASE命令壓縮數(shù)據(jù)庫大小除了利用企業(yè)管理器來壓縮數(shù)據(jù)庫大小外,也可以使用DBCCSHRINKDATABASE命令來壓縮數(shù)據(jù)庫大小以刪除未使用空間。其語法格式如下:DBCCSHRINKDATABASE(數(shù)據(jù)庫名稱[,百分比][,{NOTRUNCATE|TRUNCATEONLY}])說明:百分比:在數(shù)據(jù)庫被壓縮后,數(shù)據(jù)庫文件保留的空間比率。如果指定的比例超過數(shù)據(jù)庫文件目前所遺留空間比例的話則無法壓縮該數(shù)據(jù)庫。NOTRUNCATE:數(shù)據(jù)庫壓縮后所遺留的空間保留在數(shù)據(jù)文件內(nèi),不會(huì)返回給操作系統(tǒng)。TRUNCATEONLY:數(shù)據(jù)庫壓縮后所遺留的空間返回給操作。SQLServer將數(shù)據(jù)庫文件內(nèi)未使用的空間交還給操作系統(tǒng),并且將文件壓縮為到最后一個(gè)allocated的extent,但是不會(huì)移動(dòng)任何數(shù)據(jù)在數(shù)據(jù)文件中的位置。如果使用此選項(xiàng)則“百分比”參數(shù)將無效。例7.4壓縮數(shù)據(jù)庫student的未使用空間為數(shù)據(jù)庫大小50%。dbccshrinkdatabase(student,50)(3)使用DBCCSHRINKFILE改變數(shù)據(jù)庫文件大小DBCCSHRINKFILE命令用于壓縮當(dāng)前數(shù)據(jù)庫中的文件,其語法如下:DBCCSHRINKFILE({文件名稱|file_id},{[,新的文件大小]{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}}))新的文件大小:以MB為單位,如果未加以指定則SQLServer盡可能地減少數(shù)據(jù)文件的大小。EMPTYFILE:使用此參數(shù)表示此數(shù)據(jù)文件已不再被使用,此數(shù)據(jù)文件內(nèi)的所有數(shù)據(jù)將會(huì)被移至同一文件組下的其他文件。經(jīng)過此參數(shù)的執(zhí)行,該數(shù)據(jù)文件就可以被drop掉。NOTRUNCATE:數(shù)據(jù)庫壓縮后所遺留的空間保留在數(shù)據(jù)文件內(nèi),不會(huì)返回給操作系統(tǒng)。TRUNCATEONLY:數(shù)據(jù)庫壓縮后所遺留的空間返回給操作系統(tǒng),并且將文件壓縮到最后一個(gè)allocated的extent,但是不會(huì)移動(dòng)任何數(shù)據(jù)在數(shù)據(jù)文件中的位置。如果使用此選項(xiàng)則“新的文件大小”參數(shù)將無效。例7.5壓縮數(shù)據(jù)庫student中的數(shù)據(jù)文件student到1MB。dbccshrinkfile(student,1)7.5管理數(shù)據(jù)表創(chuàng)建了一個(gè)數(shù)據(jù)庫以后,就可以在該數(shù)據(jù)庫中創(chuàng)建表了。表是一種最重要的數(shù)據(jù)庫對(duì)象,它在數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù),可以創(chuàng)建自己的數(shù)據(jù)表。同時(shí)表也是用來存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu),其結(jié)構(gòu)和電子表格相似,同樣有行和列組成。7.5.1用企業(yè)管理器創(chuàng)建數(shù)據(jù)表在企業(yè)管理器中創(chuàng)建表按以下步驟進(jìn)行。(1)在要?jiǎng)?chuàng)建表的數(shù)據(jù)庫中選擇“表”對(duì)象后,單擊右鍵從快捷菜單中選擇“新建表”選項(xiàng)或在工具欄中選擇圖標(biāo),即會(huì)出現(xiàn)定義列對(duì)話框,如圖7.8所示在此可設(shè)定表的列名、數(shù)據(jù)類型、精度和缺省值等屬性。圖7.8“創(chuàng)建數(shù)據(jù)表”對(duì)話框(2)將數(shù)據(jù)表中各列定義完畢后,單擊工具欄中的保存按鈕,即出現(xiàn)輸入新建表名的對(duì)話框。(3)輸入表名后,單擊“確定”按鈕,即會(huì)將表保存到數(shù)據(jù)庫中。7.5.2修改表1、表的重新命名(1)在企業(yè)管理器中展開希望重新命名的表所在的數(shù)據(jù)庫節(jié)點(diǎn),然后選中該數(shù)據(jù)庫節(jié)點(diǎn)下一級(jí)菜單中的“表”節(jié)點(diǎn)。(2)在希望重新命名的表上單擊鼠標(biāo)右鍵,在彈出菜單上選擇命令“重命名”,輸入新的表名稱。(3)按回車鍵,在彈出的對(duì)話框內(nèi)單擊“確定”按鈕當(dāng)表創(chuàng)建好后,可以根據(jù)需要對(duì)表的列,約束等屬性進(jìn)行添加,刪除和修改。這就需要修改表結(jié)構(gòu)2、修改數(shù)據(jù)表結(jié)構(gòu)打開希望修改表結(jié)構(gòu)的表設(shè)計(jì)窗口,在該窗口中可以執(zhí)行下列操作:(1)改數(shù)據(jù)表中字段定義(2)插入新字段如果希望為數(shù)據(jù)表添加新的字段,可以在某字段所在的行上單擊鼠標(biāo)右鍵,然后在彈出菜單中選擇“插入列”命令,該字段前面會(huì)插入一個(gè)空白行,在空白行中編輯新字段即可。(3)刪除現(xiàn)有字段選中該字段并單擊鼠標(biāo)右鍵,在彈出菜單中選擇命令“刪除列”。3、修改表格屬性在表設(shè)計(jì)窗口中單擊“表和索引屬性”按鈕,打開表格屬性窗口,在該窗口中可以設(shè)置與整個(gè)表相關(guān)的重要屬性,如“表”,“關(guān)系”,“索引/鍵”,“CHECK約束”。4、用存儲(chǔ)過程sp_rename修改表名和列名sp_rename存儲(chǔ)過程可以修改當(dāng)前數(shù)據(jù)庫中用戶對(duì)象的名稱,如表,列,索引,存儲(chǔ)過程等。其語法如下:execsp_rename[@objname=]'object_name',[@newname=]'new_name'[,[@objtype=]'object_type']其中[,[@objtype=]]'object_type']是要改名的對(duì)象的類型,其值可以為COLUMN、DATABASE、INDEX、USERDATATYPE和OBJECT。OBJECT值指代了系統(tǒng)表sysobjects中的所有對(duì)象,如表、視圖、存儲(chǔ)過程、觸發(fā)器、規(guī)則和約束等。OBJECT值為默認(rèn)值。例7.6更改s表中的列sno名稱為stusno。execsp_rename's.sno','stusno','column'7.5.3查看表1、查看表的屬性在企業(yè)管理器下選擇表名,單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選取“屬性”,將會(huì)出現(xiàn)如圖7.9的界面。在此界面中我們可以選擇“常規(guī)”以查看表結(jié)構(gòu),從中可以看到表的大部分屬性信息,如數(shù)據(jù)表的名稱,所有者,創(chuàng)建日期,文件組,記錄的行數(shù),數(shù)據(jù)表中的字段名稱,結(jié)構(gòu)和類型等。2、查看數(shù)據(jù)表中的數(shù)據(jù)在企業(yè)管理器中,用右鍵單擊要查看數(shù)據(jù)的表,從快捷菜單中選擇“打開表”,再選擇其子菜單中的“返回所有行”,如圖7.10,圖7.11所示3、用系統(tǒng)存儲(chǔ)過程查看表的信息sp_help存儲(chǔ)過程可以提供指定的數(shù)據(jù)庫對(duì)象的信息和系統(tǒng)或用戶定義的數(shù)據(jù)類型的信息。其語法如下:sp_help[[@objname=]name]sp_help存儲(chǔ)過程只用于當(dāng)前的數(shù)據(jù)庫,其中[@objname=]name子句指定對(duì)象的名稱。如果不指定對(duì)象的名稱,sp_help存儲(chǔ)過程就會(huì)列出當(dāng)前數(shù)據(jù)庫中的所有對(duì)象名稱,對(duì)象的所有者和對(duì)象的類型,但觸發(fā)器的信息需要用sp_helptrigger存儲(chǔ)過程來顯示。圖7.9查看數(shù)據(jù)表屬性對(duì)話框圖7.10查看數(shù)據(jù)表的步驟圖7.11打開的student數(shù)據(jù)表例7.7顯示當(dāng)前數(shù)據(jù)庫中的所有對(duì)象的信息:execsp_help。顯示student表的信息:execsp_helpstudent7.5.4用企業(yè)管理器刪除表在企業(yè)管理器中,用右鍵單擊要?jiǎng)h除的表,從快捷菜單中選擇“刪除”選項(xiàng),則會(huì)出現(xiàn)刪除對(duì)象對(duì)話框;單擊“全部除去”按鈕。即可以刪除表;單擊“顯示相關(guān)性”按鈕,即會(huì)出現(xiàn)“相關(guān)性”對(duì)話框,其中列出了表所依靠的對(duì)象和依賴于表的對(duì)象,當(dāng)有對(duì)象依賴于表時(shí)就不能刪除表了。7.5.5對(duì)表建立索引在SQLServer中,除了使用SQL語句創(chuàng)建索引外,還可用企業(yè)管理器創(chuàng)建索引。1、用索引創(chuàng)建向?qū)?chuàng)建索引(1)打開企業(yè)管理器,從工具欄中選擇快捷菜單“工具→向?qū)А保ㄈ鐖D7.12),打開“選擇向?qū)А睂?duì)話框。(2)在“選擇向?qū)А睂?duì)話框中選擇“數(shù)據(jù)庫→創(chuàng)建索引向?qū)А惫?jié)點(diǎn),單擊“確定”按鈕圖7.12用向?qū)?chuàng)建索引(3)在創(chuàng)建索引向?qū)У臍g迎對(duì)話框中,單擊“下一步”,打開“選擇數(shù)據(jù)庫和表”對(duì)話框。(4)在“選擇數(shù)據(jù)庫和表”對(duì)話框的“數(shù)據(jù)庫名稱”一欄中選擇數(shù)據(jù)庫,在“對(duì)象名”一欄中選擇表名。這里選擇了數(shù)據(jù)庫Student中表STUDENT(如圖7.14),單擊“下一步”。(5)在“選擇列”對(duì)話框中選擇將包含在索引中的字段。這里選擇基于“DEPT”字段創(chuàng)建索引(如圖7.15),然后單擊“下一步”。圖7.14選擇數(shù)據(jù)庫和表圖7.15選擇包含在索引中的字段(6)在“指定索引選項(xiàng)”對(duì)話框(如圖7.16)中設(shè)置索引選項(xiàng),各個(gè)選項(xiàng)含義如下。圖7.16設(shè)置索引選項(xiàng)圖7.17完成創(chuàng)建索引向?qū)蛊涑蔀榫奂饕褐付ㄔ撍饕秊榫奂饕?。因?yàn)樵谝粋€(gè)表內(nèi)只能存在一個(gè)聚集索引,因此如果已經(jīng)存在聚集索引,則該選項(xiàng)不能選。使其成為唯一性索引:指定將該索引創(chuàng)建為唯一索引。填充因子:設(shè)置填充因子,并設(shè)置系統(tǒng)在最初創(chuàng)建索引時(shí)索引頁的填充程度。如果希望系統(tǒng)自動(dòng)填充因子,請(qǐng)選擇“最佳”;如果希望自己設(shè)置填充因子,選擇“固定”,并在右邊輸入一個(gè)數(shù)字,該數(shù)字表示的是百分比。(7)設(shè)置完索引選項(xiàng)以后,單擊“下一步”,彈出“正在完成創(chuàng)建索引向?qū)А睂?duì)話框,在該對(duì)話框中顯示了索引名稱和包含在索引中的字段。在這個(gè)對(duì)話框中還可以為索引重新命名(如圖7.17)2、使用企業(yè)管理器創(chuàng)建索引使用創(chuàng)建索引向?qū)щm然可以創(chuàng)建索引并設(shè)置索引的一些屬性,但是有一定的局限性。下面仍以student數(shù)據(jù)庫中的STUDENT表為例,介紹如何使用企業(yè)管理器創(chuàng)建和管理索引。(1)選擇表“STUDENT”,單擊鼠標(biāo)右鍵。在彈出菜單中選擇命令“所有任務(wù)→管理索引”(如圖7.18),打開“管理索引”對(duì)話框。(2)在“管理索引”對(duì)話框中從“數(shù)據(jù)庫”下拉菜單中選擇數(shù)據(jù)庫student,從“表/視圖”下拉菜單中選擇表[dbo].[STUDENT](如圖7.19)(3)此時(shí)在“現(xiàn)有索引”的列表框中會(huì)列出表s中現(xiàn)存的索引。本例在“SNO”字段上創(chuàng)建一個(gè)新的索引,所以選擇“新建”按鈕,彈出“新建索引”對(duì)話框(如圖7.20)圖7.18打開“管理索引”對(duì)話框的菜單命令圖7.19“管理索引”對(duì)話框圖7.20“新建索引”對(duì)話框(4)在“新建索引”對(duì)話框的索引名稱文本框中輸入索引名稱,然后選擇字段“SNO”并設(shè)置索引屬性(5)設(shè)置索引選項(xiàng)后,單擊“確定”按鈕即可。3、查看和修改索引(1)用企業(yè)管理器查看和修改索引在企業(yè)管理器的左側(cè)窗格中,展開要查看和修改索引的表所在的數(shù)據(jù)庫,然后單擊“表”項(xiàng)目。在企業(yè)管理器的右側(cè)窗格中,在要查看和修改索引的表名上面單擊鼠標(biāo)右鍵,此時(shí)出現(xiàn)快捷菜單,用鼠標(biāo)指向快捷菜單中的“所有任務(wù)”菜單項(xiàng),此時(shí),出現(xiàn)下一級(jí)菜單。從中選擇“管理索引”菜單項(xiàng),則會(huì)出現(xiàn)如圖7.21所示的對(duì)話框。在此對(duì)話框中,顯示了當(dāng)前表上所建立的各個(gè)索引的名稱及有關(guān)的索引類型,若想增加新的索引,則單擊“新建”按鈕;若想修改現(xiàn)有的某個(gè)索引,則可單擊該索引,然后再單擊“編輯”按鈕;若想刪除現(xiàn)有的某個(gè)索引,則可先單擊它,然后單擊“刪除”按鈕。圖7.21“管理索引”對(duì)話框(2)用sp_helpindex存儲(chǔ)過程查看索引sp_helpindex存儲(chǔ)過程可以返回表中的所有索引的信息,其語法如下:sp_helpindex[@objname=]'name'其中[@objname=]'name'子句指定當(dāng)前數(shù)據(jù)庫中的表的名稱。例7.8查看S表的索引。execsp_helpindexS4、用sp_rename存儲(chǔ)過程更改索引名稱sp_rename存儲(chǔ)過程可以更改索引的名稱,其語法格式如下:sp_rename'數(shù)據(jù)表名.原索引名','新索引名'例7.9更改S表中索引insno改為dxsno。execsp_rename'S.insno','dxsno'5、刪除索引(1)用企業(yè)管理器刪除索引在企業(yè)管理器中可以從如圖7.21所示的“索引管理”對(duì)話框或表的屬性對(duì)話框中選擇要?jiǎng)h除的索引,再選擇“刪除”按鈕來刪除索引。(2)用DROPINDEX命令刪除索引DROPINDEX命令可以刪除一個(gè)或多個(gè)當(dāng)前數(shù)據(jù)庫中的索引,其語法如下:DROPINDEX'tablename.indexname'[,…n]DROPINDEX命令不能刪除有CREATETABLE或ALTERTABLE命令創(chuàng)建的PRIMARYKEY或UNIQUE約束索引,也不能刪除系統(tǒng)表中的索引。例7.10刪除表S中的索引dxsno。dropindexS.dxsno7.6用企業(yè)管理器管理數(shù)據(jù)創(chuàng)建了數(shù)據(jù)庫,也創(chuàng)建了若干數(shù)據(jù)庫表了,接下來就要向表中添加數(shù)據(jù),輸入有誤時(shí)會(huì)修改數(shù)據(jù),不需要的數(shù)據(jù)要能刪除掉,這些維護(hù)數(shù)據(jù)的操作SQL命令能完成的,這里主要介紹在企業(yè)管理器中如何交互界面操作的方法。維護(hù)表數(shù)據(jù)需要有相應(yīng)的權(quán)限。在添加數(shù)據(jù)時(shí),對(duì)于不同的列數(shù)據(jù)類型,要注意插入數(shù)據(jù)的格式要求。數(shù)據(jù)按輸入的順序保存。7.6.1添加數(shù)據(jù)在SQLServer中,除使用INSERT語句向數(shù)據(jù)表中添加新記錄數(shù)據(jù)外,還可以在企業(yè)管理器中,查看數(shù)據(jù)表的數(shù)據(jù)時(shí)添加數(shù)據(jù),但這種方式不能應(yīng)付數(shù)據(jù)的大量插入。添加的方法是:利用前面介紹的方法打開待加入記錄數(shù)據(jù)的數(shù)據(jù)表(如圖7.11),在彈出的窗口中,單擊最后的空白行,分別向各字段中輸入新數(shù)據(jù)即可。當(dāng)輸入一個(gè)新記錄的數(shù)據(jù)后,會(huì)自動(dòng)在最后出現(xiàn)一新的空白行,用戶可以繼續(xù)連續(xù)輸入多個(gè)記錄的數(shù)據(jù)。7.6.2刪除數(shù)據(jù)在SQLServer中,除使用DELETE語句刪除數(shù)據(jù)表中的記錄數(shù)據(jù)外,還可以在企業(yè)管理器中,在查看數(shù)據(jù)表的數(shù)據(jù)時(shí)刪除數(shù)據(jù),但這種方式比較適合于刪除單個(gè)或少量的記錄等簡(jiǎn)單情況。刪除數(shù)據(jù)的具體方法是:打開要?jiǎng)h除記錄數(shù)據(jù)的數(shù)據(jù)表,在如圖7.22的窗口中,單擊記錄左側(cè)的小方快,此時(shí)該記錄為黑色,表示已選擇了該記錄,如圖7.22所示。也可以用鼠標(biāo)在記錄左側(cè)的區(qū)域上,下拖動(dòng)來選擇多個(gè)記錄。此時(shí)按下Del鍵,系統(tǒng)會(huì)出現(xiàn)如圖7.23所示的對(duì)話框,提示用戶是否要?jiǎng)h除記錄,如果用戶單擊“是”按鈕,則記錄被刪除,如果用戶單擊“否”按鈕,則記錄將不被刪除。圖7.22選擇待刪除的記錄圖7.23刪除記錄確認(rèn)對(duì)話框7.6.3修改數(shù)據(jù)在SQLServer中,除使用UPDATE語句修改數(shù)據(jù)表中的數(shù)據(jù)外,還可以在企業(yè)管理器中,在查看數(shù)據(jù)庫表的數(shù)據(jù)時(shí)修改數(shù)據(jù),但這種方式不能應(yīng)付大量的數(shù)據(jù)修改。修改數(shù)據(jù)的方法是:打開待修改記錄數(shù)據(jù)的數(shù)據(jù)表,在如圖7.22所示的窗口中,單擊要修改的記錄,分別向各字段中輸入新數(shù)據(jù)即可,原數(shù)據(jù)被新數(shù)據(jù)覆蓋。注意:數(shù)據(jù)一旦交互更新后,將不能撤消操作。除非利用實(shí)時(shí)的日志信息來恢復(fù)。7.7數(shù)據(jù)完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫數(shù)據(jù)的正確性、有效性和相容性,SQLServer2000有全面的措施來保障數(shù)據(jù)完整性。7.7.1數(shù)據(jù)完整性概述數(shù)據(jù)完整性(DataIntegrity)是指數(shù)據(jù)的精確性和可靠性。它是為防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止因錯(cuò)誤信息的輸入輸出造成無效操作或錯(cuò)誤信息而提出的。數(shù)據(jù)完整性分為四類:實(shí)體完整性(EntityIntegrity),域完整性(DomainIntegrity),參照完整性(ReferentialIntegrity),用戶定義的完整性(User-definedIntegrity)。SQLServer提供了一些工具來幫助用戶實(shí)現(xiàn)數(shù)據(jù)完整性,其中最主要的是規(guī)則,默認(rèn),約束和觸發(fā)器。其中約束在前面的章節(jié)已經(jīng)介紹,觸發(fā)器將在后面章節(jié)中介紹。本章介紹規(guī)則和默認(rèn)。7.7.2規(guī)則所謂規(guī)則是指當(dāng)您對(duì)表做新建或操作時(shí)該列輸入值必須符合預(yù)先設(shè)置的條件,如果不符合的話SQLServer就不會(huì)讓該條數(shù)據(jù)新建至表內(nèi)或被操作。規(guī)則與其作用的表或用戶自定義數(shù)據(jù)類型是相互獨(dú)立的,即表或用戶自定義數(shù)據(jù)類型的刪除、修改不會(huì)對(duì)與之相連的規(guī)則產(chǎn)生影響。規(guī)則和約束可以同時(shí)使用,表的列可以有一個(gè)規(guī)則及多個(gè)CHECK約束。規(guī)則與CHECK約束很相似。以下所要介紹的是用戶如何利用企業(yè)管理器或CREATERULE命令創(chuàng)建一獨(dú)立的規(guī)則定義,當(dāng)這些列規(guī)則定義創(chuàng)建起來后它們會(huì)有自己的名字稱呼,也會(huì)象表一樣成為數(shù)據(jù)庫的對(duì)象之一。用戶要使用時(shí)可以將這些規(guī)則綁定至表的列或用戶自定的數(shù)據(jù)類型上,如果不使用時(shí)再將其綁定解除。1、利用企業(yè)管理器來管理規(guī)則首先在企業(yè)管理器主界面下利用鼠標(biāo)選擇要管理規(guī)則的數(shù)據(jù)庫,將其展開。選中“規(guī)則”彈出如圖7.24的界面。如要查看某一列規(guī)則的內(nèi)容,在列出的規(guī)則名稱處雙擊鼠標(biāo)即可(如圖7.25)。圖7.24管理規(guī)則圖7.25查看規(guī)則屬性如果要更改某一處規(guī)則名的話,在該列規(guī)則名稱處單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選取重命名即可。也可以在查詢分析器下執(zhí)行sp_rename來更改規(guī)則的名稱,以下是sp_rename的語法:sp_rename舊規(guī)則名稱,新規(guī)則名稱2、創(chuàng)建規(guī)則圖7.26新建規(guī)則在企業(yè)管理器主界面下利用鼠標(biāo)選擇要?jiǎng)?chuàng)建規(guī)則的數(shù)據(jù)庫,將其展開。選取“規(guī)則”單擊鼠標(biāo)右鍵,在出現(xiàn)的快捷菜單中選取“新建規(guī)則”,如圖7.26所示。此時(shí)將會(huì)出現(xiàn)如圖7.27所示的創(chuàng)建規(guī)則界面。圖7.27創(chuàng)建規(guī)則在“名稱”處輸入規(guī)則的名稱,在“文本”處輸入該規(guī)則運(yùn)算式。規(guī)則的條件運(yùn)算式必須以局部變量名稱起頭(也即第一個(gè)字符必須為“@”),該變量名稱可以隨意取名。3、使用CREATERULE命令創(chuàng)建規(guī)則除了可以利用企業(yè)管理器創(chuàng)建規(guī)則外,也可以使用CREATERULE命令創(chuàng)建規(guī)則。CREATERULE命令的語法如下:CREATERULE[擁有者.]規(guī)則名稱AS條件運(yùn)算式(規(guī)則的定義)。規(guī)則的定義可以是用于WHERE條件子句中的任何表達(dá)式,可包含算術(shù)運(yùn)算符,關(guān)系運(yùn)算符和謂詞(如IN,LIKE,BETWEEN等)。例7.11創(chuàng)建學(xué)生性別規(guī)則。createruleru_sexas@sexin('男','女')4、用存儲(chǔ)過程查看規(guī)則使用sp_helptext存儲(chǔ)過程可以查看規(guī)則的細(xì)節(jié),其語法規(guī)則如下:sp_helptext[@objname=]'name'其中,[@objname=]'name'子句指明對(duì)象的名稱,用sp_helptext存儲(chǔ)過程查看的對(duì)象可以是當(dāng)前數(shù)據(jù)庫中的規(guī)則,默認(rèn),觸發(fā)器,視圖或?yàn)榧用艿拇鎯?chǔ)過程。例7.12查看名稱為“ru_sex”的規(guī)則的內(nèi)容。execsp_helptext'ru_sex'5、規(guī)則的綁定與松綁當(dāng)規(guī)則創(chuàng)建好后它必須和表內(nèi)的列綁定才可以發(fā)揮作用。要將規(guī)則定義與表列綁定,首先在企業(yè)管理器下單擊數(shù)據(jù)庫的對(duì)象“規(guī)則”,即可在右邊的窗口中看到已創(chuàng)建的規(guī)則名稱,在相應(yīng)的規(guī)則名稱上面單擊鼠標(biāo)右鍵,從快捷菜單中選擇“屬性”選項(xiàng),會(huì)出現(xiàn)“規(guī)則屬性”對(duì)話框,可參見圖7.27,該對(duì)話框中的“綁定UDT”按鈕用于將規(guī)則綁定到用戶自定義數(shù)據(jù)類型,“綁定列”按鈕出用于將規(guī)則綁定到表的列。在“規(guī)則屬性”對(duì)話框中,單擊“綁定UDT”按鈕,則出現(xiàn)“綁定規(guī)則到用戶自定義數(shù)據(jù)類型”的對(duì)話框,單擊“綁定列”按鈕則出現(xiàn)“將規(guī)則綁定到列”的對(duì)話框?,F(xiàn)如圖7.28所示界面。圖7.28“規(guī)則的綁定”對(duì)話框在該對(duì)話框中,在“表”所對(duì)應(yīng)的下拉列表中,選擇相應(yīng)的數(shù)據(jù)表(如STUDENT表),在左邊“未綁定的列”列表只能單擊要綁定的某個(gè)列(如sex),然后單擊“添加”按鈕,將該列添加到“綁定列”中,最后單擊“確定”,這時(shí)規(guī)則就被綁定到所選定的列上了。除了用企業(yè)管理器綁定規(guī)則外,還可以使用存儲(chǔ)過程綁定規(guī)則。(1)存儲(chǔ)過程sp_bindrule可以將一個(gè)規(guī)則綁定到表的一列或一個(gè)用戶自定義數(shù)據(jù)類型上。其語法如下:sp_bindrule[@rulename=]'rule',[@objname=]'object_name'[,'futureonly']各參數(shù)說明如下:①[@rulename=]'rule'指定規(guī)則名稱。②[@objname=]'object_name'指定規(guī)則綁定的對(duì)象。③'futureonly'選項(xiàng)僅在綁定規(guī)則到用戶自定義數(shù)據(jù)類型上時(shí)才可以使用。當(dāng)指定此選項(xiàng)時(shí),只有以后使用此用戶自定義數(shù)據(jù)類型的列會(huì)應(yīng)用新規(guī)則,而當(dāng)前已經(jīng)使用此數(shù)據(jù)類型的列不受影響。例7.13綁定規(guī)則ru_sex到s表的字段sex。execsp_bindrule'ru_sex','s.sex'注意:規(guī)則對(duì)已經(jīng)輸入表中的數(shù)據(jù)不起作用。與表的列綁定的規(guī)則優(yōu)先于與用戶自定義數(shù)據(jù)類型綁定的規(guī)則。因此,如果表的列的數(shù)據(jù)類型與規(guī)則A綁定,同時(shí)列又與規(guī)則B綁定,則以規(guī)則B為列的規(guī)則。(2)用存儲(chǔ)過程sp_unbindrule解除規(guī)則的綁定其語法格式如下:sp_unbindrule[@objname=]'object_name'[,'futureonly']其中,'futureonly'選項(xiàng)同綁定時(shí)一樣,僅用于用戶自定義數(shù)據(jù)類型,它指定現(xiàn)有的用此用戶自定義數(shù)據(jù)類型定義的列仍然保持與此規(guī)則的綁定。如果不指定此項(xiàng),所有由此用戶自定義數(shù)據(jù)類型定義的列也將隨之解除與此規(guī)則的綁定。例7.14解除已綁定到S表的字段sex的規(guī)則ru_sex。execsp_unbindrule'ru_sex'6、刪除規(guī)則(1)用企業(yè)管理器刪除規(guī)則用企業(yè)管理器刪除規(guī)則的方法如下:企業(yè)管理器左側(cè)窗格中,展開相應(yīng)的數(shù)據(jù)庫(如student)目錄,單擊數(shù)據(jù)庫的對(duì)象“規(guī)則”,即可在其右邊的窗口中看到已創(chuàng)建的規(guī)則名稱,在相應(yīng)的規(guī)則名稱上面單擊右鍵,從快捷菜單中選擇“刪除”菜單項(xiàng),會(huì)出現(xiàn)“除去對(duì)象”對(duì)話框,在該對(duì)話框中單擊“全部移去”按鈕即可刪除規(guī)則。(2)使用DROPRULE命令刪除規(guī)則使用DROPRULE命令刪除當(dāng)前數(shù)據(jù)庫中的一個(gè)或多個(gè)規(guī)則。其語法如下:DROPRULE{rule_name}[,…n]注意:在刪除一個(gè)規(guī)則前必須先將與其綁定的對(duì)象解除綁定。例7.15刪除上面已創(chuàng)建的規(guī)則ru_sex。DROPRULEru_sex7.7.3默認(rèn)所謂默認(rèn)(default)是用戶輸入記錄時(shí)沒有指定具體數(shù)據(jù)的列中自動(dòng)插入的數(shù)據(jù)。此處的默認(rèn)對(duì)象與用CREATETABLE或ALTERTABLE命令操作數(shù)據(jù)表時(shí)使用DEFAULT選項(xiàng)指定的默認(rèn)功能相似,但默認(rèn)對(duì)象可以用于多個(gè)列或用戶自定義數(shù)據(jù)類型,它的管理與應(yīng)用同規(guī)則有許多相似之處。表的一列或一個(gè)用戶自定義數(shù)據(jù)類型只能與一個(gè)默認(rèn)綁定。1、創(chuàng)建默認(rèn)(1)用CREATEDEFAULT命令創(chuàng)建默認(rèn)CREATEDEFAULT命令用于在當(dāng)前數(shù)據(jù)庫中創(chuàng)建默認(rèn)對(duì)象,其語法如下:CREATEDEFAULTdefault_nameASconstant_expression其中,default_name是要?jiǎng)?chuàng)建的默認(rèn)的名稱,constant_expression子句是默認(rèn)的定義,該子句可以是數(shù)學(xué)表達(dá)式或函數(shù),也可以包含表的列名或其他數(shù)據(jù)庫對(duì)象。例7.16創(chuàng)建年齡的默認(rèn)值age_defa。CREATEDEFAULTage_defaas'20'設(shè)定默認(rèn)值后,當(dāng)用戶在輸入記錄數(shù)據(jù)時(shí),如果未提供字段age的值,系統(tǒng)將自動(dòng)默認(rèn)其值為“20”歲。(2)用企業(yè)管理器創(chuàng)建默認(rèn)圖7.29創(chuàng)建“默認(rèn)”用企業(yè)管理器創(chuàng)建默認(rèn)的方法如下:在企業(yè)管理器的左側(cè)窗格中,展開相應(yīng)的數(shù)據(jù)庫(如student)目錄,在數(shù)據(jù)庫的對(duì)象“默認(rèn)”上面單擊右鍵;從出現(xiàn)的快捷菜單中選擇“新建默認(rèn)”菜單項(xiàng),即會(huì)彈出“默認(rèn)屬性”對(duì)話框;在該對(duì)話框中的“名稱”文本框中輸入要?jiǎng)?chuàng)建的默認(rèn)的名稱(如age_defa),在“值”文本框中輸入默認(rèn)值,單擊“確定”按鈕,即完成默認(rèn)的創(chuàng)建,如圖7.29所示。2、查看和修改默認(rèn)(1)用企業(yè)管理器查看默認(rèn)用企業(yè)管理器查看默認(rèn)的方法如下:在企業(yè)管理器的左側(cè)窗格中,展開相應(yīng)的數(shù)據(jù)庫,在數(shù)據(jù)庫的對(duì)象“默認(rèn)”上面單擊右鍵,這時(shí)在右側(cè)窗格中即可看到已建立的各個(gè)默認(rèn)的信息,在某個(gè)默認(rèn)的名稱上面單擊右鍵,從快捷菜單中選擇“屬性”菜單項(xiàng),即會(huì)出現(xiàn)“默認(rèn)屬性”對(duì)話框,可以從中編輯默認(rèn)的值。修改默認(rèn)名稱的方法與修改規(guī)則名稱的方法相同,可以用sp_rename存儲(chǔ)過程修改,也可以在企業(yè)管理器的任務(wù)板窗口中直接修改。(2)用存儲(chǔ)過程sp_helptext查看默認(rèn)使用sp_helptext存儲(chǔ)過程可以查看默認(rèn)的信息。例7.17查看sex_defa的默認(rèn)。execsp_helptextsex_defa3、默認(rèn)的綁定與松綁創(chuàng)建默認(rèn)后,默認(rèn)僅僅是一個(gè)存在于數(shù)據(jù)庫中的對(duì)象,并未發(fā)生作用,默認(rèn)同規(guī)則一樣,需要將它與數(shù)據(jù)庫表或用戶自定義對(duì)象綁定。(1)用企業(yè)管理器管理默認(rèn)的綁定用企業(yè)管理器管理默認(rèn)的綁定,方法如下:在企業(yè)管理器的左側(cè)窗格中,展開相應(yīng)的數(shù)據(jù)庫目錄,數(shù)據(jù)庫的對(duì)象“默認(rèn)”上面單擊右鍵,這時(shí)在右側(cè)窗格中即可看到已建立的各個(gè)默認(rèn)的信息,在某個(gè)默認(rèn)的名稱上面單擊右鍵,從快捷菜單中選擇“屬性”菜單項(xiàng),即會(huì)出現(xiàn)“默認(rèn)屬性”對(duì)話框。單擊“綁定列”按鈕,則出現(xiàn)“綁定默認(rèn)到表的列”的對(duì)話框。用他們來管理默認(rèn)與表的列的綁定非常方便。此過程與綁定規(guī)則的方法完全一致,不再詳述。(2)用存儲(chǔ)過程sp_bindefault綁定默認(rèn)存儲(chǔ)過程sp_bindefault可以將一個(gè)默認(rèn)綁定到表的一列或一個(gè)用戶自定義數(shù)據(jù)類型上。其語法如下:sp_bindefault[@defname=]'default',[@objname=]'object_name'[,'futureonly']其中,'futureonly'選項(xiàng)僅在將默認(rèn)綁定到用戶自定義數(shù)據(jù)類型上時(shí)才可以使用。當(dāng)指定此項(xiàng)時(shí),只有以后使用此用戶自定義數(shù)據(jù)類型的列會(huì)應(yīng)用新默認(rèn),而當(dāng)前已經(jīng)使用此數(shù)據(jù)類型的列規(guī)則不受影響。例7.18綁定默認(rèn)sex_defa到數(shù)據(jù)表S的sex上。execsp_bindefaultsex_defa,'S.[sex]'4、刪除默認(rèn)(1)用企業(yè)管理器刪除默認(rèn)用企業(yè)管理器刪除默認(rèn)的綁定,方法如下:在企業(yè)管理器的左側(cè)窗格中,展開相應(yīng)的數(shù)據(jù)庫目錄,數(shù)據(jù)庫的對(duì)象“默認(rèn)”上面單擊右鍵,這時(shí)在右側(cè)窗格中即可看到已建立的各個(gè)默認(rèn)的信息,在某個(gè)默認(rèn)的名稱上面單擊右鍵,從快捷菜單中選擇“刪除”菜單項(xiàng),即會(huì)出現(xiàn)“除去對(duì)象”對(duì)話框,在該對(duì)話框中單擊“全部移去”按鈕,即可刪除默認(rèn)。(2)使用DROPDEFAULT命令刪除默認(rèn)使用DROPDEFAULT命令刪除當(dāng)前數(shù)據(jù)庫中的一個(gè)或多個(gè)默認(rèn),其語法如下:DROPDEFAULT{默認(rèn)名}[,…n]例7.19刪除學(xué)生性別的默認(rèn)值sex_defa。DROPDEFAULTsex_defa注意:刪除一個(gè)默認(rèn)值前必須先將與其綁定的對(duì)象解除綁定。7.8數(shù)據(jù)查詢數(shù)據(jù)庫是為更方便有效的管理數(shù)據(jù)而存在的,人們希望可以隨時(shí)提供有效的所需要的數(shù)據(jù)信息。因此,對(duì)用戶來說,數(shù)據(jù)查詢是數(shù)據(jù)庫最重要的功能。在數(shù)據(jù)庫中數(shù)據(jù)查詢是通過SELECT語句來完成的。SELECT語句可以從數(shù)據(jù)庫中按用戶要求檢索數(shù)據(jù),并將查詢結(jié)果以表格的形式返回。關(guān)于SELECT語句的用法已在前面第3章詳細(xì)介紹過,SELECT語句能在查詢分析器及企業(yè)管理器查詢子窗口中執(zhí)行,此處從略。除此以外,SQLServer2000也提供交互式界面查詢能力。方法是:在企業(yè)管理器中,右鍵單擊某表,從彈出的快捷菜單中選擇“打開表”→“查詢”,圖示略。在出現(xiàn)的交互式查詢子窗口中選定表、指定列及查詢準(zhǔn)則等,即能交互式查詢表或多表中的數(shù)據(jù),如圖7.30所示,在交互式指定各項(xiàng)目時(shí),圖中也能看到自動(dòng)對(duì)應(yīng)的SQL查詢命令,這種指定方式與第2章中介紹的QBE有些相仿,讀者自己不妨來實(shí)踐各種查詢操作。下面再介紹將查詢結(jié)果存儲(chǔ)到Transact-SQL的變量中的情況。在某些時(shí)候,我們需要在程序中使用查詢的結(jié)果,如在編寫存儲(chǔ)過程或觸發(fā)器時(shí),這時(shí)就需要將查詢結(jié)果存儲(chǔ)到變量中去。例7.20查詢系科為“計(jì)算機(jī)”系的學(xué)生的學(xué)號(hào)和姓名,并把查詢結(jié)果存放到變量@sno和@sn中。命令為:declare@snovarchar(10)declare@snvarchar(10)select@sno=sno,@sn=snfromswheresept='計(jì)算機(jī)'SELECT{@local_variable=expression}[,...n]通常用于將單個(gè)值返回到變量中。如果SELECT語句返回多個(gè)值,則將返回的最后一個(gè)值賦給變量。如果SELECT語句沒有返回行,變量將保留當(dāng)前值。如果expression是不返回值的標(biāo)量子查詢(集合形式),則將變量設(shè)為NULL。圖7.30企業(yè)管理器中交互式查詢7.9視圖視圖是與基本表同等重要的概念,在第3章已有介紹,這里主要介紹關(guān)于它的交互式界面操作與管理的內(nèi)容。7.9.1創(chuàng)建視圖1、使用創(chuàng)建視圖向?qū)褂脛?chuàng)建視圖向?qū)?chuàng)建視圖的步驟如下:(1)打開企業(yè)管理器,選擇工具→向?qū)?,打開“選擇向?qū)А睂?duì)話框,在“選擇向?qū)А睂?duì)話框中展開“數(shù)據(jù)庫”節(jié)點(diǎn),并選擇它的下一級(jí)節(jié)點(diǎn)“創(chuàng)建視圖向?qū)А保瑔螕簟按_定”按鈕繼續(xù)(如圖7.31所示),此時(shí)會(huì)出現(xiàn)“歡迎使用創(chuàng)建視圖向?qū)А睂?duì)話框,在該對(duì)話框中單擊“下一步”。圖7.31“選擇向?qū)А睂?duì)話框圖7.32選擇數(shù)據(jù)庫圖7.33“選擇對(duì)象”對(duì)話框圖7.34輸入限制語句(2)在如圖7.32的窗口中選擇需要的數(shù)據(jù)庫,單擊“下一步”。這里選擇student數(shù)據(jù)庫。(3)在如圖7.33所示的窗口中選擇數(shù)據(jù)庫的對(duì)象,方法是在選擇對(duì)象的“包含在視圖中”中選中復(fù)選框,單擊“下一步”。(4)選擇將在視圖中顯示的所有字段,單擊“下一步?!保?)在“定義限制”窗口中輸入WHERE語句(如圖7.34)所示(6)在“命名視圖”中輸入視圖名稱。(7)在“完成創(chuàng)建視圖向?qū)А睂?duì)話框中單擊“確定”即可。2、在企業(yè)管理器中交互式創(chuàng)建視圖在企業(yè)管理器中,展開指定的數(shù)據(jù)庫,點(diǎn)按“視圖”,按鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“新建視圖”菜單項(xiàng);或者在工具欄中選擇新建圖標(biāo),就會(huì)出現(xiàn)新建視圖對(duì)話框,圖略,在該對(duì)話框中,通過選定一個(gè)或多個(gè)表,指定多個(gè)字段,設(shè)定連接或限定條件,最后保存并給視圖取個(gè)名稱,即完成了視圖的創(chuàng)建。其過程類似于7.8中介紹到的交互式數(shù)據(jù)查詢操作,只是視圖是要保存并給它命名的。7.9.2管理視圖1、查看和修改視圖(1)方法1①啟動(dòng)企業(yè)管理器,登錄到指定的服務(wù)器。②打開要查看或修改視圖的數(shù)據(jù)庫文件夾,選種“視圖”圖標(biāo),此時(shí)在右面的窗格中顯示當(dāng)前數(shù)據(jù)庫的所有視圖。③在右面窗格中,用右鍵單擊要查看的視圖,在彈出的菜單中選擇“屬性”菜單項(xiàng),打開“視圖屬性”對(duì)話框。④在該對(duì)話框內(nèi)可瀏覽到該視圖的SQL文本,也可以對(duì)該視圖進(jìn)行修改,然后單擊“檢查語法”按鈕來對(duì)語句合法性進(jìn)行檢查。若要對(duì)視圖的訪問權(quán)限進(jìn)行設(shè)置,單擊“權(quán)限”即可。(2)方法2①啟動(dòng)企業(yè)管理器,登錄到指定的服務(wù)器。②打開要查看或修改視圖的數(shù)據(jù)庫文件夾,選種“視圖”圖標(biāo),此時(shí)在右面的窗格中顯示當(dāng)前數(shù)據(jù)庫的所有視圖。③在右面窗格中,用右鍵單擊要查看的視圖,在彈出的菜單中選擇“設(shè)計(jì)視圖”菜單項(xiàng),可即時(shí)進(jìn)入到設(shè)計(jì)視圖的窗口,如圖7.35圖7.35管理視圖窗口④在該窗口中可按照創(chuàng)建視圖的方法對(duì)原有的視圖進(jìn)行各種修改。2、使用存儲(chǔ)過程在SQLServer中有三個(gè)用于了解視圖信息的關(guān)鍵存儲(chǔ)過程,即sp_depends,sp_help和sp_helptext。存儲(chǔ)過程sp_depends顯示有關(guān)數(shù)據(jù)庫對(duì)象相關(guān)性的信息(例如,依賴表或視圖的視圖和過程,以及視圖或過程所依賴的表和視圖)。其語法格式如下:sp_depends[@objname=]'object'參數(shù):[@objname=]'object',表示被檢查相關(guān)性的數(shù)據(jù)庫對(duì)象。對(duì)象可以是表、視圖、存儲(chǔ)過程或觸發(fā)器。系統(tǒng)過程sp_help、sp_helptext已分別在本章7.5.3、7.7.2中介紹了,請(qǐng)參閱。下面的命令列出依賴Student表的數(shù)據(jù)庫對(duì)象。EXECsp_depends'Student'3、刪除視圖除了SQL命令刪除視圖外,在SQLServer中,通過企業(yè)管理器也可刪除視圖。(1)啟動(dòng)企業(yè)管理器,登錄到指定的服務(wù)器。(2)打開要?jiǎng)h除視圖的數(shù)據(jù)庫文件夾,選中“視圖”,此時(shí)在右面的窗格中顯示當(dāng)前數(shù)據(jù)庫的所有視圖。(3)在右窗格中,用右鍵單擊要?jiǎng)h除的視圖,在彈出菜單中選擇“刪除”菜單項(xiàng)即可刪除視圖。7.10備份和還原數(shù)據(jù)庫的備份和還原是維護(hù)數(shù)據(jù)庫的安全性和完整性的重要組成部分。通過備份數(shù)據(jù)庫,可以防止因?yàn)楦鞣N原因而造成的數(shù)據(jù)破壞和丟失。還原是指在造成數(shù)據(jù)丟失和破壞以后利用備份來恢復(fù)數(shù)據(jù)的操作。7.10.1備份和還原概述備份和還原是SQLServer的重要組成部分。備份是對(duì)SQLServer數(shù)據(jù)庫或事務(wù)日志進(jìn)行復(fù)制,數(shù)據(jù)庫備份記錄了在進(jìn)行備份這一操作時(shí)數(shù)據(jù)庫中所有數(shù)據(jù)的狀態(tài),如果數(shù)據(jù)庫因意外而損壞,這些備份文件將在數(shù)據(jù)庫還原時(shí)用來還原數(shù)據(jù)庫。1、數(shù)據(jù)庫備份的類型SQLServer2000提供了四種主要的備份方式:數(shù)據(jù)庫備份,事務(wù)日志備份,差異備份,文件和文件組備份。下面分別介紹:(1)數(shù)據(jù)庫備份數(shù)據(jù)庫備份是指對(duì)數(shù)據(jù)庫的完整備份,包括所有的數(shù)據(jù)以及數(shù)據(jù)庫對(duì)象。實(shí)際上備份數(shù)據(jù)庫的過程就是首先將事務(wù)日志寫到磁盤上,然后根據(jù)事務(wù)創(chuàng)建相同的數(shù)據(jù)庫和數(shù)據(jù)庫對(duì)象以及拷貝數(shù)據(jù)的過程。由于是對(duì)數(shù)據(jù)庫完全備份,所以這種備份類型不僅速度較慢,而且將占用大量磁盤空間。因此,在進(jìn)行數(shù)據(jù)庫備份時(shí),常將其安排在晚間,因?yàn)榇藭r(shí)整個(gè)數(shù)據(jù)庫系統(tǒng)幾乎不進(jìn)行其他事務(wù)操作,從而可以提高數(shù)據(jù)庫備份的速度。在對(duì)數(shù)據(jù)庫進(jìn)行完全備份時(shí),所有未完成的事務(wù)或者發(fā)生在備份過程中的事務(wù)都不會(huì)被備份。即從開始備份到開始還原這段時(shí)間內(nèi)發(fā)生的任何針對(duì)數(shù)據(jù)庫的修改將無法還原。所以總是在一定的要求或條件下才使用這種備份類型。例如:①數(shù)據(jù)不是非常重要,盡管在備份之后還原之前數(shù)據(jù)被修改,但這種修改是可以忍受的。②通過批處理或其他方法,在數(shù)據(jù)庫還原之后可以很容易的重新實(shí)現(xiàn)在數(shù)據(jù)損壞前發(fā)生的修改。③數(shù)據(jù)庫變化的頻率不大。如果對(duì)數(shù)據(jù)庫一致性要求較高,則不應(yīng)使用數(shù)據(jù)庫備份。(2)事務(wù)日志備份事務(wù)日志備份是指對(duì)數(shù)據(jù)庫發(fā)生的事務(wù)進(jìn)行備份,包括從上次進(jìn)行事務(wù)日志備份、差異備份和數(shù)據(jù)庫完全備份之后,所有已經(jīng)完成的事務(wù)。在以下情況我們常選擇事務(wù)日志備份:①不允許在最后一次數(shù)據(jù)庫備份之后發(fā)生數(shù)據(jù)丟失或損壞的情況。②存儲(chǔ)備份文件的磁盤空間很小或者留給進(jìn)行備份操作的時(shí)間有限。例如,兆字節(jié)級(jí)的數(shù)據(jù)庫需要很大的磁盤空間和備份空間。③準(zhǔn)備把數(shù)據(jù)庫還原到發(fā)生失敗的前一點(diǎn)。④數(shù)據(jù)庫變化較為頻繁的情況。由于事務(wù)日志備份僅對(duì)數(shù)據(jù)庫事務(wù)日志進(jìn)行備份,所以它需要的磁盤空間和備份時(shí)間都比數(shù)據(jù)庫備份少的多,這是它的優(yōu)點(diǎn)。正是基于此,我們?cè)趥浞輹r(shí)常采用這樣的策略,即每天進(jìn)行一次數(shù)據(jù)庫備份,而一個(gè)或幾個(gè)小時(shí)進(jìn)行一次事務(wù)日志備份。這樣利用事務(wù)日志備份,我們就可以將數(shù)據(jù)庫還原到任意一個(gè)創(chuàng)建事務(wù)日志備份的時(shí)刻。但是,創(chuàng)建事務(wù)日志備份相對(duì)比較復(fù)雜。因?yàn)樵谑褂檬聞?wù)日志對(duì)數(shù)據(jù)庫進(jìn)行還原操作時(shí),還必須有一個(gè)完整的數(shù)據(jù)庫備份,而且事務(wù)日志備份還原時(shí)必須要按一定的順序進(jìn)行。比如,在上周末對(duì)數(shù)據(jù)庫進(jìn)行了完整的數(shù)據(jù)庫備份,在從周一到周末的每一天都進(jìn)行一次事務(wù)日志備份,那么若要打算對(duì)數(shù)據(jù)庫進(jìn)行還原,則首先還原數(shù)據(jù)庫備份,然后按照順序還原從周一到周末的事務(wù)日志備份。有些時(shí)候,數(shù)據(jù)庫事務(wù)日志會(huì)被中斷。例如,數(shù)據(jù)庫執(zhí)行了非日志操作(如創(chuàng)建索引,創(chuàng)建或刪除數(shù)據(jù)庫文件,自動(dòng)或手動(dòng)縮小數(shù)據(jù)庫文件大小),此時(shí)應(yīng)該立即創(chuàng)建數(shù)據(jù)庫或進(jìn)行差異備份,然后再進(jìn)行事務(wù)日志備份。(3)差異備份差異備份是指將最近一次數(shù)據(jù)庫備份以來發(fā)生的數(shù)據(jù)變化備份起來。因此,差異備份實(shí)際上是一種增量數(shù)據(jù)庫備份。與完整數(shù)據(jù)庫備份相比,差異備份由于備份的數(shù)據(jù)量較小,所以備份和還原所用的時(shí)間短。通過增加差異備份的備份次數(shù),可以降低丟失數(shù)據(jù)的風(fēng)險(xiǎn),將數(shù)據(jù)庫還原至進(jìn)行最后一次差異備份的時(shí)刻,但是它無法像事務(wù)日志備份那樣提供到失敗點(diǎn)的無數(shù)據(jù)損失備份。但在實(shí)際中為了最大限度地減少數(shù)據(jù)庫還原時(shí)間以及降低數(shù)據(jù)損失數(shù)量,我們常一起使用數(shù)據(jù)庫備份,事務(wù)日志備份和差異備份,而采用下面的備份方案。首先,有規(guī)律地進(jìn)行數(shù)據(jù)庫備份,例如每晚進(jìn)行備份;其次,以較小的時(shí)間間隔進(jìn)行差異備份,比如三個(gè)或四個(gè)小時(shí);最后,在相臨的兩次差異備份之間進(jìn)行事務(wù)日志備份,可以每20分鐘或30分鐘一次。這樣在進(jìn)行還原時(shí),我們可先還原最近一次的數(shù)據(jù)庫備份,接著進(jìn)行差異備份,最后進(jìn)行事務(wù)日志備份的還原。但是,在更多的情況下我們希望數(shù)據(jù)庫能還原到數(shù)據(jù)庫失敗那一刻,那么我們?cè)撛趺醋瞿兀渴紫?,如果能夠訪問數(shù)據(jù)庫事務(wù)日志文件,則應(yīng)備份當(dāng)前正處于活動(dòng)狀態(tài)的事務(wù)日志;其次,還原最近一次數(shù)據(jù)庫備份;接著,還原最近一次差異備份;最后,按順序還原自差異備份以來進(jìn)行的事務(wù)日志備份。當(dāng)然,如果無法備份當(dāng)前數(shù)據(jù)庫正在進(jìn)行的事務(wù),則只能把數(shù)據(jù)庫還原到最后一次事務(wù)日志備份的狀態(tài),而不是數(shù)據(jù)庫的失敗點(diǎn)。(4)文件和文件組備份文件或文件組備份是指對(duì)數(shù)據(jù)庫文件或文件組進(jìn)行備份,但它不象完整的數(shù)據(jù)庫備份那樣同時(shí)也進(jìn)行事務(wù)日志備份。使用該備份方法可提高數(shù)據(jù)庫還原的速度,因?yàn)樗鼉H對(duì)遭到破壞的文件或文件組進(jìn)行還原。但是,在使用文件或文件組進(jìn)行還原時(shí),仍要求有一個(gè)自上次備份以來的事務(wù)日志備份來保證數(shù)據(jù)庫的一致性。所以,在進(jìn)行完文件或文件組備份后,應(yīng)再進(jìn)行事務(wù)日志備份,否則備份在文件或文件組備份中的所有數(shù)據(jù)庫變化將無效。如果需要還原的數(shù)據(jù)庫部分涉及到多個(gè)文件或文件組,則應(yīng)把這些文件或文件組都進(jìn)行還原。例如,如果在創(chuàng)建表或索引時(shí),表或索引是跨多個(gè)文件或文件組的,則在事務(wù)日志備份結(jié)束后應(yīng)在對(duì)表或索引有關(guān)的文件或文件組進(jìn)行備份,否則在文件或文件組還原時(shí)將會(huì)出錯(cuò)。2、備份和還原的策略通常而言,我們總是依賴所要求的還原能力(如將數(shù)據(jù)庫還原到失敗點(diǎn)),備份文件(如完成數(shù)據(jù)庫備份,只進(jìn)行事務(wù)日志的備份或是差異數(shù)據(jù)庫備份)以及留給備份的時(shí)間等決定該使用哪種類型的備份。常用的備份選擇方案有:僅進(jìn)行數(shù)據(jù)庫備份,或在進(jìn)行數(shù)據(jù)庫備份的同時(shí)進(jìn)行事務(wù)日志備份,或使用完整數(shù)據(jù)庫備份或差異數(shù)據(jù)庫備份。選用何種備份方案將對(duì)備份和還原產(chǎn)生直接影響,而且也決定了數(shù)據(jù)庫在遭到破壞前后的一致性水平。所以在做出該決策時(shí),必須認(rèn)識(shí)到以下幾個(gè)問題。(1)如果只進(jìn)行數(shù)據(jù)庫備份,那么將無法還原自最近一次數(shù)據(jù)庫備份以來數(shù)據(jù)庫中所發(fā)生的所有事務(wù)。這種方案的優(yōu)點(diǎn)是簡(jiǎn)單,而且在進(jìn)行數(shù)據(jù)庫還原時(shí)操作也方便。(2)如果在進(jìn)行數(shù)據(jù)庫備份時(shí)也進(jìn)行事務(wù)日志,那么可以將數(shù)據(jù)庫還原到失敗點(diǎn)。那些在失敗前未提交的事務(wù)將無法還原,但是如果您在數(shù)據(jù)庫失敗后立即對(duì)當(dāng)前處于活動(dòng)狀態(tài)的事務(wù)進(jìn)行備份,則未提交的事務(wù)也可以還原。從以上問題可以看出,對(duì)數(shù)據(jù)庫一致的要求程度成為我們選擇備份方案的主要的普遍性的問題。另外需要注意的是我們?cè)趥浞輹r(shí)要決定應(yīng)使用哪種備份設(shè)備,如磁盤或磁帶,并且決定如何在備份設(shè)備上創(chuàng)建備份,比如將備份添加到備份設(shè)備上或?qū)⑵涓采w。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論