版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SQLServer2005資料庫(kù)技術(shù)與應(yīng)用第1章資料庫(kù)基礎(chǔ)資料庫(kù)系統(tǒng)的基本概念1.1關(guān)係資料庫(kù)系統(tǒng)
1.2SQLServer2005的體系結(jié)構(gòu)1.3
SQLServer2005的新特性1.4
資料庫(kù)技術(shù)所研究的問題就是如何科學(xué)地組織和存儲(chǔ)數(shù)據(jù),如何高效地獲取和處理數(shù)據(jù),它是當(dāng)代電腦科學(xué)中一個(gè)重要的分支。1.1資料庫(kù)系統(tǒng)的基本概念
數(shù)據(jù)(Data):所謂數(shù)據(jù)就是描述事物的符號(hào)。資訊是指數(shù)據(jù)經(jīng)過(guò)加工處理後所獲取的有用知識(shí)。資訊是以某種數(shù)據(jù)形式表現(xiàn)的。數(shù)據(jù)處理是指對(duì)各種形式的數(shù)據(jù)進(jìn)行分類、組織、編碼、存儲(chǔ)、檢索和維護(hù)的一系列活動(dòng)的總和。資料庫(kù)(Database)是數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象的集合,是指以一定的組織形式存放在電腦存儲(chǔ)介質(zhì)上的相互關(guān)聯(lián)的數(shù)據(jù)的集合。
資料庫(kù)系統(tǒng)的發(fā)展經(jīng)歷了3個(gè)階段:網(wǎng)狀資料庫(kù)、層次資料庫(kù)和關(guān)係資料庫(kù)。它們分別採(cǎi)用網(wǎng)狀模型、層次模型和關(guān)係模型作為數(shù)據(jù)的組織方式。1.2關(guān)係資料庫(kù)系統(tǒng)1.2.1關(guān)係模型1.資訊的3種世界(1)現(xiàn)實(shí)世界
現(xiàn)實(shí)世界就是存在於人腦之外的客觀世界。(2)資訊世界
資訊世界就是現(xiàn)實(shí)世界在人們頭腦中的反映,又稱觀念世界。(3)數(shù)據(jù)世界
數(shù)據(jù)世界是資訊世界中的資訊數(shù)據(jù)化後對(duì)應(yīng)的產(chǎn)物,就是將資訊世界中的資訊經(jīng)過(guò)抽象和組織,按照特定的數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)存儲(chǔ)在電腦中。2.實(shí)體-聯(lián)繫模型實(shí)體客觀事物在資訊世界中稱為實(shí)體(Entity),它是現(xiàn)實(shí)世界中任何可區(qū)分、識(shí)別的事物。常見的實(shí)體聯(lián)繫有3種:一對(duì)一聯(lián)繫、一對(duì)多聯(lián)繫和多對(duì)多聯(lián)繫。實(shí)體模型實(shí)體模型又稱概念模型,它是反映實(shí)體之間聯(lián)繫的模型。資料庫(kù)設(shè)計(jì)的重要任務(wù)就是建立實(shí)體模型,建立概念資料庫(kù)的具體描述。3.關(guān)係模型(RelationalModel)(1)關(guān)係的基本概念①關(guān)係一個(gè)關(guān)係就是一張二維表,通常將一個(gè)沒有重複行、重複列的二維表看成一個(gè)關(guān)係,每個(gè)關(guān)係都有一個(gè)關(guān)係名。②元組二維表的每一行在關(guān)係中稱為元組。在SQLServer中,一個(gè)元組對(duì)應(yīng)表中一個(gè)記錄。③屬性二維表的每一列在關(guān)係中稱為屬性,每個(gè)屬性都有一個(gè)屬性名,屬性值則是各個(gè)元組屬性的取值。④域?qū)傩缘娜≈倒?fàn)圍稱為域。域作為屬性值的集合,其類型與範(fàn)圍具體由屬性的性質(zhì)及其所表示的意義確定。同一屬性只能在相同域中取值。⑤關(guān)鍵字關(guān)係中能唯一區(qū)分、確定不同元組的屬性或?qū)傩越M合,稱為該關(guān)係的一個(gè)關(guān)鍵字。
關(guān)係模式對(duì)關(guān)係的描述稱為關(guān)係模式,其格式為:關(guān)係名(屬性名1,屬性名2,……,屬性名n)(2)關(guān)係的基本特點(diǎn)在關(guān)係模型中,關(guān)係具有以下基本特點(diǎn)。①關(guān)係必須規(guī)範(fàn)化,屬性不可再分割。②在同一關(guān)係中不允許出現(xiàn)相同的屬性名。③在同一關(guān)係中元組及屬性的順序可以任意。④任意交換兩個(gè)元組(或?qū)傩裕┑奈恢?,不?huì)改變關(guān)係模式。(3)關(guān)係運(yùn)算關(guān)係運(yùn)算主要有選擇、投影和連接3種。4.關(guān)係的完整性約束(1)實(shí)體完整性(2)參照完整性(3)用戶定義完整性1.2.2關(guān)係模型的規(guī)範(fàn)化
關(guān)係模型規(guī)範(fàn)化的目的是為了消除存儲(chǔ)異常,減少數(shù)據(jù)冗餘,保證數(shù)據(jù)的完整性和存儲(chǔ)效率,一般規(guī)範(fàn)為3NF即可。(1)第一範(fàn)式(1NF)如果關(guān)係R的所有屬性均為簡(jiǎn)單屬性,即每個(gè)屬性都是不可再分的,則稱R滿足第一範(fàn)式。(2)第二範(fàn)式(2NF)如果關(guān)係R滿足第一範(fàn)式,且每一個(gè)非主屬性完全函數(shù)依賴於主鍵,則稱R滿足第二範(fàn)式。(3)第三範(fàn)式(3NF)如果關(guān)係R滿足第二範(fàn)式,且每一個(gè)非主屬性既不部分函數(shù)依賴於主鍵,也不傳遞函數(shù)依賴於主鍵,則稱R滿足第三範(fàn)式。1.3SQLServer2005的體系結(jié)構(gòu)圖1-2SQLServer2005資料庫(kù)平臺(tái)SQLServer2005資料庫(kù)平臺(tái)包括以下服務(wù)功能和工具。關(guān)係型資料庫(kù)複製服務(wù)通知服務(wù)集成服務(wù)分析服務(wù)報(bào)表服務(wù)管理工具開發(fā)工具2.1SQLServer2005的安裝版本1.SQLServer2005企業(yè)版(EnterpriseEdition2.SQLServer2005標(biāo)準(zhǔn)版(StandardEdition)3.SQLServer2005工作組版(WorkgroupEdition)4.SQLServer2005開發(fā)版(DeveloperEdition)5.SQLServer2005精簡(jiǎn)版(ExpressEdition)2.2SQLServer2005的系統(tǒng)需求2.2.2軟體要求1.預(yù)備軟體
SQLServer2005安裝程式需要MicrosoftWindowsInstaller3.1或更高版本以及Microsoft數(shù)據(jù)訪問組件(MDAC)2.8SP1或更高版本。2.操作系統(tǒng)要求(32位)
表2-2顯示了對(duì)於每種32位版本的SQLServer2005,操作系統(tǒng)是否可以運(yùn)行其伺服器軟體。表2-2 安裝SQLServer2005的操作系統(tǒng)要求操作系統(tǒng)EnterpriseEditionDeveloper
EditionStandard
EditionWorkgroup
EditionExpress
EditionWindows2000否否否否否Windows2000ProfessionalEditionSP4否是是是是Windows2000ServerSP4是是是是是Windows2000AdvancedServerSP4是是是是是Windows2000DatacenterEditionSP4是是是是是WindowsXPHomeEditionSP2否是否否是WindowsXPProfessionalEditionSP2否是是是是WindowsXPMediaEditionSP2否是是是是WindowsXPTabletEditionSP2否是是是是Windows2003ServerSP1是是是是是Windows2003EnterpriseEditionSP1是是是是是Windows2003DatacenterEditionSP1是是是是是Windows2003WebEditionSP1否否否否是WindowsSmallBusinessServer2003StandardEditionSP1是是是是是WindowsSmallBusinessServer2003PremiumEditionSP1是是是是是操作系統(tǒng)EnterpriseEditionDeveloper
EditionStandard
EditionWorkgroup
EditionExpress
Edition續(xù)表2.3安裝SQLServer20052.3.1安裝預(yù)備軟體
MicrosoftSQLServer2005安裝嚮導(dǎo)基於Windows安裝程式,並提供一個(gè)功能樹用於安裝所有的SQLServer2005組件。啟動(dòng)SQLServer2005的安裝嚮導(dǎo)後,將出現(xiàn)如圖2-1所示的介面。
圖2-1SQLServer2005安裝嚮導(dǎo)啟動(dòng)介面
選擇“Reviewhardwareandsoftwarerequirements”可以預(yù)覽SQLServer2005安裝的硬體和軟體要求。選擇“Servercomponents,tools;BooksOnlineandsamples”可以安裝伺服器組件、工具、聯(lián)機(jī)叢書和示例資料庫(kù)等內(nèi)容。2.3.2安裝SQLServer部件(1)系統(tǒng)配置檢查(2)選擇安裝組件(3)選擇實(shí)例名稱(4)設(shè)置服務(wù)帳戶(5)設(shè)置伺服器登錄模式(6)設(shè)置排序規(guī)則(7)報(bào)表伺服器安裝配置(8)設(shè)置錯(cuò)誤報(bào)告(9)完成安裝2.4配置SQLServer20052.4.1啟動(dòng)和停止SQLServer服務(wù)可以配置Windows服務(wù),使得每次Windows啟動(dòng)時(shí)都自動(dòng)啟動(dòng)SQLServer;也可以用SQLServerConfigurationManager啟動(dòng);或者用net命令啟動(dòng)。2.4.2註冊(cè)伺服器
在安裝SQLServerManagementStudio之後首次啟動(dòng)它時(shí),將自動(dòng)註冊(cè)SQLServer的本地實(shí)例??梢允褂肧QLServerManagementStudio註冊(cè)伺服器。
在SQLServerManagementStudio的“View”菜單中,選擇“RegisteredServers”菜單項(xiàng),在出現(xiàn)的“RegisteredServers”窗口中,右擊“DatabaseEngine”,在快捷菜單中選擇“New”→“ServerRegistration…”,出現(xiàn)如圖2-18所示的對(duì)話框。圖2-18“註冊(cè)伺服器”對(duì)話框SQLServer2005產(chǎn)品中提供了多種資料庫(kù)工具,可以完成資料庫(kù)的配置、管理和開發(fā)等多種任務(wù)。3.1SQLServerManagementStudioMicrosoftSQLServerManagementStudio是MicrosoftSQLServer2005提供的一種新的集成環(huán)境,用於訪問、配置、控制、管理和開發(fā)SQLServer的所有組件。SQLServerManagementStudio將一組多樣化的圖形工具與多種功能齊全的腳本編輯器組合在一起,可為各種技術(shù)級(jí)別的開發(fā)人員和管理員提供對(duì)SQLServer的訪問。
SQLServerManag-ementStudio環(huán)境介面如圖3-1所示。圖3-1SQLServerManagementStudio環(huán)境介面1.訪問SQLServerManagementStudio2.MicrosoftSQLServerManagementStudio的常用功能3.對(duì)象資源管理器SQLServerManagementStudio的對(duì)象資源管理器組件是一種集成工具,可以查看和管理所有伺服器類型的對(duì)象。
用戶可以通過(guò)該組件運(yùn)算元據(jù)庫(kù),包括新建、修改、刪除資料庫(kù)、表、視圖等資料庫(kù)對(duì)象,新建查詢、設(shè)置關(guān)係圖、設(shè)置系統(tǒng)安全、資料庫(kù)複製、數(shù)據(jù)備份、恢復(fù)等操作,是SQLServerManagementStudio中最常用、也是最重要的一個(gè)組件,類似於SQLServer2000中的企業(yè)管理器。4.新的腳本撰寫功能SQLServerManagementStudio的代碼編輯器組件包含集成的腳本編輯器,用來(lái)撰寫Transact-SQL、MDX(多維運(yùn)算式)、DMX(數(shù)據(jù)挖掘擴(kuò)展插件)、XML/A(XMLforAnalysis)和XML腳本。3.2BusinessIntelligenceDevelopmentStudioBusinessIntelligenceDevelopmentStudio是包含特定於SQLServer2005商業(yè)智能的附加專案類型的MicrosoftVisualStudio2005。BusinessIntelligenceDevelopmentStudio是用於開發(fā)包括AnalysisServices、IntegrationServices和ReportingServices專案在內(nèi)的商業(yè)解決方案的主要環(huán)境。1.解決方案資源管理器
在圖3-6所示窗口的右上部是“解決方案資源管理器”,可以在這個(gè)窗口中管理某個(gè)解決方案中所有不同的專案。圖3-6BusinessIntelligenceDevelopmentStudio環(huán)境介面
2.屬性窗口
在圖3-6所示窗口的右下部是屬性窗口,屬性窗口列出對(duì)象的屬性。使用該窗口可查看和更改在編輯器和設(shè)計(jì)器中打開的對(duì)象的屬性。3.工具箱窗口
工具箱顯示在商業(yè)智能專案中使用的各種項(xiàng)。當(dāng)前使用的設(shè)計(jì)器或編輯器不同,工具箱中的選項(xiàng)卡和項(xiàng)也會(huì)有所不同。4.設(shè)計(jì)器窗口
設(shè)計(jì)器窗口是創(chuàng)建或修改商業(yè)智能對(duì)象的工具窗口。設(shè)計(jì)器提供對(duì)象的代碼視圖和設(shè)計(jì)視圖。打開專案中的某個(gè)對(duì)象時(shí),該對(duì)象在此窗口的設(shè)計(jì)器中打開。3.3配置工具3.3.1報(bào)表服務(wù)配置工具使用ReportingServices配置工具可以配置SQLServer2005ReportingServices的安裝。如果使用“僅檔”安裝選項(xiàng)安裝報(bào)表伺服器,必須使用此工具來(lái)配置伺服器,否則伺服器將不可用。
如果使用默認(rèn)配置安裝選項(xiàng)安裝報(bào)表伺服器,可以使用此工具來(lái)驗(yàn)證或修改在安裝過(guò)程中指定的設(shè)置。3.3.2SQLServer配置管理器SQLServer配置管理器用於管理與SQLServer相關(guān)聯(lián)的服務(wù)、配置SQLServer使用的網(wǎng)路協(xié)議以及從SQLServer客戶端電腦管理網(wǎng)路連接配置。
使用SQLServer配置管理器可以啟動(dòng)、暫停、恢復(fù)或停止服務(wù),還可以查看或更改服務(wù)屬性。使用SQLServer配置管理器可以配置伺服器和客戶端網(wǎng)路協(xié)議以及連接選項(xiàng)。3.4性能工具3.4.1DatabaseEngineTuningAdvisor
借助MicrosoftSQLServer2005資料庫(kù)引擎優(yōu)化顧問,用戶不必精通資料庫(kù)結(jié)構(gòu)或MicrosoftSQLServer的精髓,即可選擇和創(chuàng)建索引、索引視圖和分區(qū)的最佳集合。4.1背景知識(shí)
資料庫(kù)是SQLServer2005存放表和索引等資料庫(kù)對(duì)象的邏輯實(shí)體。每個(gè)SQLServer2005資料庫(kù)都有一個(gè)事務(wù)日誌,用於記錄所有事務(wù)以及每個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改。事務(wù)日誌是任何資料庫(kù)的關(guān)鍵組成部分。1.事務(wù)日誌基礎(chǔ)
事務(wù)日誌支持以下操作。(1)恢復(fù)個(gè)別的事務(wù)(2)SQLServer啟動(dòng)時(shí)恢復(fù)所有未完成的事務(wù)(3)將還原的資料庫(kù)、檔、檔組或頁(yè)前滾到故障點(diǎn)(4)支持事務(wù)複製(5)支持備用伺服器解決方案2.預(yù)寫事務(wù)日誌SQLServer2005使用預(yù)寫日誌(WAL)。預(yù)寫日誌確保在將相關(guān)的日誌記錄寫入磁片後再將數(shù)據(jù)修改寫入磁片。這維護(hù)了事務(wù)的ACID屬性。3.架構(gòu)
架構(gòu)是形成單個(gè)命名空間的資料庫(kù)實(shí)體的集合。在SQLServer2005中,架構(gòu)獨(dú)立於創(chuàng)建它們的資料庫(kù)用戶而存在??梢栽诓桓募軜?gòu)名稱的情況下轉(zhuǎn)讓架構(gòu)的所有權(quán)。
完全限定的對(duì)象名稱現(xiàn)在包含4部分:server.database.schema.object。
SQLServer2005還引入了“默認(rèn)架構(gòu)”的概念,用於解析未使用其完全限定名稱引用的對(duì)象的名稱。4.2資料庫(kù)結(jié)構(gòu)4.2.1檔和文件組1.資料庫(kù)檔
SQLServer2005資料庫(kù)具有以下3種類型的檔。(1)主數(shù)據(jù)檔(2)次要數(shù)據(jù)檔(3)日誌檔2.邏輯和物理檔案名稱SQLServer2005檔有以下兩個(gè)名稱。(1)logical_file_namelogical_file_name即邏輯檔案名,是在所有Transact-SQL語(yǔ)句中引用物理檔時(shí)所使用的名稱。(2)os_file_nameos_file_name是包括目錄路徑的物理檔案名。它必須符合操作系統(tǒng)的檔命名規(guī)則。3.檔大小4.資料庫(kù)檔組(1)主文件組(2)用戶定義檔組4.2.2頁(yè)面和盤區(qū)SQLServer2005中數(shù)據(jù)存儲(chǔ)的基本單位是頁(yè)。為數(shù)據(jù)庫(kù)中的數(shù)據(jù)檔(.mdf或.ndf)分配的磁片空間可以從邏輯上劃分成頁(yè)(從0到n連續(xù)編號(hào))。磁片I/O操作在頁(yè)級(jí)執(zhí)行。也就是說(shuō),SQLServer2005讀取或?qū)懭胨袛?shù)據(jù)頁(yè)。4.2.3資料庫(kù)對(duì)象SQLServer2005資料庫(kù)中的數(shù)據(jù)在邏輯上被組織成一系列對(duì)象,當(dāng)一個(gè)用戶連接到資料庫(kù)後,所看到的是這些邏輯對(duì)象,而不是物理的資料庫(kù)檔。SQLServer2005中有以下資料庫(kù)對(duì)象:表(Table)、視圖(View)、存儲(chǔ)過(guò)程(StoredProcedure)、觸發(fā)器(Trigger)、用戶自定義數(shù)據(jù)類型(User-defineddatatype)、函數(shù)(Function)、索引(Index)、規(guī)則(Rule)、默認(rèn)值(Default)等。4.3系統(tǒng)資料庫(kù)SQLServer2005包含master、model、msdb、tempdb和Resource5個(gè)系統(tǒng)資料庫(kù)。1.master資料庫(kù)master資料庫(kù)記錄SQLServer2005實(shí)例的所有系統(tǒng)級(jí)資訊。
master資料庫(kù)還記錄所有其他資料庫(kù)是否存在以及這些資料庫(kù)檔的位置。另外,master還記錄了SQLServer的初始化資訊。2.model資料庫(kù)model資料庫(kù)用作SQLServer2005實(shí)例上創(chuàng)建的所有資料庫(kù)的範(fàn)本。如果修改model資料庫(kù),之後創(chuàng)建的所有資料庫(kù)都將繼承這些修改。3.msdb資料庫(kù)msdb資料庫(kù)由SQLServer代理用來(lái)計(jì)畫警報(bào)和作業(yè)。4.tempdb資料庫(kù)tempdb資料庫(kù)是連接到SQLServer2005實(shí)例的所有用戶都可用的全局資源,它保存所有臨時(shí)表和臨時(shí)存儲(chǔ)過(guò)程。另外,它還用來(lái)滿足所有其他臨時(shí)存儲(chǔ)要求。5.Resource資料庫(kù)Resource資料庫(kù)是只讀數(shù)據(jù)庫(kù),它包含了SQLServer2005中的所有系統(tǒng)對(duì)象。
SQLServer系統(tǒng)對(duì)象在物理上持續(xù)存在於Resource資料庫(kù)中,但在邏輯上,它們出現(xiàn)在每個(gè)資料庫(kù)的sys架構(gòu)中。4.4創(chuàng)建用戶數(shù)據(jù)庫(kù)4.4.1設(shè)計(jì)資料庫(kù)設(shè)計(jì)合理的資料庫(kù)應(yīng)滿足以下設(shè)計(jì)規(guī)則。(1)表應(yīng)該有一個(gè)識(shí)別字(2)表應(yīng)只存儲(chǔ)單一類型實(shí)體的數(shù)據(jù)(3)表應(yīng)避免可為空的列(4)表不應(yīng)有重複的值或列4.4.2創(chuàng)建資料庫(kù)
若要?jiǎng)?chuàng)建資料庫(kù),必須確定資料庫(kù)的名稱、所有者、大小以及存儲(chǔ)該資料庫(kù)的檔和文件組。創(chuàng)建資料庫(kù)時(shí),根據(jù)資料庫(kù)中預(yù)期的最大數(shù)據(jù)量,應(yīng)創(chuàng)建盡可能大的數(shù)據(jù)檔。1.在圖形介面下創(chuàng)建資料庫(kù)
在“MicrosoftSQLServerManagementStudio”中創(chuàng)建資料庫(kù)的過(guò)程如下。(1)啟動(dòng)“MicrosoftSQLServerManagementStudio”,在“資料庫(kù)”節(jié)點(diǎn)上右擊,選擇快捷菜單中的“NewDatabase...”命令。(2)彈出“NewDatabase”對(duì)話框,在“General”數(shù)據(jù)頁(yè)的“Databasename”文本框中,輸入要?jiǎng)?chuàng)建的資料庫(kù)的名稱,如圖4-4所示。圖4-4“NewDatabase”對(duì)話框(3)“Databasefiles”用於設(shè)置資料庫(kù)檔屬性。(4)在“Options”數(shù)據(jù)頁(yè)中,設(shè)置資料庫(kù)的屬性選項(xiàng)。(5)在“Filegroups”數(shù)據(jù)頁(yè)中,增加或刪除檔組。2.使用CREATEDATABASE語(yǔ)句創(chuàng)建資料庫(kù)
語(yǔ)法如下。CREATEDATABASEdatabase_name[ON[PRIMARY][<filespec>[,...n][,<filegroup>[,...n]][LOGON{<filespec>[,...n]}]][COLLATEcollation_name]][;]<filespec>::={(NAME=logical_file_name,FILENAME='os_file_name'[,SIZE=size[KB|MB|GB|TB]][,MAXSIZE={max_size[KB|MB|GB|TB]|UNLIMITED}][,FILEGROWTH=growth_increment[KB|MB|GB|TB|%]])[,...n]}<filegroup>::={FILEGROUPfilegroup_name[DEFAULT]<filespec>[,...n]}
其中各參數(shù)的含義如下。database_name
新資料庫(kù)的名稱。資料庫(kù)名稱在SQLServer2005的實(shí)例中必須唯一,並且必須符合識(shí)別字規(guī)則。PRIMARY
指定主文件組中的主數(shù)據(jù)檔。LOGON
指定日誌檔的檔屬性
NAME=logical_file_name
指定檔的邏輯名稱。
FILENAME='os_file_name'
指定操作系統(tǒng)(物理)檔案名稱。SIZE
指定檔的初始大小。
MAXSIZE
指定檔可增大到的最大大小。
FILEGROWTH
指定檔的自動(dòng)增量。
<filegroup>
控制檔組屬性。4.5運(yùn)算元據(jù)庫(kù)4.5.1查看資料庫(kù)資訊對(duì)已有的資料庫(kù),可以通過(guò)“MicrosoftSQLServerManagementStudio”或者Transact-SQL語(yǔ)句來(lái)查看資料庫(kù)資訊。4.5.2修改資料庫(kù)
修改資料庫(kù)包括增減數(shù)據(jù)檔和日誌檔、修改檔屬性(包括更改檔案名和文件大?。?、修改資料庫(kù)選項(xiàng)等。1.增加資料庫(kù)空間(1)增加已有數(shù)據(jù)庫(kù)檔的大小在“MicrosoftSQLServerManagementStudio”中,打開資料庫(kù)屬性窗口,選擇“Files”屬性頁(yè),修改“InitialSize”選項(xiàng)或“Autogrowth”中的“MaximumFileSize”選項(xiàng)。
也可以通過(guò)Transact-SQL語(yǔ)句增加已有數(shù)據(jù)庫(kù)檔的大小,語(yǔ)法格式如下:ALTERDATABASE資料庫(kù)名MODIFYFILE(NAME=邏輯檔案名,SIZE=檔大小,MAXSIZE=增長(zhǎng)限制)(2)增加資料庫(kù)檔的數(shù)目在“MicrosoftSQLServerManagementStudio”中,選擇資料庫(kù)屬性窗口中的“Files”屬性頁(yè),單擊“Add”按鈕,為新的資料庫(kù)檔指定邏輯檔案名、初始大小、檔增長(zhǎng)方式等屬性,再單擊“OK”按鈕即可完成增加資料庫(kù)檔數(shù)目的操作。
也可以通過(guò)Transact-SQL語(yǔ)句增加資料庫(kù)檔的數(shù)目,語(yǔ)法格式如下:ALTERDATABASE資料庫(kù)名ADDFILE|ADDLOGFILE(NAME=邏輯檔案名,FILE=物理檔案名,SIZE=檔大小,MAXSIZE=增長(zhǎng)限制)2.縮減資料庫(kù)空間(1)縮減已有數(shù)據(jù)庫(kù)檔的大小在資料庫(kù)名上右擊,選擇快捷菜單中的“Tasks”→“Shrink”→“Database”,在出現(xiàn)的“收縮資料庫(kù)”對(duì)話框中,保持默認(rèn)設(shè)置,單擊“確定”按鈕,資料庫(kù)收縮完畢。
如果要收縮特定的數(shù)據(jù)檔或日誌檔,選擇快捷菜單中的“Tasks”→“Shrink”→“Files”
??梢允褂肈BCCSHRINKDATABASE語(yǔ)句或DBCCSHRINKFILE語(yǔ)句來(lái)手動(dòng)收縮資料庫(kù)或資料庫(kù)中的檔。(2)刪除資料庫(kù)檔在“MicrosoftSQLServerManagementStudio”中,選擇資料庫(kù)屬性窗口中的“Files”屬性頁(yè),指定要?jiǎng)h除的檔,單擊“Remove”按鈕就可以刪除對(duì)應(yīng)的檔,從而縮減了資料庫(kù)的空間。
使用ALTERDATABASE的REMOVEFILE子句,可以刪除指定的檔。語(yǔ)法格式如下:ALTERDATABASE資料庫(kù)名REMOVEFILE邏輯檔案名4.5.3資料庫(kù)優(yōu)化MicrosoftSQLServer2005可自動(dòng)優(yōu)化許多伺服器配置選項(xiàng),因此幾乎不需要系統(tǒng)管理員進(jìn)行優(yōu)化。系統(tǒng)管理員可以修改這些配置選項(xiàng),但通常建議管理員保留伺服器配置選項(xiàng)的默認(rèn)值。默認(rèn)設(shè)置使SQLServer能夠基於運(yùn)行時(shí)的狀態(tài)自動(dòng)進(jìn)行自我優(yōu)化。4.5.4刪除資料庫(kù)(1)使用SQLServerManagementStudio刪除資料庫(kù)打開SQLServerManagementStudio,選擇“資料庫(kù)”,右擊要?jiǎng)h除的資料庫(kù),在彈出的快捷菜單中選擇“刪除”命令,在隨後出現(xiàn)的“DeleteObject”對(duì)話框中單擊“OK”按鈕,即可完成指定資料庫(kù)的刪除操作。刪除表5.7查看表
5.6修改表5.55.1表的基本概念
在資料庫(kù)中,表是由數(shù)據(jù)按一定的順序和格式構(gòu)成的數(shù)據(jù)集合,是資料庫(kù)的主要對(duì)象。每一行代表一條記錄,每一列代表記錄的一個(gè)字段。5.2設(shè)計(jì)表
對(duì)於具體的某一個(gè)表,在創(chuàng)建之前,需要確定表的下列特徵:表要包含的數(shù)據(jù)的類型;表中的列數(shù),每一列中數(shù)據(jù)的類型和長(zhǎng)度(如果必要);哪些列允許空值;是否要使用以及何處使用約束、默認(rèn)設(shè)置和規(guī)則;所需索引的類型,哪里需要索引,哪些列是主鍵,哪些是外鍵。5.2.1數(shù)據(jù)類型SQLServer2005提供了以下系統(tǒng)數(shù)據(jù)類型。(1)精確數(shù)字bigintIntsmallinttinyintbitdecimal[(p[,s])]和numeric[(p[,s])]moneysmallmoney(2)近似數(shù)字float[(n)]Real(3)日期和時(shí)間datetimesmalldatetime(4)字串char[(n)]varchar[(n)]text(5)Unicode字串nchar[(n)]nvarchar[(n)]ntext[(n)](6)二進(jìn)位字串binary[(n)]varbinary[(n)]Image(7)其他數(shù)據(jù)類型cursorsql_varianttabletimestampuniqueidentifierxml5.2.2數(shù)據(jù)完整性
表列中除了具有數(shù)據(jù)類型和大小屬性之外,還有其他屬性。其他屬性是保證資料庫(kù)中數(shù)據(jù)完整性和表的引用完整性的重要部分。5.3創(chuàng)建表5.3.1使用SQLServerManagementStudio創(chuàng)建表(1)打開SQLServerManagementStudio,在對(duì)象資源管理器中,右鍵單擊資料庫(kù)的“表”節(jié)點(diǎn),選擇“新建表”命令。(2)出現(xiàn)表設(shè)計(jì)器,在其上半部分輸入列的基本屬性。(3)在表設(shè)計(jì)器下半部分的ColumnProperties,指定列的詳細(xì)屬性。(4)定義好表中的所有列後,單擊保存按鈕或“檔”菜單中的“保存表名”命令。(5)在彈出的“選擇名稱”對(duì)話框中,為該表鍵入一個(gè)名稱,單擊“確定”按鈕。5.3.2使用CreateTable語(yǔ)句創(chuàng)建表
可以使用CreateTable語(yǔ)句來(lái)創(chuàng)建表,語(yǔ)法如下:CREATETABLE[database_name.[schema_name].|schema_name.]table_name{(column_namecolumn_propertycolumn_constraint)}[,...]
其中各參數(shù)的含義如下。(1)database_name
在其中創(chuàng)建表的資料庫(kù)的名稱。(2)schema_name
新表所屬架構(gòu)的名稱。(3)table_name
新表的名稱。(4)column_name
表中列的名稱。(5)column_property
列的屬性。(6)column_constraint
列上創(chuàng)建的約束。5.4建立表之間的關(guān)係
表和表之間的引用關(guān)係可以通過(guò)外鍵約束來(lái)實(shí)現(xiàn)。創(chuàng)建外鍵約束既可以由ForeignKey子句完成,也可以在表設(shè)計(jì)器中完成。5.5修改表
創(chuàng)建表之後,可以更改最初創(chuàng)建表時(shí)定義的許多選項(xiàng)。這些選項(xiàng)包括:添加、修改或刪除列??梢蕴砑踊騽h除PRIMARYKEY約束和FOREIGNKEY約束。可以添加或刪除UNIQUE約束和CHECK約束以及DEFAULT定義和對(duì)象??梢允褂肐DENTITY屬性或ROWGUIDCOL屬性添加或刪除識(shí)別字列。表及表中所選定的列註冊(cè)為全文索引。5.5.1添加列1.用表設(shè)計(jì)器向表中添加列2.用ALTERTABLE語(yǔ)句的ADD子句向表中添加列語(yǔ)法形式如下:ALTERTABLE表名
ADD列名數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NOTNULL]5.5.2修改列屬性1.列的數(shù)據(jù)類型2.列的數(shù)據(jù)長(zhǎng)度3.列的精度4.列的小數(shù)位數(shù)5.列的為空性5.5.3創(chuàng)建和刪除約束1.創(chuàng)建和刪除PRIMARYKEY約束2.創(chuàng)建和刪除FOREIGNKEY約束3.創(chuàng)建和刪除UNIQUE約束4.創(chuàng)建和刪除CHECK約束5.創(chuàng)建和刪除DEFAULT約束5.5.4刪除列1.用表設(shè)計(jì)器從表中刪除列2.用ALTERTABLE語(yǔ)句的DROPCOLUMN子句刪除列語(yǔ)法形式如下:ALTERTABLE表名
DROPCOLUMN列名5.6查看表5.6.1查看表的定義5.6.2查看表與其他對(duì)象間的依賴關(guān)係5.6.3查看表上的約束5.6.4查看表中的數(shù)據(jù)5.7刪除表1.使用SQLServerManagementStudio刪除表打開SQLServerManagementStudio,展開“資料庫(kù)”,再展開“Tables”,右擊要?jiǎng)h除的表,在彈出的快捷菜單中選擇“Delete”命令,在隨後出現(xiàn)的“DeleteObject”對(duì)話框中單擊“OK”按鈕,即可完成指定表的刪除操作。6.1查詢數(shù)據(jù)
所謂查詢,就是對(duì)已經(jīng)存在於資料庫(kù)中的數(shù)據(jù)按特定的組合、條件或次序進(jìn)行檢索。查詢功能是資料庫(kù)最基本也是最重要的功能。6.1.1SELECT語(yǔ)句SELECT語(yǔ)句的語(yǔ)法如下:SELECTselect_list[INTOnew_table_name]FROMtable_list[WHEREsearch_conditions][GROUPBYgroup_by_list][HAVINGsearch_conditions][ORDERBYorder_list[ASC|DESC]]
其中各參數(shù)的含義如下。(1)select_list
描述結(jié)果集的列,它指定了結(jié)果集中要包含的列的名稱,是一個(gè)逗號(hào)分隔的運(yùn)算式列表。(2)INTOnew_table_name
指定使用結(jié)果集來(lái)創(chuàng)建新表。new_table_name指定新表的名稱。(3)FROMtable_list
指定要從中檢索數(shù)據(jù)的表名或視圖名。(4)WHEREsearch_conditionsWHERE子句是一個(gè)篩選條件,它定義了源表中的行要滿足SELECT語(yǔ)句的要求所必須達(dá)到的條件。(5)GROUPBYgroup_by_listGROUPBY子句根據(jù)group_by_list列中的值將結(jié)果集分成組。(6)HAVINGsearch_conditionsHAVING子句是應(yīng)用於結(jié)果集的附加篩選,用來(lái)向使用GROUPBY子句的查詢中添加數(shù)據(jù)過(guò)濾準(zhǔn)則。(7)ORDERBYorder_list[ASC|DESC]ORDERBY子句定義了結(jié)果集中行的排序順序。6.1.2選擇查詢
一般查詢都不是針對(duì)全表所有行的查詢,只是從整個(gè)表中選出滿足指定條件的內(nèi)容,這就要用到WHERE子句。以下是選擇行的基本語(yǔ)法:SELECT
SELECT_LISTFROM
TABLE_LISTWHERESEARCH_CONDITIONS
其中,SEARCH_CONDITIONS為選擇查詢結(jié)果的條件。SQLServer支持比較、範(fàn)圍、列表、字串匹配等選擇方法。1.比較搜索條件MicrosoftSQLServer2005使用表6-1列出的比較運(yùn)算符。運(yùn)算符含義運(yùn)算符含義=等於<>不等於(SQL-92相容)>大於!>不大於<小於!<不小於>=大於或等於!=不等於<=小於或等於表6-1 比較運(yùn)算符2.範(fàn)圍搜索條件
範(fàn)圍搜索返回介於兩個(gè)指定值之間的所有值,可分為包括範(fàn)圍和排他範(fàn)圍兩種類型。3.列表搜索條件IN關(guān)鍵字使用戶可以選擇與列表中的任意值匹配的行。4.搜索條件中的模式匹配LIKE關(guān)鍵字搜索與指定模式匹配的字串、日期或時(shí)間值。模式包含要搜索的字串,字串中可包含4種通配符的任意組合,搜索條件中可用的通配符如表6-2所示。通配符含義%包含零個(gè)或多個(gè)字元的任意字串_任何單個(gè)字元[]代表指定範(fàn)圍內(nèi)的單個(gè)字元,[]中可以是單個(gè)字元(如[acef]),也可以是字元範(fàn)圍(如[a-f])[^]代表不在指定範(fàn)圍內(nèi)的單個(gè)字元,[^]中可以是單個(gè)字元(如[^acef]),也可以是字元範(fàn)圍(如[^a-f])表6-2 LIKE關(guān)鍵字對(duì)應(yīng)的通配符6.1.3聚合函數(shù)
聚合函數(shù)對(duì)一組值執(zhí)行計(jì)算,並返回單個(gè)值。
Transact-SQL提供下列聚合函數(shù)。1.AVG
用於計(jì)算查詢結(jié)果的平均值。2.MAX
該函數(shù)用於查找最大值。3.MIN
該函數(shù)用於查找最小值。
4.SUM
該函數(shù)計(jì)算查詢到的數(shù)據(jù)值的總和。5.COUNT
該函數(shù)可以計(jì)算查詢到的結(jié)果的數(shù)目。6.1.4數(shù)據(jù)分組
使用GROUPBY子句可以按一定的條件對(duì)查詢到的結(jié)果進(jìn)行分組,再對(duì)每一組數(shù)據(jù)計(jì)算統(tǒng)計(jì)資訊。6.1.5子查詢
子查詢是一個(gè)嵌套在SELECT、INSERT、UPDATE或DELETE語(yǔ)句或其他子查詢中的查詢。子查詢分為兩種:嵌套子查詢和相關(guān)子查詢。1.嵌套子查詢
嵌套子查詢的執(zhí)行不依賴於外部查詢。嵌套子查詢?cè)谕獠坎樵冎皥?zhí)行,然後返回?cái)?shù)據(jù)供外部查詢使用,嵌套子查詢中不包含對(duì)於外部查詢的任何引用。2.相關(guān)子查詢
相關(guān)子查詢?cè)趫?zhí)行時(shí),要使用到外部查詢的數(shù)據(jù)。外部查詢首先選擇數(shù)據(jù)提供給子查詢,然後子查詢對(duì)數(shù)據(jù)進(jìn)行比較,執(zhí)行結(jié)束後再將它的查詢結(jié)果返回到它的外部查詢中。6.1.6表連接
在資料庫(kù)應(yīng)用中,經(jīng)常需要從多個(gè)相關(guān)的表中查詢數(shù)據(jù),這就需要進(jìn)行表連接。1.使用內(nèi)部連接
內(nèi)部連接也叫自然連接,是將兩個(gè)表中的列進(jìn)行比較,將兩個(gè)表中滿足連接條件的行組合起來(lái)作為結(jié)果,它是最常見的表連接形式。
內(nèi)部連接有以下兩種語(yǔ)法形式:SELECT選擇列表FROM表名1,表名2WHERE表名1.列名1=表名2.列名2或者SELECT選擇列表FROM表名1[INNER]JOIN表名2ON表名1.列名1=表名2.列名22.使用外部連接
外部連接會(huì)返回FROM子句中提到的至少一個(gè)表或視圖中的所有行,只要這些行符合任何WHERE或HAVING搜索條件。外部連接分為左外部連接、右外部連接和全外連接。
左外部連接對(duì)連接條件中左邊的表不加限制;右外部連接對(duì)連接條件中右邊的表不加限制;全外連接對(duì)兩個(gè)表都不加限制,所有兩個(gè)表中的行都會(huì)包括在結(jié)果集中。3.使用交叉連接
交叉連接也叫非限制連接,它將兩個(gè)表不加任何限制地組合起來(lái)。沒有WHERE子句的交叉連接將產(chǎn)生連接所涉及的表的笛卡爾積。4.使用自連接
表可以通過(guò)自連接與自身連接。自連接可以看作是一張表的兩個(gè)副本之間進(jìn)行的連接。6.1.7UNION操作符
使用UNION運(yùn)算符可以將兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果組合成一個(gè)結(jié)果集。使用UNION運(yùn)算符組合的結(jié)果集都必須具有相同的結(jié)構(gòu),它們的列數(shù)必須相同,並且相應(yīng)的結(jié)果集列的數(shù)據(jù)類型必須相容。6.1.8在查詢基礎(chǔ)上創(chuàng)建新表
使用SELECT…INTO語(yǔ)句可以在查詢的基礎(chǔ)上創(chuàng)建新表。語(yǔ)法為:SELECT選擇列表INTO新表名FROM表名
其中,參數(shù)“新表名”為新創(chuàng)建的表的名稱,它必須在當(dāng)前資料庫(kù)中不存在。6.2添加數(shù)據(jù)6.2.1使用SQLServerManagementStudio添加數(shù)據(jù)在SQLServerManagementStudio中,選擇相應(yīng)的表,滑鼠右擊後,在彈出的快捷菜單中選擇“打開表”命令,出現(xiàn)表數(shù)據(jù)窗口,在該窗口中可以直接進(jìn)行添加數(shù)據(jù)操作。6.2.2使用Insert語(yǔ)句添加數(shù)據(jù)1.使用INSERT和VALUES插入行語(yǔ)法形式為:INSERT[INTO]table_name[(column_list)]VALUES(data_values,…n)
其中,column_list是用逗號(hào)分隔的一些列名稱,可用來(lái)指定為其提供數(shù)據(jù)的列。
VALUES關(guān)鍵字為表的某一行指定值。2.使用INSERT和SELECT插入行
在INSERT語(yǔ)句中使用SELECT子句可以將一個(gè)或多個(gè)表或視圖中的值添加到另一個(gè)表中。使用SELECT子句還可以同時(shí)插入多行。
INSERT語(yǔ)句中使用SELECT子句的語(yǔ)法形式為:INSERT[INTO]table_name[(column_list)]SELECTselect_listFROMtable_name6.3修改數(shù)據(jù)6.3.1使用SQLServerManagementStudio修改數(shù)據(jù)在SQLServerManagementStudio中,選擇相應(yīng)的表,滑鼠右擊後,在彈出的快捷菜單中選擇“打開表”命令,出現(xiàn)表數(shù)據(jù)窗口,在該窗口中,可以直接對(duì)數(shù)據(jù)進(jìn)行修改操作。6.3.2使用Update語(yǔ)句修改數(shù)據(jù)
使用UPDATE語(yǔ)句修改表中數(shù)據(jù)的語(yǔ)法形式為:UPDATEtable_nameSET列名=運(yùn)算式
SET子句指定要更改的列和這些列的新值。6.4刪除數(shù)據(jù)6.4.1使用SQLServerManagementStudio刪除數(shù)據(jù)在SQLServerManagementStudio中,選擇相應(yīng)的表,滑鼠右擊後,在彈出的快捷菜單中選擇“打開表”命令,出現(xiàn)表數(shù)據(jù)窗口,在該窗口中選擇要?jiǎng)h除的記錄,右擊後,在彈出的快捷菜單中選擇“delete”命令。6.4.2使用Delete語(yǔ)句刪除數(shù)據(jù)1.DELETE語(yǔ)句
DELETE語(yǔ)句可刪除表或視圖中的一行或多行。
DELETE語(yǔ)法的簡(jiǎn)化形式為:DELETEtable_or_viewFROMtable_sourcesWHEREsearch_condition
其中,參數(shù)table_or_view指定要從中刪除行的表或視圖。table_or_view中所有符合WHERE搜索條件的行都將被刪除。
FROM子句是T-SQL對(duì)SQL-92的擴(kuò)展,它使得DELETE可以先從其他表查詢出一個(gè)結(jié)果集,然後刪除table_or_view中與該查詢結(jié)果相關(guān)的行。
視圖是基於某個(gè)查詢結(jié)果的虛表。除非是索引視圖,否則視圖的數(shù)據(jù)不會(huì)作為非重複對(duì)象存儲(chǔ)在資料庫(kù)中。資料庫(kù)中只存儲(chǔ)視圖的定義,即視圖是從某個(gè)或某些基本表(或視圖)導(dǎo)出的,視圖不生成所選資料庫(kù)行和列的永久拷貝。7.1背景知識(shí)7.1.1視圖的基本概念在SQLServer2005中,可以創(chuàng)建標(biāo)準(zhǔn)視圖、索引視圖和分區(qū)視圖。7.1.2視圖的優(yōu)點(diǎn)1.著重於特定數(shù)據(jù)2.簡(jiǎn)化數(shù)據(jù)操作3.自定義數(shù)據(jù)4.導(dǎo)出和導(dǎo)入數(shù)據(jù)5.跨伺服器組合分區(qū)數(shù)據(jù)7.2創(chuàng)建視圖
在創(chuàng)建視圖前應(yīng)考慮如下準(zhǔn)則。只能在當(dāng)前資料庫(kù)中創(chuàng)建視圖。視圖名稱必須遵循識(shí)別字的規(guī)則,且對(duì)每個(gè)架構(gòu)都必須唯一??梢栽谄渌晥D的基礎(chǔ)上創(chuàng)建視圖。不能將規(guī)則或DEFAULT定義與視圖相關(guān)聯(lián)。不能將AFTER觸發(fā)器與視圖相關(guān)聯(lián),只有INSTEADOF觸發(fā)器可以與之相關(guān)聯(lián)。定義視圖的查詢不能包含COMPUTE子句、COMPUTEBY子句或INTO關(guān)鍵字。定義視圖的查詢不能包含ORDERBY子句,除非在SELECT語(yǔ)句的選擇列表中還有一個(gè)TOP子句。不能為視圖定義全文索引。不能創(chuàng)建臨時(shí)視圖,也不能對(duì)臨時(shí)表創(chuàng)建視圖。7.2.1使用SQLServerManagementStudio創(chuàng)建視圖(1)在對(duì)象資源管理器中右鍵單擊“視圖”節(jié)點(diǎn),然後從快捷菜單中選擇“NewView…”。(2)彈出“AddTable”對(duì)話框,選擇相應(yīng)的表或視圖,單擊“Add”按鈕就可以添加創(chuàng)建視圖的基表,重複此操作,可以添加多個(gè)基表。(3)添加完基表後,在第1個(gè)窗格中就可以看到新添加的基表,在基表每一列的左邊有一個(gè)複選框,選擇相應(yīng)的複選框,可以指定對(duì)應(yīng)的列在視圖中被引用。(4)圖7-2所示的第2個(gè)窗格是條件窗格,可以在它當(dāng)中指定查詢條件。其中,F(xiàn)ilter列用於輸入在視圖中出現(xiàn)的篩選條件。圖7-2視圖創(chuàng)建窗口(5)在第1和第2個(gè)窗格中進(jìn)行相應(yīng)的設(shè)置,會(huì)在第3個(gè)窗格中自動(dòng)生成對(duì)應(yīng)的T-SQL語(yǔ)句。(6)單擊工具欄中的按鈕,或者選擇“QueryDesigner”菜單中的“ExecuteSQL”命令,可以運(yùn)行並輸出視圖的結(jié)果。(7)單擊工具欄中的按鈕,或者選擇“File”菜單中的“SaveView”命令,保存創(chuàng)建的視圖。7.2.2使用T-SQL語(yǔ)句創(chuàng)建視圖
可以使用CREATEVIEW語(yǔ)句來(lái)創(chuàng)建視圖,對(duì)應(yīng)的語(yǔ)法如下:
CREATEVIEW[schema_name.]view_name[(column[,...n])][WITH<view_attribute>[,...n]]ASselect_statement[;][WITHCHECKOPTION]<view_attribute>::={[ENCRYPTION][SCHEMABINDING]}
其中各參數(shù)的含義如下。(1)schema_name
視圖所屬架構(gòu)的名稱。(2)view_name
視圖的名稱。(3)column
視圖中的列使用的名稱。(4)AS
指定視圖要執(zhí)行的操作。(5)select_statement
定義視圖的SELECT語(yǔ)句。(6)CHECKOPTION
強(qiáng)制針對(duì)視圖執(zhí)行的所有數(shù)據(jù)修改語(yǔ)句都必須符合在select_statement中設(shè)置的條件。(7)ENCRYPTION
對(duì)視圖的定義進(jìn)行加密。(8)SCHEMABINDING
將視圖綁定到基礎(chǔ)表的架構(gòu)。7.3管理視圖7.3.1查看視圖在SQLServerManagementStudio中,右擊相應(yīng)的視圖名,在彈出的快捷菜單中選擇“Properties”,就可以查看視圖的屬性,包括視圖的創(chuàng)建時(shí)間、視圖名稱、架構(gòu)名稱等。7.3.2修改視圖
在SQLServerManagementStudio中,右擊相應(yīng)的視圖名,在彈出的快捷菜單中選擇“Modify”,就可以修改視圖的定義。修改後,單擊保存按鈕,或者選擇“File”菜單中的“SaveView”對(duì)視圖進(jìn)行保存。修改視圖定義對(duì)應(yīng)的T-SQL語(yǔ)句為ALTERVIEW語(yǔ)句,語(yǔ)法為:ALTERVIEW[schema_name.]view_name[(column[,...n])][WITH<view_attribute>[,...n]]ASselect_statement[;][WITHCHECKOPTION]<view_attribute>::={[ENCRYPTION]
[SCHEMABINDING]
[VIEW_METADATA]}
其中的各項(xiàng)參數(shù)與CREATEVIEW語(yǔ)句中的參數(shù)含義相同。7.3.3刪除視圖
在創(chuàng)建視圖後,如果不再需要該視圖,或想清除視圖定義以及與之相關(guān)聯(lián)的許可權(quán),可以刪除該視圖。刪除視圖後,表和視圖所基於的數(shù)據(jù)並不受到影響。在SQLServerManagementStudio中,右擊相應(yīng)的視圖名,在彈出的快捷菜單中選擇“Delete”
,單擊對(duì)話框中的“OK”按鈕就可以刪除對(duì)應(yīng)的視圖。
刪除視圖對(duì)應(yīng)的T-SQL語(yǔ)句為DROPVIEW語(yǔ)句,語(yǔ)法為:DROPVIEW[schema_name.]view_name[...,n]7.4視圖的應(yīng)用
可以通過(guò)視圖修改基表的數(shù)據(jù),修改方式與通過(guò)UPDATE、INSERT和DELETE語(yǔ)句修改表中數(shù)據(jù)的方式一樣。但是,對(duì)視圖進(jìn)行UPDATE、INSERT和DELETE操作時(shí),會(huì)有以下一些限制。SQLServer2005在支持標(biāo)準(zhǔn)SQL語(yǔ)言的同時(shí),對(duì)其進(jìn)行了擴(kuò)充,引入了T-SQL,即Transact-SQL,T-SQL是使用SQLServer2005的核心,通過(guò)它,可以定義變數(shù)、使用流控制語(yǔ)句、自定義函數(shù)、自定義存儲(chǔ)過(guò)程等,極大地?cái)U(kuò)展了SQLServer2005的功能。8.1基本概念(1)識(shí)別字資料庫(kù)對(duì)象的名稱即為其識(shí)別字。(2)識(shí)別字的種類
SQLServer2005中的識(shí)別字可以分為以下兩種類型。①常規(guī)識(shí)別字符合識(shí)別字的格式規(guī)則。在Transact-SQL語(yǔ)句中使用常規(guī)識(shí)別字時(shí)不用將其分隔開。②分隔識(shí)別字包含在雙引號(hào)(“)或者中括弧([])內(nèi)。在Transact-SQL語(yǔ)句中,必須對(duì)所有不符合識(shí)別字規(guī)則的識(shí)別字進(jìn)行分隔。(3)常規(guī)識(shí)別字規(guī)則①第一個(gè)字元必須是下列字元之一:英文字母a~z和A~Z,以及來(lái)自其他語(yǔ)言的字母字元;下劃線(_)、“at”符號(hào)(@)或者數(shù)字符號(hào)(#)。②後續(xù)字元可以包括:英文字母a~z和A~Z,以及來(lái)自其他語(yǔ)言的字母字元;十進(jìn)位數(shù)字;“at”符號(hào)(@)、美元符號(hào)($)、數(shù)字符號(hào)(#)或下劃線(_)。③識(shí)別字不能是Transact-SQL保留字。④不允許嵌入空格或其他特殊字元。8.1.1批
批處理是包含一個(gè)或多個(gè)Transact-SQL語(yǔ)句的組,從應(yīng)用程式一次性地發(fā)送到SQLServer2005進(jìn)行執(zhí)行。SQLServer將批處理的語(yǔ)句編譯為一個(gè)可執(zhí)行單元,稱為執(zhí)行計(jì)畫。執(zhí)行計(jì)畫中的語(yǔ)句每次執(zhí)行一條。8.1.2腳本
腳本是存儲(chǔ)在檔中的一系列T-SQL語(yǔ)句。該檔可以在SQLServerManagementStudio的查詢窗口中運(yùn)行。8.1.3注釋
注釋是程式代碼中不被執(zhí)行的文本字串(也稱為備註)。
SQLServer2005支持以下兩種類型的注釋字元。--(雙連字元)。這些注釋字元可與要執(zhí)行的代碼處在同一行,也可另起一行。從雙連字元開始到行尾的內(nèi)容均為注釋。/*...*/(斜杠-星號(hào)字元對(duì))。這些注釋字元可與要執(zhí)行的代碼處在同一行,也可另起一行,甚至可以在可執(zhí)行代碼內(nèi)部。開始注釋對(duì)(/*)與結(jié)束注釋對(duì)(*/)之間的所有內(nèi)容均視為注釋。8.2常量和變數(shù)8.2.1常量常量,也稱為文字值或標(biāo)量值,是在程式運(yùn)行過(guò)程中值保持不變的量,它是表示一個(gè)特定數(shù)據(jù)值的符號(hào)。1.字串常量2.Unicode字串3.二進(jìn)位常量4.bit常量5.datetime常量6.integer常量7.decimal常量8.float和real常量9.money常量10.uniqueidentifier常量8.2.2局部變數(shù)
變數(shù)是指在程式運(yùn)行過(guò)程中值可以改變的量。局部變數(shù)是用戶定義的變數(shù),它用DECLARE語(yǔ)句聲明,用戶可以在與定義它的DECLARE語(yǔ)句的同一個(gè)批中用SET語(yǔ)句為其賦值。
聲明局部變數(shù)的語(yǔ)法如下:DECLARE@variable_namedatatype[,@variable_namedatatype]…
其中,@variable_name是局部變數(shù)的名字,必須以“@”符號(hào)開頭。Datatype是為該局部變數(shù)指定的數(shù)據(jù)類型。8.2.3全局變數(shù)
全局變數(shù)是SQLServer系統(tǒng)提供並賦值的變數(shù)。通常將全局變數(shù)的值賦給局部變數(shù),以便保存和處理。全局變數(shù)的名字以@@開頭。8.3流控制語(yǔ)句Transact-SQL提供稱為控制流語(yǔ)言的特殊關(guān)鍵字,用於控制Transact-SQL語(yǔ)句、語(yǔ)句塊和存儲(chǔ)過(guò)程的執(zhí)行流。這些關(guān)鍵字可用於臨時(shí)Transact-SQL語(yǔ)句、批處理和存儲(chǔ)過(guò)程中。8.3.1BEGIN…END
包括一系列的Transact-SQL語(yǔ)句,從而可以執(zhí)行一組Transact-SQL語(yǔ)句。語(yǔ)法如下:BEGIN{sql_statement|statement_block}END
參數(shù)含義如下。{sql_statement|statement_block}
使用語(yǔ)句塊定義的任何有效的Transact-SQL語(yǔ)句或語(yǔ)句組。8.3.2IF…ELSE
指定Transact-SQL語(yǔ)句的執(zhí)行條件。語(yǔ)法如下:IFBoolean_expression{sql_statement|statement_block}[ELSE{sql_statement|statement_block}]
其中各參數(shù)的含義如下。(1)Boolean_expression
返回TRUE或FALSE的運(yùn)算式。(2){sql_statement|statement_block}
任何Transact-SQL語(yǔ)句或語(yǔ)句塊。8.3.3WHILE
設(shè)置重複執(zhí)行SQL語(yǔ)句或語(yǔ)句塊的條件。語(yǔ)法如下:WHILEBoolean_expression{sql_statement|statement_block}
其中各參數(shù)的含義如下。(1)Boolean_expression
運(yùn)算式,返回TRUE或FALSE。(2){sql_statement|statement_block}Transact-SQL語(yǔ)句或語(yǔ)句塊。8.3.4BREAK與CONTINUE
可以使用BREAK和CONTINUE關(guān)鍵字在迴圈內(nèi)部控制WHILE迴圈中語(yǔ)句的執(zhí)行。
BREAK用於退出最內(nèi)層的WHILE迴圈;CONTINUE用於重新開始下一次WHILE迴圈,在CONTINUE關(guān)鍵字之後的語(yǔ)句都不會(huì)被執(zhí)行,而是跳轉(zhuǎn)到迴圈開始的地方繼續(xù)執(zhí)行。8.3.5CASECASE運(yùn)算式可以根據(jù)多個(gè)選擇確定執(zhí)行的內(nèi)容。CASE具有以下兩種格式。(1)簡(jiǎn)單運(yùn)算式,將某個(gè)運(yùn)算式與一組簡(jiǎn)單運(yùn)算式進(jìn)行比較以確定結(jié)果。
語(yǔ)法為:CASEinput_expressionWHENwhen_expressionTHENresult_expression[...n][ELSEelse_result_expression]END
其中,input_expression為用於做條件判斷的運(yùn)算式;when_expression用於與input_expression比較,當(dāng)與input_expression的值相等時(shí)執(zhí)行後面的result_expression語(yǔ)句。當(dāng)沒有一個(gè)when_expression與input_expression的值相等時(shí),執(zhí)行else_result_expression語(yǔ)句。(2)選擇運(yùn)算式,計(jì)算一組布爾運(yùn)算式以確定結(jié)果。語(yǔ)法為:CASEWHENBoolean_expressionTHENresult_expression[...n][ELSEelse_result_expression]END
其中,Boolean_expression是布爾運(yùn)算式,如果值為TRUE,則執(zhí)行它之後的result_expression語(yǔ)句。如果沒有一個(gè)Boolean_expression的值為TRUE,則執(zhí)行else_result_expression語(yǔ)句。8.3.6WAITFORWAITFOR語(yǔ)句可以將它之後的語(yǔ)句在一個(gè)指定的時(shí)間間隔之後執(zhí)行,或在未來(lái)的某一指定時(shí)間執(zhí)行。8.3.7GOTOGOTO語(yǔ)句將一個(gè)批的執(zhí)行轉(zhuǎn)到另一個(gè)有標(biāo)號(hào)的語(yǔ)句。跳過(guò)GOTO後面的Transact-SQL語(yǔ)句,並從標(biāo)號(hào)位置繼續(xù)處理。8.3.8RETURN
從查詢或過(guò)程中無(wú)條件退出。語(yǔ)法如下:RETURN[integer_expression]參數(shù)含義如下:integer_expression返回的整數(shù)值。8.3.9PRINT
向客戶端返回用戶定義消息。語(yǔ)法如下:PRINTmsg_str|@local_variable|string_expr
其中各參數(shù)的含義如下。(1)msg_str
字串或Unicode字串常量。(2)@local_variable
任何有效的字元數(shù)據(jù)類型的變數(shù)。(3)string_expr
返回字串的運(yùn)算式。8.4系統(tǒng)函數(shù)8.4.1字串函數(shù)字串函數(shù)用於對(duì)字串進(jìn)行連接、截取等操作。8.4.2日期函數(shù)
日期函數(shù)對(duì)日期和時(shí)間輸入值執(zhí)行操作,並返回一個(gè)字串、數(shù)字值或日期和時(shí)間值。8.4.3系統(tǒng)綜合函數(shù)
系統(tǒng)綜合函數(shù)用來(lái)獲得SQLServer的有關(guān)資訊。8.4.4數(shù)學(xué)函數(shù)
數(shù)學(xué)函數(shù)用來(lái)對(duì)數(shù)值型數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算。8.4.5元數(shù)據(jù)函數(shù)
元數(shù)據(jù)函數(shù)返回有關(guān)資料庫(kù)和數(shù)據(jù)庫(kù)對(duì)象的資訊,是一種查詢系統(tǒng)表的快捷方法。8.4.6安全函數(shù)
安全函數(shù)返回有關(guān)用戶和角色的資訊。8.4.7行集函數(shù)
行集函數(shù)返回的對(duì)象可在T-SQL語(yǔ)句中像表一樣進(jìn)行引用。8.4.8游標(biāo)函數(shù)
游標(biāo)函數(shù)用來(lái)返回游標(biāo)資訊。8.4.9配置函數(shù)
配置函數(shù)返回系統(tǒng)當(dāng)前的配置資訊,它是全局變數(shù)的一部分。8.4.10文本和圖像函數(shù)
文本和圖像函數(shù)用於對(duì)text和image數(shù)據(jù)進(jìn)行操作,返回有關(guān)這些值的資訊。8.5用戶自定義函數(shù)
用戶自定義函數(shù)是接受參數(shù)、執(zhí)行操作(例如複雜計(jì)算)並將操作結(jié)果以值的形式返回的副程式。返回值可以是單個(gè)標(biāo)量值或結(jié)果集。8.5.1基本概念SQLServer2005支持3種類型的Transact-SQL用戶自定義函數(shù):標(biāo)量函數(shù)、內(nèi)嵌表值函數(shù)和多語(yǔ)句表值函數(shù)。在SQLServer中使用用戶自定義函數(shù)有以下優(yōu)點(diǎn)。允許模組化程式設(shè)計(jì)。執(zhí)行速度更快。減少網(wǎng)路流量。8.5.2創(chuàng)建用戶自定義函數(shù)1.通過(guò)CREATEFUNCTION語(yǔ)句創(chuàng)建用戶自定義函數(shù)(1)標(biāo)量函數(shù)創(chuàng)建標(biāo)量函數(shù)的語(yǔ)法如下:CREATEFUNCTION[schema_name.]function_name([{@parameter_name[AS][type_schema_name.]
parameter_data_type[=default]}[,...n]])RETURNSreturn_data_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024酒水購(gòu)銷合同模板
- 2024三方運(yùn)輸合同的范本
- 2024購(gòu)銷水泥合同范文
- 標(biāo)準(zhǔn)房屋轉(zhuǎn)讓協(xié)議樣本
- 2024房屋拆遷合同范本
- 2024機(jī)械設(shè)備購(gòu)銷合同范本
- 建筑材料銷售合同模板:建筑材料買賣合同參考
- 2024居室裝飾裝修施工合同范本
- 2024年民事調(diào)解協(xié)議書參考范本
- 標(biāo)準(zhǔn)服務(wù)合同范例大全
- 工廠改造施工方案
- 初中英語(yǔ)新課程標(biāo)準(zhǔn)詞匯表
- 《春節(jié)的文化與習(xí)俗》課件
- 手機(jī)棋牌平臺(tái)網(wǎng)絡(luò)游戲商業(yè)計(jì)劃書
- 學(xué)校體育與社區(qū)體育融合發(fā)展的研究
- 醫(yī)療機(jī)構(gòu)高警示藥品風(fēng)險(xiǎn)管理規(guī)范(2023版)
- 一年級(jí)體質(zhì)健康數(shù)據(jù)
- 八年級(jí)物理(上)期中考試分析與教學(xué)反思
- 國(guó)家開放大學(xué)《財(cái)政與金融(農(nóng))》形考任務(wù)1-4參考答案
- 2023銀行網(wǎng)點(diǎn)年度工作總結(jié)
- 工廠反騷擾虐待強(qiáng)迫歧視政策
評(píng)論
0/150
提交評(píng)論