版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
SQLServer2000概述
1.1SQLServer2000簡(jiǎn)介
SQLServer是使用客戶機(jī)/伺服器(C/S)體系結(jié)構(gòu)的關(guān)係型資料庫(kù)管理系統(tǒng)(RDBMS)。1988年推出了第一個(gè)OS/2版本。
1992年,SQLServer移植到NT上後,Microsoft成了這個(gè)專案的主導(dǎo)者。1994年以後,Microsoft專注於開發(fā)、推廣SQLServer的WindowsNT版本1996年,Microsoft公司推出了SQLServer6.5版本
1998年,推出了SQLServer7.0版本2000年推出了SQLServer2000。
1.1SQLServer2000簡(jiǎn)介SQLServer2000常見的版本有:企業(yè)版(EnterpriseEdition)、標(biāo)準(zhǔn)版(StandardEdition)、個(gè)人版(PersonalEdition)和開發(fā)人員版(DeveloperEdition)。企業(yè)版:一般作為資料庫(kù)伺服器使用。標(biāo)準(zhǔn)版:一般用於小型的工作組或部門。個(gè)人版:主要適用於移動(dòng)用戶。開發(fā)人員版:是一個(gè)適用於應(yīng)用程式開發(fā)的版本。
本章首頁(yè)1.2SQLServer2000特點(diǎn)
1.SQLServer的主要特點(diǎn)
真正的客戶機(jī)/伺服器體系結(jié)構(gòu)。圖形化用戶介面。豐富的編程介面工具。SQLServer與WindowsNT完全集成。具有很好的伸縮性。對(duì)Web技術(shù)的支持。SQLServer提供數(shù)據(jù)倉(cāng)庫(kù)功能。
1.2SQLServer2000特點(diǎn)2.SQLServer2000的新特性多個(gè)SQLServer實(shí)例:SQLServer2000支持在同一臺(tái)電腦上運(yùn)行多個(gè)關(guān)係資料庫(kù)引擎的實(shí)例。
引入了三種新的數(shù)據(jù)類型。
支持XML(ExtensiveMarkupLanguage,擴(kuò)展標(biāo)記語言)。
支持用戶自定義函數(shù)。
支持強(qiáng)大的基於Web的分析。
支持OLEDB和多種查詢。
支持分佈式的分區(qū)視圖。
本章首頁(yè)1.3SQLServer2000的安裝
1.3.1SQLServer2000的環(huán)境需求
1.硬體需求
電腦:Intel及其相容電腦,Pentium166Mz或者更高處理器或DECAlpha及其相容系統(tǒng)。記憶體(RAM):企業(yè)版最少64MB記憶體,其他版本最少需要32MB記憶體,建議使用更多的記憶體。硬碟空間:對(duì)於SQLServer2000來說,完全安裝(Full)需要180MB的空間,典型安裝(Typical)需要170MB的空間,最小安裝(Minimum)需要65MB的空間。
1.3SQLServer2000的安裝2.軟體需求SQLServer2000企業(yè)版(EnterpriseEdition)WindowsNTServer4.0Windows2000Server以上SQLServer2000標(biāo)準(zhǔn)版(StandardEdition)WindowsNTServer4.0Windows2000Server以上SQLServer2000個(gè)人版(PersonalEdition)Windows98、WindowsNT家族Windows2000家族以上SQLServer2000開發(fā)版(DeveloperEdition)WindowsNT家族
Windows2000家族以上SQLServer2000客戶端工具(Client工具)Windows家族1.3SQLServer2000的安裝1.3.2SQLServer2000的安裝
1.3.3卸載SQLServer2000本章首頁(yè)1.4SQLServer2000的系統(tǒng)資料庫(kù)
1.4.1SQLServer2000系統(tǒng)資料庫(kù)簡(jiǎn)介
SQLServer2000安裝成功後,系統(tǒng)會(huì)自動(dòng)創(chuàng)建6個(gè)系統(tǒng)資料庫(kù)。這些系統(tǒng)資料庫(kù)的檔存儲(chǔ)在MicrosoftSQLServer默認(rèn)安裝目錄下的MSSQL子目錄的Data檔夾中,資料庫(kù)檔的擴(kuò)展名為
.mdf,資料庫(kù)日誌檔的擴(kuò)展名為
.ldf。
1.4SQLServer2000的系統(tǒng)資料庫(kù)Master資料庫(kù):記錄了SQLServer系統(tǒng)的所有系統(tǒng)資訊。這些系統(tǒng)資訊包括所有的登錄資訊、系統(tǒng)設(shè)置資訊、SQLServer的初始化資訊和其他系統(tǒng)資料庫(kù)及用戶數(shù)據(jù)庫(kù)的相關(guān)資訊。
Model資料庫(kù):是所有用戶數(shù)據(jù)庫(kù)和Tempdb資料庫(kù)的範(fàn)本資料庫(kù)。它含有Master資料庫(kù)的所有系統(tǒng)表子集,這些系統(tǒng)資料庫(kù)是每個(gè)用戶定義資料庫(kù)時(shí)都需要的。
1.4SQLServer2000的系統(tǒng)資料庫(kù)Msdb資料庫(kù):是代理服務(wù)資料庫(kù)。
Tempdb資料庫(kù):是一個(gè)臨時(shí)資料庫(kù)。Tempdb資料庫(kù)由整個(gè)系統(tǒng)的所有資料庫(kù)使用。SQLServer每次啟動(dòng)時(shí),tempdb資料庫(kù)被重新建立。當(dāng)用戶與SQLServer斷開連接時(shí),其臨時(shí)表和存儲(chǔ)過程被自動(dòng)刪除。
Pubs和Northwind資料庫(kù):它們是SQLServer自帶的兩個(gè)實(shí)例資料庫(kù)。1.4SQLServer2000的系統(tǒng)資料庫(kù)1.4.2SQLServer2000系統(tǒng)表簡(jiǎn)介Sysobjects表。SQLServer的主系統(tǒng)表,出現(xiàn)在每個(gè)資料庫(kù)中。它對(duì)每個(gè)資料庫(kù)對(duì)象含有一行記錄。Syscolumns表。出現(xiàn)在master資料庫(kù)和每個(gè)用戶自定義的資料庫(kù)中,它對(duì)基表或者視圖的每個(gè)列和存儲(chǔ)過程中的每個(gè)參數(shù)含有一行記錄。Sysindexes表。出現(xiàn)在master資料庫(kù)和每個(gè)用戶自定義的資料庫(kù)中,它對(duì)每個(gè)索引和沒有聚簇索引的每個(gè)表含有一行記錄,它還對(duì)包括文本/圖像數(shù)據(jù)的每個(gè)表含有一行記錄。1.4SQLServer2000的系統(tǒng)資料庫(kù)Sysusers表。出現(xiàn)在master資料庫(kù)和每個(gè)用戶自定義的資料庫(kù)中,它對(duì)整個(gè)資料庫(kù)中的每個(gè)WindowsNT用戶、WindowsNT用戶組、SQLServer用戶或者SQLServer角色含有一行記錄。Sysdatabases表。它對(duì)SQLServer系統(tǒng)上的每個(gè)系統(tǒng)資料庫(kù)和用戶自定義的資料庫(kù)含有一行記錄,只出現(xiàn)在master資料庫(kù)中。Sysdepends表。它對(duì)表、視圖和存儲(chǔ)過程之間的每個(gè)依賴關(guān)係含有一行記錄,出現(xiàn)在master資料庫(kù)和每個(gè)用戶自定義的資料庫(kù)中。1.4SQLServer2000的系統(tǒng)資料庫(kù)注意:如果使用DDL語句的INSERT、UPDATE和DELETE語句來修改系統(tǒng)表的資訊,對(duì)整個(gè)系統(tǒng)是非常危險(xiǎn)的,應(yīng)該使用系統(tǒng)存儲(chǔ)過程來代替。
1.4SQLServer2000的系統(tǒng)資料庫(kù)1.4.3SQLServer2000系統(tǒng)存儲(chǔ)過程簡(jiǎn)介系統(tǒng)存儲(chǔ)過程是由SQLServer2000系統(tǒng)自動(dòng)創(chuàng)建的存儲(chǔ)過程。系統(tǒng)存儲(chǔ)過程創(chuàng)建並存放於系統(tǒng)資料庫(kù)master中,並且名稱以sp_或者xp_開頭??梢詮娜魏钨Y料庫(kù)中執(zhí)行系統(tǒng)存儲(chǔ)過程。
本章首頁(yè)2.1概述
為了管理SQLServer2000的伺服器和客戶機(jī),使用SQLServer2000開發(fā)資料庫(kù)和應(yīng)用程式,SQLServer2000提供了一套常用的管理工具和實(shí)用程式。主要的管理工具和實(shí)用程式有以下幾個(gè):
服務(wù)管理器;企業(yè)管理器;查詢分析器;伺服器網(wǎng)路實(shí)用工具;客戶端網(wǎng)路實(shí)用工具;導(dǎo)入和導(dǎo)出數(shù)據(jù);聯(lián)機(jī)幫助文檔;
本章首頁(yè)2.2SQLServer服務(wù)管理器
SQLServer服務(wù)管理器(ServiceManager)是在伺服器端實(shí)際工作時(shí)最有用的實(shí)用程式。SQLServer服務(wù)管理器的主要作用是用來啟動(dòng)資料庫(kù)伺服器的即時(shí)服務(wù)、暫停和停止正在運(yùn)行的服務(wù),或在暫停服務(wù)後繼續(xù)服務(wù)。
本章首頁(yè)2.3企業(yè)管理器企業(yè)管理器(EnterpriseManager)是SQLServer中最重要的一個(gè)管理工具。用戶和系統(tǒng)管理員可以使用它來管理網(wǎng)路、電腦、服務(wù)和其他系統(tǒng)組件。企業(yè)管理器不僅能夠配置系統(tǒng)環(huán)境和管理SQLServer,而且由於它能夠以層疊列表的形式來顯示所有的SQLServer對(duì)象,因而所有SQLServer對(duì)象的建立與管理都可以通過它來完成。
2.3企業(yè)管理器
伺服器的註冊(cè):只有經(jīng)過註冊(cè)的伺服器才能被SQLServer管理工具識(shí)別。第一次啟動(dòng)SQLServer2000的服務(wù)時(shí),SQLServer2000會(huì)自動(dòng)完成本地默認(rèn)實(shí)例資料庫(kù)的註冊(cè)。但如果要實(shí)現(xiàn)非本機(jī)資料庫(kù)的管理,必須手動(dòng)註冊(cè)該伺服器。本章首頁(yè)2.4查詢分析器
SQLServer2000的查詢分析器(QueryAnalyzer)可以使用戶互動(dòng)式地輸入和執(zhí)行各種Transact-SQL語句,並且迅速地查看這些語句的執(zhí)行結(jié)果,來完成對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)的分析和處理。
2.4.1查詢窗口和結(jié)果顯示窗口
2.4.2對(duì)象流覽器窗口
2.4.3打開表窗口
本章首頁(yè)2.5伺服器網(wǎng)路實(shí)用工具客戶端應(yīng)用程式與資料庫(kù)伺服器的通信位於同一臺(tái)電腦:SQLServer2000利用Windows進(jìn)程間通信組件,如共用記憶體和命名管道。不在同一臺(tái)電腦:利用網(wǎng)路通信組件。API協(xié)議:SQLServer2000做了簡(jiǎn)化,只需要提供伺服器電腦的網(wǎng)路名稱。在所有通信組件中,網(wǎng)路庫(kù)(Net-Library)是最主要的。2.5伺服器網(wǎng)路實(shí)用工具
伺服器網(wǎng)路實(shí)用工具(ServerNetworkUtility)用來配置本電腦作為伺服器時(shí)允許使用的連接協(xié)議,還可以在此設(shè)置相關(guān)參數(shù)等。
本章首頁(yè)2.6客戶端網(wǎng)路實(shí)用工具
客戶端網(wǎng)路實(shí)用工具(ClientNetworkUtility)用來配置客戶端的網(wǎng)路連接,管理和測(cè)定客戶端的網(wǎng)路庫(kù)等。別名是ODBC或查詢分析器識(shí)別伺服器時(shí)使用的名字,方便用戶使用。在用命名管道配置時(shí),如果伺服器在本機(jī),注意用“.”表示。註冊(cè)伺服器是進(jìn)行伺服器集中管理和實(shí)現(xiàn)分佈式查詢的前提。註冊(cè)成功需要:伺服器端和客戶端必須配置相同的網(wǎng)路庫(kù)客戶端的配置資訊必須正確無誤本章首頁(yè)2.7導(dǎo)入和導(dǎo)出數(shù)據(jù)
導(dǎo)入和導(dǎo)出數(shù)據(jù)(InputandExportData)採(cǎi)用DTS導(dǎo)入/導(dǎo)出嚮導(dǎo)來完成。此嚮導(dǎo)包含了所有的DTS(DataTransformationServices)工具,提供了在OLEDB數(shù)據(jù)源之間複製數(shù)據(jù)的最簡(jiǎn)捷的方法。
本章首頁(yè)3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)
資料庫(kù)的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu)兩種。
資料庫(kù)的邏輯存儲(chǔ)結(jié)構(gòu)指的是資料庫(kù)是由哪些性質(zhì)的資訊所組成。實(shí)際上,SQLServer的資料庫(kù)是由諸如表、視圖、索引等各種不同的資料庫(kù)對(duì)象所組成。資料庫(kù)的物理存儲(chǔ)結(jié)構(gòu)是討論資料庫(kù)檔是如何在磁片上存儲(chǔ)的,資料庫(kù)在磁片上是以檔為單位存儲(chǔ)的,由資料庫(kù)檔和事務(wù)日誌檔組成,一個(gè)資料庫(kù)至少應(yīng)該包含一個(gè)資料庫(kù)檔和一個(gè)事務(wù)日誌檔。
3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)3.1.1資料庫(kù)檔
1.主資料庫(kù)檔(PrimaryDatabaseFile)
一個(gè)資料庫(kù)可以有一個(gè)或多個(gè)數(shù)據(jù)庫(kù)檔,一個(gè)資料庫(kù)檔只能屬於一個(gè)資料庫(kù)。當(dāng)有多個(gè)數(shù)據(jù)庫(kù)檔時(shí),有一個(gè)檔被定義為主資料庫(kù)檔(簡(jiǎn)稱為主檔),其擴(kuò)展名為mdf。3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)主資料庫(kù)檔用來存儲(chǔ)資料庫(kù)的啟動(dòng)資訊以及部分或者全部數(shù)據(jù),是所有資料庫(kù)檔的起點(diǎn),包含指向其他資料庫(kù)檔的指針。一個(gè)資料庫(kù)只能有一個(gè)主資料庫(kù)檔。
3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)2.輔助資料庫(kù)檔(SecondaryDatabaseFile)
用於存儲(chǔ)主資料庫(kù)檔中未存儲(chǔ)的剩餘數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象,一個(gè)資料庫(kù)可以沒有輔助資料庫(kù)檔,但也可以同時(shí)擁有多個(gè)輔助資料庫(kù)檔。
輔助資料庫(kù)檔的擴(kuò)展名為ndf(簡(jiǎn)稱為輔助檔)。
3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)3.事務(wù)日誌檔
存儲(chǔ)資料庫(kù)的更新情況等事務(wù)日誌資訊,當(dāng)資料庫(kù)損壞時(shí),管理員使用事務(wù)日誌恢復(fù)資料庫(kù)。每一個(gè)資料庫(kù)至少必須擁有一個(gè)事務(wù)日誌檔,而且允許擁有多個(gè)日誌檔。事務(wù)日誌檔的擴(kuò)展名為ldf,日誌檔的大小至少是512KB。
SQLServer事務(wù)日誌採(cǎi)用提前寫入的方式。3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)注意:SQLServer2000中的數(shù)據(jù)和事務(wù)日誌檔不能存放在壓縮檔系統(tǒng)或象共用網(wǎng)路目錄等遠(yuǎn)程的網(wǎng)路驅(qū)動(dòng)器上。
SQLServer2000的檔擁有兩個(gè)名稱,即邏輯檔案名和物理檔案名。當(dāng)使用Transact-SQL命令語句訪問某一個(gè)檔時(shí),必須使用該檔的邏輯名。物理檔案名是檔實(shí)際存儲(chǔ)在磁片上的檔案名,而且可包含完整的磁片目錄路徑。
3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)3.1.2資料庫(kù)檔組
利用檔組可以使伺服器的性能得到提高。
主文件組中包含了所有的系統(tǒng)表,當(dāng)建立資料庫(kù)時(shí),主文件組包括主資料庫(kù)檔和未指定組的其他檔。用戶定義檔組中可以指定一個(gè)缺省檔組,那麼在創(chuàng)建資料庫(kù)對(duì)象時(shí)如果沒有指定將其放在哪一個(gè)檔組中,就會(huì)將它放在缺省檔組中。如果沒有指定缺省檔組,則主文件組為缺省檔組。3.1資料庫(kù)的存儲(chǔ)結(jié)構(gòu)一個(gè)檔只能存在於一個(gè)檔組中,一個(gè)檔組也只能被一個(gè)資料庫(kù)使用;日誌檔是獨(dú)立的,它不能作為任何檔組的成員。
本章首頁(yè)3.2創(chuàng)建和刪除資料庫(kù)
3.2.1創(chuàng)建資料庫(kù)
創(chuàng)建資料庫(kù)需要一定許可,在默認(rèn)情況下,只有系統(tǒng)管理員和數(shù)據(jù)庫(kù)擁有者可以創(chuàng)建資料庫(kù)。資料庫(kù)被創(chuàng)建後,創(chuàng)建資料庫(kù)的用戶自動(dòng)成為該資料庫(kù)的所有者。
創(chuàng)建資料庫(kù)的過程實(shí)際上就是為數(shù)據(jù)庫(kù)設(shè)計(jì)名稱、設(shè)計(jì)所佔(zhàn)用的存儲(chǔ)空間和存放檔位置的過程等。3.2創(chuàng)建和刪除資料庫(kù)1.使用嚮導(dǎo)創(chuàng)建資料庫(kù)
2.使用企業(yè)管理器創(chuàng)建資料庫(kù)
3.使用Transact-SQL語言創(chuàng)建資料庫(kù)3.2創(chuàng)建和刪除資料庫(kù)說明:在Transact-SQL語言的命令格式中,用[]括起來的內(nèi)容表示是可選的;[,…n]表示重複前面的內(nèi)容;用<>括起來表示在實(shí)際編寫語句時(shí),用相應(yīng)的內(nèi)容替代;用{}括起來表示是必選的;類似A|B的格式,表示A和B只能選擇一個(gè),不能同時(shí)都選。
3.2創(chuàng)建和刪除資料庫(kù)CREATEDATABASEdatabase_name[ON[PRIMARY][<filespec>[,…n][,<filegroupspec>[,…n]]][LOGON{<filespec>[,…n]}][FORLOAD|FORATTACH]
3.2創(chuàng)建和刪除資料庫(kù)<filespec>::=([NAME=logical_file_name,]FILENAME=‘os_file_name’[,SIZE=size][,MAXSIZE={max_size|UNLIMITED}][,F(xiàn)ILEGROWTH=growth_increment])
[,…n]
<filegroupspec>::=FILEGROUPfilegroup_name<filespec>[,…n]
3.2創(chuàng)建和刪除資料庫(kù)database_name:新資料庫(kù)的名稱。資料庫(kù)名稱在伺服器中必須唯一,最長(zhǎng)為128個(gè)字元,並且要符合識(shí)別字的命名規(guī)則。每個(gè)伺服器管理的資料庫(kù)最多為32767個(gè)。ON:指定存放資料庫(kù)的數(shù)據(jù)檔資訊。<filespec>列表用於定義主文件組的數(shù)據(jù)檔,<filegroup>列表用於定義用戶檔組及其中的檔。PRIMARY:用於指定主文件組中的檔。主文件組的第一個(gè)由<filespec>指定的檔是主文件。如果不指定PRIMARY關(guān)鍵字,則在命令中列出的第一個(gè)檔將被默認(rèn)為主檔。3.2創(chuàng)建和刪除資料庫(kù)LOGON:指明事務(wù)日誌檔的明確定義。如果沒有本選項(xiàng),則系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè)檔案名首碼與資料庫(kù)名相同,容量為所有資料庫(kù)檔大小1/4的事務(wù)日誌檔。FORLOAD:表示計(jì)畫將備份直接裝入新建的資料庫(kù),主要是為了和過去的SQLServer版本相容。FORATTACH:表示在一組已經(jīng)存在的操作系統(tǒng)檔中建立一個(gè)新的資料庫(kù)。NAME:指定資料庫(kù)的邏輯名稱。FILENAME:指定資料庫(kù)所在檔的操作系統(tǒng)檔案名稱和路徑,該操作系統(tǒng)檔案名和NAME的邏輯名稱一一對(duì)應(yīng)。3.2創(chuàng)建和刪除資料庫(kù)SIZE:指定資料庫(kù)的初始容量大小。如果沒有指定主文件的大小,則SQLServer默認(rèn)其與範(fàn)本資料庫(kù)中的主文件大小一致,其他資料庫(kù)檔和事務(wù)日誌檔則默認(rèn)為1MB。指定大小的數(shù)字size可以使用KB、MB、GB和TB尾碼,默認(rèn)的尾碼為MB。Size中不能使用小數(shù),其最小值為512KB,默認(rèn)值為1MB。主文件的size不能小於範(fàn)本資料庫(kù)中的主文件。MAXSIZE:指定操作系統(tǒng)檔可以增長(zhǎng)到的最大尺寸。如果沒有指定,則檔可以不斷增長(zhǎng)直到充滿磁片。3.2創(chuàng)建和刪除資料庫(kù)FILEGROWTH:指定檔每次增加容量的大小,當(dāng)指定數(shù)據(jù)為0時(shí),表示檔不增長(zhǎng)。增加量可以確定為以KB、MB作尾碼的位元組數(shù)或以%作尾碼的被增加容量檔的百分比來表示。默認(rèn)尾碼為MB。如果沒有指定FILEGROWTH,則默認(rèn)值為10%,每次擴(kuò)容的最小值為64KB。
3.2創(chuàng)建和刪除資料庫(kù)例3-2-1:使用CREATEDATABASE創(chuàng)建一個(gè)student資料庫(kù),所有參數(shù)均取默認(rèn)值。
例3-2-2:創(chuàng)建一個(gè)Student1資料庫(kù),該資料庫(kù)的主文件邏輯名稱為Student1_data,物理檔案名為Student1.mdf,初始大小為10MB,最大尺寸為無限大,增長(zhǎng)速度為10%;資料庫(kù)的日誌檔邏輯名稱為Student1_log,物理檔案名為Student1.ldf,初始大小為1MB,最大尺寸為5MB,增長(zhǎng)速度為1MB。
3.2創(chuàng)建和刪除資料庫(kù)例3-2-3:創(chuàng)建一個(gè)指定多個(gè)數(shù)據(jù)檔和日誌檔的資料庫(kù)。該資料庫(kù)名稱為students,有1個(gè)10MB和1個(gè)20MB的數(shù)據(jù)檔和2個(gè)10MB的事務(wù)日誌檔。數(shù)據(jù)檔邏輯名稱為student1和student2,物理檔案名為student1.mdf和student2.mdf。主文件是student1,由primary指定,兩個(gè)數(shù)據(jù)檔的最大尺寸分別為無限大和100MB,增長(zhǎng)速度分別為10%和1MB。事務(wù)日誌檔的邏輯名為studentlog1和studentlog2,物理檔案名為studentlog1.ldf和studentlog2.ldf,最大尺寸均為50MB,檔增長(zhǎng)速度為1MB。
3.2創(chuàng)建和刪除資料庫(kù)3.2.2刪除資料庫(kù)
1.利用企業(yè)管理器刪除資料庫(kù)
2.利用Drop語句刪除資料庫(kù)
Dropdatabasedatabase_name[,…n]說明:只有處?kù)墩顟B(tài)下的資料庫(kù),才能使用DROP語句刪除。當(dāng)資料庫(kù)處?kù)兑韵聽顟B(tài)時(shí)不能被刪除:資料庫(kù)正在使用;資料庫(kù)正在恢復(fù);資料庫(kù)包含用於複製的已經(jīng)出版的對(duì)象。
本章首頁(yè)3.3修改資料庫(kù)
3.3.1資料庫(kù)更名
在重命名資料庫(kù)之前,應(yīng)該確保沒有用戶使用該資料庫(kù),而且資料庫(kù)應(yīng)該設(shè)置為“單用戶”模式。系統(tǒng)存儲(chǔ)過程sp_renamedb語法如下:sp_renamedb[@dbname=]'old_name',[@newname=]'new_name'3.3修改資料庫(kù)3.3.2利用企業(yè)管理器修改資料庫(kù)屬性
限制訪問包含兩個(gè)選項(xiàng):“db_owner,dbcreator或sysadmin的成員”選項(xiàng)表示只有資料庫(kù)的所有者、資料庫(kù)創(chuàng)建者和系統(tǒng)管理員才有權(quán)使用資料庫(kù);“單用戶”
選項(xiàng)表示資料庫(kù)在同一時(shí)間只能供一個(gè)用戶使用。ANSINULL默認(rèn)設(shè)置:允許在資料庫(kù)表的列中輸入空(NULL)值。遞歸觸發(fā)器:指定是否允許觸發(fā)器遞歸調(diào)用。自動(dòng)更新統(tǒng)計(jì)資訊:允許使用SELECTINTO或BCP、WRITETEXT、UPDATETEXT命令向表中大量插入數(shù)據(jù)。在開發(fā)資料庫(kù)時(shí)常常將此選項(xiàng)設(shè)置為真。3.3修改資料庫(kù)殘缺頁(yè)檢測(cè):允許自動(dòng)檢測(cè)有損壞的頁(yè)。頁(yè)是資料庫(kù)內(nèi)容的基本存儲(chǔ)單位,每個(gè)頁(yè)的大小為8KB。由於SQLServer對(duì)頁(yè)的讀寫單位是大小為512位元組的扇區(qū),當(dāng)每個(gè)頁(yè)的第一個(gè)扇區(qū)被成功寫入後,SQLServer就認(rèn)為此頁(yè)已經(jīng)被成功寫入。因此,如果寫完第一個(gè)扇區(qū)後發(fā)生突發(fā)事件,導(dǎo)致寫入中斷,就會(huì)產(chǎn)生有損壞的頁(yè),需要通知備份來恢復(fù)資料庫(kù)。自動(dòng)關(guān)閉:當(dāng)資料庫(kù)中無用戶時(shí),自動(dòng)關(guān)閉該資料庫(kù),並將所佔(zhàn)用的資源交還給操作系統(tǒng)。對(duì)那些不間斷使用的資料庫(kù)不要使用此選項(xiàng)。3.3修改資料庫(kù)自動(dòng)收縮:允許定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行檢查,當(dāng)資料庫(kù)檔或日誌檔中未用空間超過其大小的25%時(shí),系統(tǒng)將會(huì)自動(dòng)縮減檔,使其未用空間等於25%。當(dāng)檔大小沒有超過其建立時(shí)的初始大小時(shí),不會(huì)縮減檔??s減後的檔也必須大於或等於其初始大小。自動(dòng)創(chuàng)建統(tǒng)計(jì)資訊:在優(yōu)化查詢時(shí),根據(jù)需要自動(dòng)創(chuàng)建統(tǒng)計(jì)資訊。使用被引用的識(shí)別字:識(shí)別字必須用雙引號(hào)括起來,且可以不遵循Transact-SQL命名標(biāo)準(zhǔn)。
3.3修改資料庫(kù)3.3.3使用Transact-SQL語言修改資料庫(kù)
只有資料庫(kù)管理員或具有CREATEDATABASE許可權(quán)的資料庫(kù)所有者才有權(quán)執(zhí)行該語句。ALTERDATABASE語句的語法格式如下:3.3修改資料庫(kù)Alterdatabasedatabasename{addfile<filespec>[,…n][tofilegroupfilegroupname]|addlogfile<filespec>[,…n]|removefilelogical_file_name|removefilegroupfilegroup_name
|modifyfile<filespec>|modifyname=new_databasename|addfilegroupfilegroup_name|modifyfilegroupfilegroup_name{filegroup_property|name=new_filegroup_name}}3.3修改資料庫(kù)addfile<filespec>[,…n][tofilegroupfilegroupname]:表示向指定的檔組中添加新的數(shù)據(jù)檔。addlogfile<filespec>[,…n]:增加新的日誌檔。removefilelogical_file_name:刪除指定的操作系統(tǒng)檔。removefilegroupfilegroup_name:刪除指定的檔組。modifyfile<filespec>:修改某個(gè)操作系統(tǒng)檔。3.3修改資料庫(kù)modifyname=new_databasename:重命名資料庫(kù)。addfilegroupfilegroup_name:增加一個(gè)檔組。modifyfilegroupfilegroup_name:修改某個(gè)指定檔組的屬性。
3.3修改資料庫(kù)3.3.4縮小資料庫(kù)
1.使用企業(yè)管理器可以縮小資料庫(kù)。
2.使用Transact-SQL語言縮小資料庫(kù)。
(1)使用DBCCSHRINKDATABASE命令收縮指定資料庫(kù)中的數(shù)據(jù)檔。
DBCCSHRINKDATABASE(database_name[,target_percent][,{NOTRUNCATE|TRUNCATEONLY}])3.3修改資料庫(kù)database_name:要收縮的資料庫(kù)名稱。Target_percent:當(dāng)資料庫(kù)收縮後,資料庫(kù)檔中剩餘可用空間的百分比。
NOTRUNCATE:被釋放的檔空間依然保持在資料庫(kù)檔中。如果未指定,將所釋放的檔空間被操作系統(tǒng)回收。TRUNCATEONLY:將數(shù)據(jù)檔中未使用的空間釋放給操作系統(tǒng),並將檔收縮到上一次所分配的大小。使用
TRUNCATEONLY時(shí),將忽略
target_percent的限制。
3.3修改資料庫(kù)(2)使用DBCCSHRINKFILE命令收縮資料庫(kù)的指定數(shù)據(jù)檔或日誌檔大小DBCCSHRINKFILE的語法格式如下:DBCCSHRINKFILE(file_name{[,target_size]|[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]})4.1數(shù)據(jù)類型4.1.1系統(tǒng)數(shù)據(jù)類型
系統(tǒng)數(shù)據(jù)類型是SQLServer預(yù)先定義好的,可以直接使用。
1.整型數(shù)據(jù)類型
(1)int(integer):4個(gè)位元組(2)Smallint
:2個(gè)位元組(3)Tinyint:1個(gè)位元組
4.1數(shù)據(jù)類型2.浮點(diǎn)數(shù)據(jù)類型:用於存儲(chǔ)十進(jìn)位小數(shù),採(cǎi)用只入不舍的方式
(1)Real:4個(gè)位元組的,最大7位精確位數(shù)。(2)Float:可以精確到第15位小數(shù),默認(rèn)佔(zhàn)用8個(gè)位元組的存儲(chǔ)空間。Float數(shù)據(jù)類型也可以寫為float(n)的形式,n為1~15之間的整數(shù)值。當(dāng)n取1~7時(shí),系統(tǒng)用4個(gè)位元組存儲(chǔ)它;當(dāng)n取8~15時(shí),用8個(gè)位元組存儲(chǔ)它。4.1數(shù)據(jù)類型(3)Decimal和numeric:可以提供小數(shù)所需要的實(shí)際存儲(chǔ)空間,可以用2~17個(gè)位元組來存儲(chǔ)。也可以將其寫為decimal(p,s)的形式。注意:數(shù)值類型的總位數(shù)不包括小數(shù)。例如:decimal(10,5),表示共有10位數(shù),其中整數(shù)5位,小數(shù)5位。
4.1數(shù)據(jù)類型3.字元數(shù)據(jù)類型用來存儲(chǔ)各種字母、數(shù)字符號(hào)和特殊符號(hào)。在使用時(shí)需要在其前後加上英文單引號(hào)或者雙引號(hào)。(1)Char:佔(zhàn)用1個(gè)位元組。其定義形式為:char(n)n的取值為1~8000。默認(rèn)n的值為1。4.1數(shù)據(jù)類型(2)Varchar:可以存儲(chǔ)長(zhǎng)達(dá)8000個(gè)字元的可變長(zhǎng)度字串,和char類型不同varchar類型根據(jù)輸入數(shù)據(jù)的實(shí)際長(zhǎng)度而變化。其定義形式為:varchar(n)(3)Nchar:採(cǎi)用Unicode(統(tǒng)一字元編碼標(biāo)準(zhǔn))字元集每個(gè)Unicode字元用兩個(gè)位元組為一個(gè)存儲(chǔ)單位。其定義形式為:nchar(n)(4)Nvarchar:使用Unicode字元集的Varchar數(shù)據(jù)類型。其定義形式為:nvarchar(n)4.1數(shù)據(jù)類型4.日期和時(shí)間數(shù)據(jù)類型(1)Datetime:佔(zhàn)用8個(gè)位元組。用於存儲(chǔ)日期和時(shí)間的結(jié)合體,可以存儲(chǔ)從西元1753年1月1日零時(shí)起~西元9999年12月31日23時(shí)59分59秒之間的所有日期和時(shí)間,其精確度可達(dá)三百分之一秒,即3.33毫秒。當(dāng)存儲(chǔ)datetime數(shù)據(jù)類型時(shí),默認(rèn)的格式是:MMDDYYYYhh:mmA.M./P.M。當(dāng)插入數(shù)據(jù)或者在其他地方使用datetime類型時(shí),需要用單引號(hào)把它括起來。4.1數(shù)據(jù)類型默認(rèn)January1,190012:00A.M??梢越邮艿妮斎敫袷饺缦拢篔an41999、JAN41999、January41999、Jan19994、19994Jan和1999Jan4。datetime數(shù)據(jù)類型允許使用/、-和.作為不同時(shí)間單位間的分隔符號(hào)。(2)Smalldatetime:存儲(chǔ)從1900年1月1日~2079年6月6日內(nèi)的日期。4個(gè)位元組。
4.1數(shù)據(jù)類型5.文本和圖形數(shù)據(jù)類型(1)Text:容量可以在1~231-1個(gè)位元組。在定義Text數(shù)據(jù)類型時(shí),不需要指定數(shù)據(jù)長(zhǎng)度,SQLServer會(huì)根據(jù)數(shù)據(jù)的長(zhǎng)度自動(dòng)為其分配空間。(2)Ntext:採(cǎi)用unicode標(biāo)準(zhǔn)字元集,用於存儲(chǔ)大容量文本數(shù)據(jù)。其理論上的容量為230-1(1,073,741,823)個(gè)位元組。(3)Image:用於存儲(chǔ)照片、目錄圖片或者圖畫,其理論容量為231-1(2,147,483,647)個(gè)位元組。
4.1數(shù)據(jù)類型6.貨幣數(shù)據(jù)類型(1)Money:用於存儲(chǔ)貨幣值,數(shù)值以一個(gè)正數(shù)部分和一個(gè)小數(shù)部分存儲(chǔ)在兩個(gè)4位元組的整型值中,存儲(chǔ)範(fàn)圍為-922337213685477.5808~922337213685477.5808,精度為貨幣單位的萬分之一。(2)Smallmoney:其存儲(chǔ)範(fàn)圍為-214748.3468~214748.3467。當(dāng)為money或smallmoney的表輸入數(shù)據(jù)時(shí),必須在有效位置前面加一個(gè)貨幣單位符號(hào)(如$或其他貨幣單位的記號(hào))。
4.1數(shù)據(jù)類型7.位數(shù)據(jù)類型Bit稱為位數(shù)據(jù)類型,有兩種取值:0和1。如果一個(gè)表中有8個(gè)或更少的bit列時(shí),用1個(gè)位元組存放。如果有9~16個(gè)bit列時(shí),用2個(gè)位元組存放。在輸入0以外的其他值時(shí),系統(tǒng)均把它們當(dāng)1看待。4.1數(shù)據(jù)類型8.二進(jìn)位數(shù)據(jù)類型(1)Binary:其定義形式為binary(n),數(shù)據(jù)的存儲(chǔ)長(zhǎng)度是固定的,即n+4個(gè)位元組。二進(jìn)位數(shù)據(jù)類型的最大長(zhǎng)度(即n的最大值)為8000,常用於存儲(chǔ)圖像等數(shù)據(jù)。(2)Varbinary:其定義形式為varbinary(n),數(shù)據(jù)的存儲(chǔ)長(zhǎng)度是變化的,它為實(shí)際所輸入數(shù)據(jù)的長(zhǎng)度加上4位元組。在輸入二進(jìn)位常量時(shí),需在該常量前面加一個(gè)首碼0x。
4.1數(shù)據(jù)類型9.特殊數(shù)據(jù)類型(1)Timestamp:也稱作時(shí)間戳數(shù)據(jù)類型。是一種自動(dòng)記錄時(shí)間的數(shù)據(jù)類型,主要用於在數(shù)據(jù)表中記錄其數(shù)據(jù)的修改時(shí)間。它提供資料庫(kù)範(fàn)圍內(nèi)的唯一值。(2)Uniqueidentifier:也稱作唯一識(shí)別字?jǐn)?shù)據(jù)類型。Uniqueidentifier用於存儲(chǔ)一個(gè)16位元組長(zhǎng)的二進(jìn)位數(shù)據(jù)類型,它是SQLServer根據(jù)電腦網(wǎng)絡(luò)適配器地址和CPU時(shí)鐘產(chǎn)生的全局唯一識(shí)別字代碼(GloballyUniqueIdentifier,簡(jiǎn)寫為GUID)。
4.1數(shù)據(jù)類型10.新增數(shù)據(jù)類型(1)Bigint:佔(zhàn)用8個(gè)位元組。(2)sql_variant:用於存儲(chǔ)除文本、圖形數(shù)據(jù)和timestamp類型數(shù)據(jù)外的其他任何合法的SQLServer數(shù)據(jù)。(3)table:用於存儲(chǔ)對(duì)表或者視圖處理後的結(jié)果集。4.1數(shù)據(jù)類型4.1.2自定義數(shù)據(jù)類型
1.使用企業(yè)管理器創(chuàng)建2.利用系統(tǒng)存儲(chǔ)過程創(chuàng)建sp_addtype[@typename=]type,[@phystype=]system_data_type[,[@nulltype=]‘null_type’][,[@owner=]‘owner_name’]4.1數(shù)據(jù)類型type:指定用戶定義的數(shù)據(jù)類型的名稱。system_data_type:指定相應(yīng)的系統(tǒng)提供的數(shù)據(jù)類型的名稱及定義。注意,不能使用timestamp數(shù)據(jù)類型,當(dāng)所使用的系統(tǒng)數(shù)據(jù)類型有額外說明時(shí),需要用引號(hào)將其括起來。null_type:指定用戶自定義數(shù)據(jù)類型的null屬性,其值可以為‘null’、‘notnull’或者‘nonull’。默認(rèn)與系統(tǒng)默認(rèn)的null屬性相同。owner_name:指定用戶自定義數(shù)據(jù)類型的所有者。4.1數(shù)據(jù)類型刪除用戶自定義數(shù)據(jù)
1.使用企業(yè)管理器2.利用系統(tǒng)存儲(chǔ)過程sp_droptype[@typename=]‘type’
本章首頁(yè)4.2創(chuàng)建表
表是包含資料庫(kù)中所有數(shù)據(jù)的資料庫(kù)對(duì)象,用來存儲(chǔ)各種各樣的資訊。在SQLServer2000中,一個(gè)資料庫(kù)中最多可以創(chuàng)建200萬個(gè)表,用戶創(chuàng)建資料庫(kù)表時(shí),最多可以定義1024列。在同一資料庫(kù)的不同表中,可以有相同的字段,但在同一個(gè)表中不允許有相同的字段,而且每個(gè)字段都要求數(shù)據(jù)類型相同。4.2創(chuàng)建表4.2.1利用企業(yè)管理器創(chuàng)建表默認(rèn)值:指定列的默認(rèn)值。除定義為timestamp或帶IDENTITY屬性的列以外的任何列。刪除表時(shí),將刪除默認(rèn)值定義。只有常量值(如字串)、SQLServer內(nèi)部函數(shù)(如SYSTEM_USER())或NULL值可以用作默認(rèn)值。精度和小數(shù)位數(shù):精度是列的總長(zhǎng)度,包括整數(shù)部分和小數(shù)部分的長(zhǎng)度之和,但不包括小數(shù)點(diǎn);小數(shù)位數(shù)指定小數(shù)點(diǎn)後面的長(zhǎng)度。4.2創(chuàng)建表標(biāo)識(shí):指定列是否是標(biāo)識(shí)列。一個(gè)表只能創(chuàng)建一個(gè)標(biāo)識(shí)列。不能對(duì)標(biāo)識(shí)列使用綁定默認(rèn)值和DEFAULT約束。必須同時(shí)指定種子和增量,或者兩者都不指定。默認(rèn)值(1,1)。能夠成為標(biāo)識(shí)列的數(shù)據(jù)類型有int、smallint、tinyint、numeric和decimal等系統(tǒng)數(shù)據(jù)類型;如果其數(shù)據(jù)類型為numeric和decimal,不允許出現(xiàn)小數(shù)位數(shù)。標(biāo)識(shí)種子:指定標(biāo)識(shí)列的初始值。標(biāo)識(shí)遞增量:指定標(biāo)識(shí)列的增量值。4.2創(chuàng)建表是RowGuid:指定列是否使用全局唯一識(shí)別字。公式:用於指定計(jì)算列的列值運(yùn)算式。排序規(guī)則:指定列的排序規(guī)則。說明:在資料庫(kù)中表名必須是唯一的,但是如果為表指定了不同的用戶,就可以創(chuàng)建多個(gè)相同名稱的表。
4.2創(chuàng)建表4.2.2利用Transact-SQL語言創(chuàng)建表CREATETABLE[database_name.[owner].|owner.]table_name({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>}[,…n])[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}]4.2創(chuàng)建表<column_definition>::={column_namedata_type}[COLLATE<collation_name>][[DEFAULTconstant_expression]|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][<column_constraint>][...n]4.2創(chuàng)建表<column_constraint>::=[CONSTRAINTconstraint_name]{[NULL|NOTNULL]|[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED][WITH
FILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]}|FOREIGNKEY[(column[,…n])]REFERENCESref_table[(ref_column[,…n])][NOTFORREPLICATION]|CHECK[NOTFORREPLICATION](logical_expression)}本章首頁(yè)
4.3創(chuàng)建、刪除和修改約束
約束是SQLServer提供的自動(dòng)保持資料庫(kù)完整性的一種方法。列級(jí)約束:列級(jí)約束是行定義的一部分,只能夠應(yīng)用在一列上。表級(jí)約束:表級(jí)約束的定義獨(dú)立於列的定義,可以應(yīng)用在一個(gè)表中的多列上。
4.3創(chuàng)建、刪除和修改約束4.3.1主鍵約束
主鍵能夠唯一地確定表中的每一條記錄,主鍵不能取空值。主鍵約束可以保證實(shí)體的完整性。1.通過企業(yè)管理器完成添加、刪除和修改主鍵的操作2.使用Transact-SQL語句設(shè)置主鍵約束CONSTRAINTconstraint_namePRIMARYKEY[CLUSTERED|NONCLUSTERED]
(column_name[,…n])
4.3創(chuàng)建、刪除和修改約束4.3.2唯一性約束唯一性約束用於指定一個(gè)或多個(gè)列的組合值具有唯一性,以防止在列中輸入重複的值。使用唯一性約束的字段允許為空值;一個(gè)表中可以允許有多個(gè)唯一性約束;可以把唯一性約束定義在多個(gè)字段上;唯一性約束用於強(qiáng)制在指定字段上創(chuàng)建一個(gè)唯一性索引;默認(rèn)情況下,創(chuàng)建的索引類型為非聚集索引。
4.3創(chuàng)建、刪除和修改約束1.通過企業(yè)管理器完成創(chuàng)建和修改唯一性約束的操作
2.使用Transact-SQL語句完成唯一性約束的操作CONSTRAINTconstraint_nameUNIQUE[CLUSTERED|NONCLUSTERED](column_name[,…n])
4.3創(chuàng)建、刪除和修改約束4.3.3檢查約束保證資料庫(kù)數(shù)據(jù)的完整性。一個(gè)列級(jí)檢查約束只能與限制的字段有關(guān);一個(gè)表級(jí)檢查約束只能與限制的表中字段有關(guān);一個(gè)表中可以定義多個(gè)檢查約束;每個(gè)CREATETABLE語句中每個(gè)字段只能定義一個(gè)檢查約束;在多個(gè)字段上定義檢查約束,則必須將檢查約束定義為表級(jí)約束;當(dāng)執(zhí)行INSERT語句或者UPDATE語句時(shí),檢查約束將驗(yàn)證數(shù)據(jù);檢查約束中不能包含子查詢。
4.3創(chuàng)建、刪除和修改約束1.使用企業(yè)管理器創(chuàng)建檢查約束
2.用Transact-SQL語句創(chuàng)建檢查約束。CONSTRAINTconstraint_nameCHECK[NOTFORREPLICATION]
(logical_expression)4.3創(chuàng)建、刪除和修改約束4.3.4默認(rèn)約束
每個(gè)字段只能定義一個(gè)默認(rèn)約束;如果定義的默認(rèn)值長(zhǎng)於其對(duì)應(yīng)字段的允許長(zhǎng)度,那麼輸入到表中的默認(rèn)值將被截?cái)?;不能加入到帶有IDENTITY屬性或者數(shù)據(jù)類型為timestamp的字段上;如果字段定義為用戶定義的數(shù)據(jù)類型,而且有一個(gè)默認(rèn)綁定到這個(gè)數(shù)據(jù)類型上,則不允許該字段有默認(rèn)約束。
4.3創(chuàng)建、刪除和修改約束1.使用企業(yè)管理器創(chuàng)建默認(rèn)約束
2.使用Transact-SQL語句創(chuàng)建默認(rèn)約束
4.3創(chuàng)建、刪除和修改約束4.3.5外鍵約束
外鍵約束主要用來維護(hù)兩個(gè)表之間數(shù)據(jù)的一致性。外鍵約束提供了字段參照完整性;外鍵從句中的字段數(shù)目和每個(gè)字段指定的數(shù)據(jù)類型都必須和REFERENCES從句中的字段相匹配;外鍵約束不能自動(dòng)創(chuàng)建索引,需要用戶手動(dòng)創(chuàng)建;用戶想要修改外鍵約束的數(shù)據(jù),必須有對(duì)外鍵約束所參考表的SELECT許可權(quán)或者REFERENCES許可權(quán);參考同一表中的字段時(shí),必須只使用REFERENCES子句,不能使用外鍵子句;4.3創(chuàng)建、刪除和修改約束一個(gè)表中最多可以有31個(gè)外鍵約束;在臨時(shí)表中,不能使用外鍵約束;主鍵和外鍵的數(shù)據(jù)類型必須嚴(yán)格匹配。
1.在企業(yè)管理器中添加外鍵約束
2.使用Transact-SQL語句設(shè)置外鍵約束
CONSTRAINTconstraint_nameFOREIGNKEY(column_name[,…n])REFERENCESref_table[(ref_column[,…n])]
本章首頁(yè)4.4增加、刪除和修改字段
4.4.1利用企業(yè)管理器增加、刪除和修改字段
4.4.2利用Transact-SQL語言增加、刪除和修改字段
4.4增加、刪除和修改字段ALTERTABLEtable
{[ALTERCOLUMNcolumn_name
{new_data_type[(precision[,scale])]
[COLLATE<collation_name>]
[NULL|NOTNULL]
|{ADD|DROP}ROWGUIDCOL}
]
|ADD4.4增加、刪除和修改字段
{[<column_definition>]
|column_nameAScomputed_column_expression
}[,...n]
|[WITHCHECK|WITHNOCHECK]ADD
{<table_constraint>}[,...n]
|DROP
{[CONSTRAINT]constraint_name
|COLUMNcolumn}[,...n]
|{CHECK|NOCHECK}CONSTRAINT
{ALL|constraint_name[,...n]}
|{ENABLE|DISABLE}TRIGGER
{ALL|trigger_name[,...n]}
}本章首頁(yè)4.5查看表格
4.5.1查看表格的定義
4.5.2查看表格中的數(shù)據(jù)
4.5.3查看表格與其它資料庫(kù)對(duì)象的依賴關(guān)係
4.5.4利用系統(tǒng)存儲(chǔ)過程Sp_help查看表的資訊
本章首頁(yè)5.1在企業(yè)管理器中操作表中的數(shù)據(jù)
查詢插入更新刪除本章首頁(yè)5.2使用SELECT語句查詢數(shù)據(jù)
SELECT語句的基本格式如下:SELECTselect_list[INTOnew_table]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]]
5.2使用SELECT語句查詢數(shù)據(jù)5.2.1SELECT子句SELECT[ALL|DISTINCT][TOPn[PERCENT][WITHTIES]]<select_list>
<select_list>::={*|{table_name|view_name|table_alias}.*|{column_name|expression|IDENTITYCOL|ROWGUIDCOL}[[AS]column_alias]|column_alias=expression
}[,...n]
基本格式5.2使用SELECT語句查詢數(shù)據(jù)5.2.2INTO子句[INTOnew_table]
基本格式5.2使用SELECT語句查詢數(shù)據(jù)5.2.3FROM子句
[FROM{<table_source>}[,...n]]<table_source>::=table_name[[AS]table_alias][WITH(<table_hint>[,...n])]|view_name[[AS]table_alias]
|rowset_function[[AS]table_alias]
|OPENXML|derived_table[AS]table_alias[(column_alias[,...n])]|<joined_table>5.2使用SELECT語句查詢數(shù)據(jù)<joined_table>::=<table_source><join_type><table_source>ON<search_condition>|<table_source>CROSSJOIN<table_source>|<joined_table><join_type>::=[INNER|{{LEFT|RIGHT|FULL}[OUTER]}][<join_hint>]
JOIN基本格式5.2使用SELECT語句查詢數(shù)據(jù)5.2.4WHERE子句
WHERE<search_condition>|<old_outer_join><search_condition>::={[NOT]<predicate>|(<searth_condition>)}[{AND|OR}[NOT]{<predicate>|(<searth_condition>)}]}[,...n]5.2使用SELECT語句查詢數(shù)據(jù)1.算術(shù)運(yùn)算式使用算術(shù)運(yùn)算式的一般形式為:expressionoperatorexpression
WHERE子句中允許出現(xiàn)的算術(shù)運(yùn)算符有:=(等於)、>(大於)、>=(對(duì)於等於)、<(小於)、<=(小於等於)、<>(不等於)、!>(不大於)、!<(不小於)、!=(不等於)
5.2使用SELECT語句查詢數(shù)據(jù)2.邏輯運(yùn)算式在Transact-SQL中可以使用的邏輯運(yùn)算符有三個(gè):NOT:邏輯反,對(duì)指定的布爾運(yùn)算式求反。AND:邏輯與,只有當(dāng)兩個(gè)條件都是TRUE時(shí)取值為TRUE。OR:邏輯或,當(dāng)兩個(gè)條件中任何一個(gè)條件是TRUE時(shí)取值為TRUE。
5.2使用SELECT語句查詢數(shù)據(jù)3.BETWEEN關(guān)鍵字test_expression[NOT]BETWEENbegin_expressionANDend_expression4.IN關(guān)鍵字test_expression[NOT]IN(subquery|expression[,...n])5.2使用SELECT語句查詢數(shù)據(jù)5.LIKE關(guān)鍵字match_expression[NOT]LIKEpattern[ESCAPEescape_character]
有效SQLServer通配符:%:可匹配任意類型和長(zhǎng)度的字串。_(下劃線):可匹配任何單個(gè)字元。[]:指定範(fàn)圍或集合中的任何單個(gè)字元。[^]:不屬於指定範(fàn)圍或集合的任何單個(gè)字元6.NULL關(guān)鍵字
運(yùn)算式ISNULL或運(yùn)算式ISNOTNULL
基本格式5.2使用SELECT語句查詢數(shù)據(jù)5.2.5GROUPBY子句
[GROUPBY[ALL]group_by_expression[,...n][WITH{CUBE|ROLLUP}]]5.2.6HAVING子句
[HAVING<search_condition>]基本格式5.2使用SELECT語句查詢數(shù)據(jù)5.2.7ORDERBY子句[ORDERBY{order_by_expression[ASC|DESC]}[,...n]]
5.2.8COMPUTE子句
[COMPUTE{{AVG|COUNT|MAX|MIN|STDEV|STDEVP|VAR|VARP|SUM}(expression)}[,...n][BYexpression[,...n]]
基本格式5.2使用SELECT語句查詢數(shù)據(jù)5.2.9
聯(lián)合查詢聯(lián)合查詢是指將兩個(gè)或兩個(gè)以上的SELECT語句通過UNION運(yùn)算符連接起來的查詢,
聯(lián)合查詢可以將兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中所有查詢的全部行。使用UNION組合兩個(gè)查詢的結(jié)果集的兩個(gè)基本規(guī)則是:
所有查詢中的列數(shù)和列的順序必須相同。數(shù)據(jù)類型必須相容。5.2使用SELECT語句查詢數(shù)據(jù){<queryspecification>|(<queryexpression>)}UNION[ALL]<queryspecification|(<queryexpression>)[UNION[ALL]<queryspecification|(<queryexpression>)[...n]]5.2使用SELECT語句查詢數(shù)據(jù)5.2.10嵌套查詢將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。嵌套查詢中上層的查詢塊稱為外層查詢或父查詢,下層查詢塊稱為內(nèi)層查詢或子查詢。嵌套查詢一般按照由裏向外的方法處理。在某些嵌套查詢中WHERE之後還可以使用ANY和ALL兩個(gè)關(guān)鍵字。這兩個(gè)關(guān)鍵字可以和算術(shù)運(yùn)算符在一起構(gòu)成各種查詢條件,如:>ALL表示大於子查詢中的所有值。
本章首頁(yè)5.3使用INSERT語句插入數(shù)據(jù)
INSERT[INTO]{table_name|view_name}
{[(
column_list)]{VALUES
(
{DEFAULT|NULL|expression}[,...n])
|derived_table}
本章首頁(yè)5.4使用UPDATE語句更新數(shù)據(jù)
UPDATE{table_name|view_name}[FROM{<table_source>}[,...n]SETcolumn_name={expression|DEFAULT|NULL}[,...n][WHEREsearch_condition>]
本章首頁(yè)5.5使用DELETE語句刪除數(shù)據(jù)
5.5.1DELETE語句DELETE[FROM]{table_nameWITH(<table_hint_limited>[...n])|view_name}[WHERE<search_condition>]6.1概述兩個(gè)GO之間的SQL語句作為一個(gè)批處理。在一個(gè)批處理中可以包含一條或多條Transact-SQL語句,成為一個(gè)語句組。這樣的語句組從應(yīng)用程式一次性地發(fā)送到SQLServer伺服器進(jìn)行執(zhí)行。SQLServer伺服器將批處理編譯成一個(gè)可執(zhí)行單元,稱為執(zhí)行計(jì)畫。本章首頁(yè)6.2注釋
在SQLServer中,有兩種類型的注釋字元:?jiǎn)涡凶⑨專菏褂脙蓚€(gè)連在一起的減號(hào)“--”作為注釋符;多行注釋:使用“/**/”作為注釋符。本章首頁(yè)6.3變數(shù)
6.3.1全局變數(shù)全局變數(shù)在整個(gè)SQLServer系統(tǒng)內(nèi)使用。存儲(chǔ)的通常是一些SQLServer的配置設(shè)定值和統(tǒng)計(jì)數(shù)據(jù)。在使用全局變數(shù)時(shí)應(yīng)該注意以下幾點(diǎn):全局變數(shù)是在伺服器級(jí)定義的。用戶只能使用預(yù)先定義的全局變數(shù)。引用全局變數(shù)時(shí),必須以標(biāo)記符“@@”開頭。全局變數(shù)對(duì)用戶來說是只讀的。局部變數(shù)的名稱不能與全局變數(shù)的名稱相同。6.3變數(shù)6.3.2局部變數(shù)利用局部變數(shù)還可以保存程式執(zhí)行過程中的中間數(shù)據(jù)值,保存由存儲(chǔ)過程返回的數(shù)據(jù)值等。1.局部變數(shù)的定義必須先用DECLARE命令定義後才可以使用。DECLAER{@local_variabledata_type}[…n]2.局部變數(shù)的賦值方法
SET{{@local_variable=expression}或者SELECT{@local_variable=expression}[,...n]本章首頁(yè)6.4運(yùn)算符6.4.1算術(shù)運(yùn)算符
算術(shù)運(yùn)算符包括加(+)、減(-)、乘(*)、除(/)和取模(%)
6.4.2賦值運(yùn)算符Transact-SQL中只有一個(gè)賦值運(yùn)算符,即等號(hào)(=)6.4.3位運(yùn)算符位運(yùn)算符包括按位與(&)、按位或(|)、按位異或(^)和求反(~)。位運(yùn)算符用來對(duì)整型數(shù)據(jù)或者二進(jìn)位數(shù)據(jù)(image數(shù)據(jù)類型除外)之間執(zhí)行位操作。要求在位運(yùn)算符左右兩側(cè)的運(yùn)算元不能同時(shí)是二進(jìn)位數(shù)據(jù)。
6.4運(yùn)算符6.4.4比較運(yùn)算符比較運(yùn)算符包括:等於(=)、大於(>)、大於或等於(>=)、小於(<)、小於或等於(<=)、不等於(<>或!=)、不小於(!<)、不大於(!>)。
6.4.5邏輯運(yùn)算符邏輯運(yùn)算符包括與(AND)、或(OR)和非(NOT)等運(yùn)算符。邏輯運(yùn)算返回布爾值,值為TRUE或FALSE。
6.4運(yùn)算符6.4.6字串連接運(yùn)算符
(+)6.4.7運(yùn)算符的優(yōu)先順序括弧:();乘、除、求模運(yùn)算符:*,/,%;加減運(yùn)算符:+,-;比較運(yùn)算符:=,>,<,>=,<=,<>,!=,!>,!<;位運(yùn)算符:^,&,|;邏輯運(yùn)算符:NOT;邏輯運(yùn)算符:AND;邏輯運(yùn)算符:OR。本章首頁(yè)6.5函數(shù)6.5.1系統(tǒng)函數(shù)
6.5.2字串函數(shù)6.5.3日期和時(shí)間函數(shù)6.5.4
數(shù)學(xué)函數(shù)
6.5.5
轉(zhuǎn)換函數(shù)CAST(expressionASdata_type)CONVERT(data_type[(length)],expression[,style])6.5函數(shù)6.5.6用戶自定義函數(shù)
CREATEFUNCTION函數(shù)名稱(形式參數(shù)名稱
AS數(shù)據(jù)類型)RETURNS返回?cái)?shù)據(jù)類型BEGIN函數(shù)內(nèi)容RETURN運(yùn)算式END
調(diào)用用戶自定義函數(shù)的基本語法為:變數(shù)=用戶名.函數(shù)名稱(實(shí)際參數(shù)列表)注意:在調(diào)用返回?cái)?shù)值的用戶自定義函數(shù)時(shí),一定要在函數(shù)名稱的前面加上用戶名
本章首頁(yè)6.6流程控制語句
6.6.1BEGIN…END語句
BEGIN{sql_statement|statement_block}END6.6.2IF…ELSE語句
IFBoolean_expression{sql_statement|statement_block}[ELSE{sql_statement|statement_block}]6.6流程控制語句6.6.3CASE語句簡(jiǎn)單CASE語句的語法形式為:CASEinput_expressionWHENwhen_expressionTHENresult_expression[...n][ELSEelse_result_expression]END
搜索CASE語句的語法形式為:CASEWHENBoolean_expressionTHENresult_expression[...n][ELSEelse_result_expression]END6.6流程控制語句6.6.4WHILE…CONTINUE…BREAK語句
WHILEBoolean_expression{sql_statement|statement_block}[BREAK]{sql_statement|statement_block}[CONTINUE]6.6.5GOTO語句
GOTOlabel……label:7.1概述7.1.1視圖的概念
視圖是一種資料庫(kù)對(duì)象,是從一個(gè)或者多個(gè)數(shù)據(jù)表或視圖中導(dǎo)出的虛表,視圖的結(jié)構(gòu)和數(shù)據(jù)是對(duì)數(shù)據(jù)表進(jìn)行查詢的結(jié)果。視圖被定義後便存儲(chǔ)在資料庫(kù)中,通過視圖看到的數(shù)據(jù)只是存放在基表中的數(shù)據(jù)。當(dāng)對(duì)通過視圖看到的數(shù)據(jù)進(jìn)行修改時(shí),相應(yīng)的基表的數(shù)據(jù)也會(huì)發(fā)生變化,同時(shí),若基表的數(shù)據(jù)發(fā)生變化,這種變化也會(huì)自動(dòng)地反映到視圖中。視圖可以是一個(gè)數(shù)據(jù)表的一部分,也可以是多個(gè)基表的聯(lián)合。7.1概述7.1.2視圖的優(yōu)點(diǎn)視圖可以遮罩?jǐn)?shù)據(jù)的複雜性,簡(jiǎn)化用戶對(duì)數(shù)據(jù)庫(kù)的操作。視圖可以讓不同的用戶以不同的方式看到不同或者相同的數(shù)據(jù)集??梢允褂靡晥D重新組織數(shù)據(jù)。視圖可以定制不同用戶對(duì)數(shù)據(jù)的訪問許可權(quán)。本章首頁(yè)7.2創(chuàng)建視圖
視圖的名稱只能在當(dāng)前資料庫(kù)中創(chuàng)建視圖。一個(gè)視圖中行、列的限制。如果視圖中某一列是函數(shù)、數(shù)學(xué)運(yùn)算式、常量或者來自多個(gè)表的列名相同,則必須為列定義名稱。視圖與基表的關(guān)係不能在視圖上創(chuàng)建索引,不能在規(guī)則、默認(rèn)的定義中引用視圖。7.2創(chuàng)建視圖7.2.1使用企業(yè)管理器創(chuàng)建視圖7.2.2使用Transact-SQL語句創(chuàng)建視圖CREATEVIEW[<database_name>.][<owner>.]view_name[(column[,...n])][WITH<view_attribute>[,...n]]ASselect_statement
[WITHCHECKOPTION]<view_attribute>::=
{ENCRYPTION|SCHEMABINDING|VIEW_METADATA}7.2.3使用嚮導(dǎo)創(chuàng)建視圖
本章首頁(yè)7.3查看視圖資訊7.3.1使用企業(yè)管理器查看視圖資訊
7.3.2使用系統(tǒng)存儲(chǔ)過程查看視圖資訊
sp_help資料庫(kù)對(duì)象名稱sp_helptext視圖(觸發(fā)器、存儲(chǔ)過程)sp_depends資料庫(kù)對(duì)象名稱
本章首頁(yè)7.4修改和重命名視圖7.4.1修改視圖1.使用企業(yè)管理器修改視圖2.使用Transact-SQL語句修改視圖ALTERVIEWview_name[(column[,...n])][WITHENCRYPTION]AS
select_statement
[WITHCHECKOPTION]
7.4修改和重命名視圖7.4.2重命名視圖1.使用企業(yè)管理器重命名視圖2.使用系統(tǒng)存儲(chǔ)過程重命名視圖sp_renameold_name,new_name本章首頁(yè)7.5使用視圖修改視圖中的數(shù)據(jù)時(shí)每次修改都只能影響一個(gè)基表。不能修改那些通過計(jì)算得到的字段。如果在創(chuàng)建視圖時(shí)指定了WITHCHECKOPTION選項(xiàng),那麼所有使用視圖修改資料庫(kù)資訊時(shí),必須保證修改後的數(shù)據(jù)滿足視圖定義的範(fàn)圍。執(zhí)行UPDATE、DELETE命令時(shí),所刪除與更新的數(shù)據(jù)必須包含在視圖的結(jié)果集中。如果視圖引用多個(gè)表時(shí),無法用DELETE命令刪除數(shù)據(jù),若使用UPDATE命令則應(yīng)與INSERT操作一樣,被更新的列必須屬於同一個(gè)表。
7.5使用視圖7.5.1插入數(shù)據(jù)記錄
1.使用企業(yè)管理器在視圖中插入記錄
2.使用Transact-SQL語句通過視圖插入記錄
7.5.2更新數(shù)據(jù)記錄
1.使用企業(yè)管理器在視圖中更新記錄2.使用Transact-SQL語句通過視圖更新記錄7.5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版汽車融資租賃合同示范文本(含電子簽約)3篇
- 2025年度馬戲團(tuán)專業(yè)演出設(shè)備租賃合同3篇
- 二零二五年度地?zé)豳Y源打井開發(fā)與利用合同3篇
- 二零二五版模具行業(yè)財(cái)務(wù)顧問服務(wù)合同4篇
- 2025年度城市綠化工程苗木及配套設(shè)施采購(gòu)年度合同3篇
- 二零二五年度民間借款合同(含金融消費(fèi)者權(quán)益保護(hù))
- 二零二五年度電子信息技術(shù)ICP證年審服務(wù)合同4篇
- 2025年保險(xiǎn)科技的市場(chǎng)潛力
- 2025年度綠色農(nóng)業(yè)貸款合同4篇
- 課題申報(bào)參考:美對(duì)華VC脫鉤對(duì)中國(guó)企業(yè)關(guān)鍵核心技術(shù)突破的沖擊及間接掛鉤策略研究-共同所有權(quán)視角
- 暴發(fā)性心肌炎查房
- 口腔醫(yī)學(xué)中的人工智能應(yīng)用培訓(xùn)課件
- 工程質(zhì)保金返還審批單
- 【可行性報(bào)告】2023年電動(dòng)自行車項(xiàng)目可行性研究分析報(bào)告
- 五月天歌詞全集
- 商品退換貨申請(qǐng)表模板
- 實(shí)習(xí)單位鑒定表(模板)
- 機(jī)械制造技術(shù)-成都工業(yè)學(xué)院中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 數(shù)字媒體應(yīng)用技術(shù)專業(yè)調(diào)研方案
- 2023年常州市新課結(jié)束考試九年級(jí)數(shù)學(xué)試卷(含答案)
- 正常分娩 分娩機(jī)制 助產(chǎn)學(xué)課件
評(píng)論
0/150
提交評(píng)論