版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
SQLServer2000概述
1.1SQLServer2000簡介
SQLServer是使用客戶機(jī)/服務(wù)器(C/S)體系結(jié)構(gòu)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。1988年推出了第一個(gè)OS/2版本。
1992年,SQLServer移植到NT上后,Microsoft成了這個(gè)項(xiàng)目的主導(dǎo)者。1994年以后,Microsoft專注于開發(fā)、推廣SQLServer的WindowsNT版本1996年,Microsoft公司推出了SQLServer6.5版本
1998年,推出了SQLServer7.0版本2000年推出了SQLServer2000。
1.1SQLServer2000簡介SQLServer2000常見的版本有:企業(yè)版(EnterpriseEdition)、標(biāo)準(zhǔn)版(StandardEdition)、個(gè)人版(PersonalEdition)和開發(fā)人員版(DeveloperEdition)。企業(yè)版:一般作為數(shù)據(jù)庫服務(wù)器使用。標(biāo)準(zhǔn)版:一般用于小型的工作組或部門。個(gè)人版:主要適用于移動(dòng)用戶。開發(fā)人員版:是一個(gè)適用于應(yīng)用程序開發(fā)的版本。
本章首頁1.2SQLServer2000特點(diǎn)
1.SQLServer的主要特點(diǎn)
真正的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)。圖形化用戶界面。豐富的編程接口工具。SQLServer與WindowsNT完全集成。具有很好的伸縮性。對(duì)Web技術(shù)的支持。SQLServer提供數(shù)據(jù)倉庫功能。
1.2SQLServer2000特點(diǎn)2.SQLServer2000的新特性多個(gè)SQLServer實(shí)例:SQLServer2000支持在同一臺(tái)計(jì)算機(jī)上運(yùn)行多個(gè)關(guān)系數(shù)據(jù)庫引擎的實(shí)例。
引入了三種新的數(shù)據(jù)類型。
支持XML(ExtensiveMarkupLanguage,擴(kuò)展標(biāo)記語言)。
支持用戶自定義函數(shù)。
支持強(qiáng)大的基于Web的分析。
支持OLEDB和多種查詢。
支持分布式的分區(qū)視圖。
本章首頁1.3SQLServer2000的安裝
1.3.1SQLServer2000的環(huán)境需求
1.硬件需求
計(jì)算機(jī):Intel及其兼容計(jì)算機(jī),Pentium166Mz或者更高處理器或DECAlpha及其兼容系統(tǒng)。內(nèi)存(RAM):企業(yè)版最少64MB內(nèi)存,其它版本最少需要32MB內(nèi)存,建議使用更多的內(nèi)存。硬盤空間:對(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本章首頁1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫
1.4.1SQLServer2000系統(tǒng)數(shù)據(jù)庫簡介
SQLServer2000安裝成功后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建6個(gè)系統(tǒng)數(shù)據(jù)庫。這些系統(tǒng)數(shù)據(jù)庫的文件存儲(chǔ)在MicrosoftSQLServer默認(rèn)安裝目錄下的MSSQL子目錄的Data文件夾中,數(shù)據(jù)庫文件的擴(kuò)展名為
.mdf,數(shù)據(jù)庫日志文件的擴(kuò)展名為
.ldf。
1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫Master數(shù)據(jù)庫:記錄了SQLServer系統(tǒng)的所有系統(tǒng)信息。這些系統(tǒng)信息包括所有的登錄信息、系統(tǒng)設(shè)置信息、SQLServer的初始化信息和其它系統(tǒng)數(shù)據(jù)庫及用戶數(shù)據(jù)庫的相關(guān)信息。
Model數(shù)據(jù)庫:是所有用戶數(shù)據(jù)庫和Tempdb數(shù)據(jù)庫的模板數(shù)據(jù)庫。它含有Master數(shù)據(jù)庫的所有系統(tǒng)表子集,這些系統(tǒng)數(shù)據(jù)庫是每個(gè)用戶定義數(shù)據(jù)庫時(shí)都需要的。
1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫Msdb數(shù)據(jù)庫:是代理服務(wù)數(shù)據(jù)庫。
Tempdb數(shù)據(jù)庫:是一個(gè)臨時(shí)數(shù)據(jù)庫。Tempdb數(shù)據(jù)庫由整個(gè)系統(tǒng)的所有數(shù)據(jù)庫使用。SQLServer每次啟動(dòng)時(shí),tempdb數(shù)據(jù)庫被重新建立。當(dāng)用戶與SQLServer斷開連接時(shí),其臨時(shí)表和存儲(chǔ)過程被自動(dòng)刪除。
Pubs和Northwind數(shù)據(jù)庫:它們是SQLServer自帶的兩個(gè)實(shí)例數(shù)據(jù)庫。1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫1.4.2SQLServer2000系統(tǒng)表簡介Sysobjects表。SQLServer的主系統(tǒng)表,出現(xiàn)在每個(gè)數(shù)據(jù)庫中。它對(duì)每個(gè)數(shù)據(jù)庫對(duì)象含有一行記錄。Syscolumns表。出現(xiàn)在master數(shù)據(jù)庫和每個(gè)用戶自定義的數(shù)據(jù)庫中,它對(duì)基表或者視圖的每個(gè)列和存儲(chǔ)過程中的每個(gè)參數(shù)含有一行記錄。Sysindexes表。出現(xiàn)在master數(shù)據(jù)庫和每個(gè)用戶自定義的數(shù)據(jù)庫中,它對(duì)每個(gè)索引和沒有聚簇索引的每個(gè)表含有一行記錄,它還對(duì)包括文本/圖像數(shù)據(jù)的每個(gè)表含有一行記錄。1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫Sysusers表。出現(xiàn)在master數(shù)據(jù)庫和每個(gè)用戶自定義的數(shù)據(jù)庫中,它對(duì)整個(gè)數(shù)據(jù)庫中的每個(gè)WindowsNT用戶、WindowsNT用戶組、SQLServer用戶或者SQLServer角色含有一行記錄。Sysdatabases表。它對(duì)SQLServer系統(tǒng)上的每個(gè)系統(tǒng)數(shù)據(jù)庫和用戶自定義的數(shù)據(jù)庫含有一行記錄,只出現(xiàn)在master數(shù)據(jù)庫中。Sysdepends表。它對(duì)表、視圖和存儲(chǔ)過程之間的每個(gè)依賴關(guān)系含有一行記錄,出現(xiàn)在master數(shù)據(jù)庫和每個(gè)用戶自定義的數(shù)據(jù)庫中。1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫注意:如果使用DDL語句的INSERT、UPDATE和DELETE語句來修改系統(tǒng)表的信息,對(duì)整個(gè)系統(tǒng)是非常危險(xiǎn)的,應(yīng)該使用系統(tǒng)存儲(chǔ)過程來代替。
1.4SQLServer2000的系統(tǒng)數(shù)據(jù)庫1.4.3SQLServer2000系統(tǒng)存儲(chǔ)過程簡介系統(tǒng)存儲(chǔ)過程是由SQLServer2000系統(tǒng)自動(dòng)創(chuàng)建的存儲(chǔ)過程。系統(tǒng)存儲(chǔ)過程創(chuàng)建并存放于系統(tǒng)數(shù)據(jù)庫master中,并且名稱以sp_或者xp_開頭??梢詮娜魏螖?shù)據(jù)庫中執(zhí)行系統(tǒng)存儲(chǔ)過程。
本章首頁2.1概述
為了管理SQLServer2000的服務(wù)器和客戶機(jī),使用SQLServer2000開發(fā)數(shù)據(jù)庫和應(yīng)用程序,SQLServer2000提供了一套常用的管理工具和實(shí)用程序。主要的管理工具和實(shí)用程序有以下幾個(gè):
服務(wù)管理器;企業(yè)管理器;查詢分析器;服務(wù)器網(wǎng)絡(luò)實(shí)用工具;客戶端網(wǎng)絡(luò)實(shí)用工具;導(dǎo)入和導(dǎo)出數(shù)據(jù);聯(lián)機(jī)幫助文檔;
本章首頁2.2SQLServer服務(wù)管理器
SQLServer服務(wù)管理器(ServiceManager)是在服務(wù)器端實(shí)際工作時(shí)最有用的實(shí)用程序。SQLServer服務(wù)管理器的主要作用是用來啟動(dòng)數(shù)據(jù)庫服務(wù)器的實(shí)時(shí)服務(wù)、暫停和停止正在運(yùn)行的服務(wù),或在暫停服務(wù)后繼續(xù)服務(wù)。
本章首頁2.3企業(yè)管理器企業(yè)管理器(EnterpriseManager)是SQLServer中最重要的一個(gè)管理工具。用戶和系統(tǒng)管理員可以使用它來管理網(wǎng)絡(luò)、計(jì)算機(jī)、服務(wù)和其它系統(tǒng)組件。企業(yè)管理器不僅能夠配置系統(tǒng)環(huán)境和管理SQLServer,而且由于它能夠以層疊列表的形式來顯示所有的SQLServer對(duì)象,因而所有SQLServer對(duì)象的建立與管理都可以通過它來完成。
2.3企業(yè)管理器
服務(wù)器的注冊:只有經(jīng)過注冊的服務(wù)器才能被SQLServer管理工具識(shí)別。第一次啟動(dòng)SQLServer2000的服務(wù)時(shí),SQLServer2000會(huì)自動(dòng)完成本地默認(rèn)實(shí)例數(shù)據(jù)庫的注冊。但如果要實(shí)現(xiàn)非本機(jī)數(shù)據(jù)庫的管理,必須手動(dòng)注冊該服務(wù)器。本章首頁2.4查詢分析器
SQLServer2000的查詢分析器(QueryAnalyzer)可以使用戶交互式地輸入和執(zhí)行各種Transact-SQL語句,并且迅速地查看這些語句的執(zhí)行結(jié)果,來完成對(duì)數(shù)據(jù)庫中的數(shù)據(jù)的分析和處理。
2.4.1查詢窗口和結(jié)果顯示窗口
2.4.2對(duì)象瀏覽器窗口
2.4.3打開表窗口
本章首頁2.5服務(wù)器網(wǎng)絡(luò)實(shí)用工具客戶端應(yīng)用程序與數(shù)據(jù)庫服務(wù)器的通信位于同一臺(tái)計(jì)算機(jī):SQLServer2000利用Windows進(jìn)程間通信組件,如共享內(nèi)存和命名管道。不在同一臺(tái)計(jì)算機(jī):利用網(wǎng)絡(luò)通信組件。API協(xié)議:SQLServer2000做了簡化,只需要提供服務(wù)器計(jì)算機(jī)的網(wǎng)絡(luò)名稱。在所有通信組件中,網(wǎng)絡(luò)庫(Net-Library)是最主要的。2.5服務(wù)器網(wǎng)絡(luò)實(shí)用工具
服務(wù)器網(wǎng)絡(luò)實(shí)用工具(ServerNetworkUtility)用來配置本計(jì)算機(jī)作為服務(wù)器時(shí)允許使用的連接協(xié)議,還可以在此設(shè)置相關(guān)參數(shù)等。
本章首頁2.6客戶端網(wǎng)絡(luò)實(shí)用工具
客戶端網(wǎng)絡(luò)實(shí)用工具(ClientNetworkUtility)用來配置客戶端的網(wǎng)絡(luò)連接,管理和測定客戶端的網(wǎng)絡(luò)庫等。別名是ODBC或查詢分析器識(shí)別服務(wù)器時(shí)使用的名字,方便用戶使用。在用命名管道配置時(shí),如果服務(wù)器在本機(jī),注意用“.”表示。注冊服務(wù)器是進(jìn)行服務(wù)器集中管理和實(shí)現(xiàn)分布式查詢的前提。注冊成功需要:服務(wù)器端和客戶端必須配置相同的網(wǎng)絡(luò)庫客戶端的配置信息必須正確無誤本章首頁2.7導(dǎo)入和導(dǎo)出數(shù)據(jù)
導(dǎo)入和導(dǎo)出數(shù)據(jù)(InputandExportData)采用DTS導(dǎo)入/導(dǎo)出向?qū)硗瓿?。此向?qū)О怂械腄TS(DataTransformationServices)工具,提供了在OLEDB數(shù)據(jù)源之間復(fù)制數(shù)據(jù)的最簡捷的方法。
本章首頁3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)
數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu)兩種。
數(shù)據(jù)庫的邏輯存儲(chǔ)結(jié)構(gòu)指的是數(shù)據(jù)庫是由哪些性質(zhì)的信息所組成。實(shí)際上,SQLServer的數(shù)據(jù)庫是由諸如表、視圖、索引等各種不同的數(shù)據(jù)庫對(duì)象所組成。數(shù)據(jù)庫的物理存儲(chǔ)結(jié)構(gòu)是討論數(shù)據(jù)庫文件是如何在磁盤上存儲(chǔ)的,數(shù)據(jù)庫在磁盤上是以文件為單位存儲(chǔ)的,由數(shù)據(jù)庫文件和事務(wù)日志文件組成,一個(gè)數(shù)據(jù)庫至少應(yīng)該包含一個(gè)數(shù)據(jù)庫文件和一個(gè)事務(wù)日志文件。
3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)3.1.1數(shù)據(jù)庫文件
1.主數(shù)據(jù)庫文件(PrimaryDatabaseFile)
一個(gè)數(shù)據(jù)庫可以有一個(gè)或多個(gè)數(shù)據(jù)庫文件,一個(gè)數(shù)據(jù)庫文件只能屬于一個(gè)數(shù)據(jù)庫。當(dāng)有多個(gè)數(shù)據(jù)庫文件時(shí),有一個(gè)文件被定義為主數(shù)據(jù)庫文件(簡稱為主文件),其擴(kuò)展名為mdf。3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)主數(shù)據(jù)庫文件用來存儲(chǔ)數(shù)據(jù)庫的啟動(dòng)信息以及部分或者全部數(shù)據(jù),是所有數(shù)據(jù)庫文件的起點(diǎn),包含指向其它數(shù)據(jù)庫文件的指針。一個(gè)數(shù)據(jù)庫只能有一個(gè)主數(shù)據(jù)庫文件。
3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)2.輔助數(shù)據(jù)庫文件(SecondaryDatabaseFile)
用于存儲(chǔ)主數(shù)據(jù)庫文件中未存儲(chǔ)的剩余數(shù)據(jù)和數(shù)據(jù)庫對(duì)象,一個(gè)數(shù)據(jù)庫可以沒有輔助數(shù)據(jù)庫文件,但也可以同時(shí)擁有多個(gè)輔助數(shù)據(jù)庫文件。
輔助數(shù)據(jù)庫文件的擴(kuò)展名為ndf(簡稱為輔助文件)。
3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)3.事務(wù)日志文件
存儲(chǔ)數(shù)據(jù)庫的更新情況等事務(wù)日志信息,當(dāng)數(shù)據(jù)庫損壞時(shí),管理員使用事務(wù)日志恢復(fù)數(shù)據(jù)庫。每一個(gè)數(shù)據(jù)庫至少必須擁有一個(gè)事務(wù)日志文件,而且允許擁有多個(gè)日志文件。事務(wù)日志文件的擴(kuò)展名為ldf,日志文件的大小至少是512KB。
SQLServer事務(wù)日志采用提前寫入的方式。3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)注意:SQLServer2000中的數(shù)據(jù)和事務(wù)日志文件不能存放在壓縮文件系統(tǒng)或象共享網(wǎng)絡(luò)目錄等遠(yuǎn)程的網(wǎng)絡(luò)驅(qū)動(dòng)器上。
SQLServer2000的文件擁有兩個(gè)名稱,即邏輯文件名和物理文件名。當(dāng)使用Transact-SQL命令語句訪問某一個(gè)文件時(shí),必須使用該文件的邏輯名。物理文件名是文件實(shí)際存儲(chǔ)在磁盤上的文件名,而且可包含完整的磁盤目錄路徑。
3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)3.1.2數(shù)據(jù)庫文件組
利用文件組可以使服務(wù)器的性能得到提高。
主文件組中包含了所有的系統(tǒng)表,當(dāng)建立數(shù)據(jù)庫時(shí),主文件組包括主數(shù)據(jù)庫文件和未指定組的其他文件。用戶定義文件組中可以指定一個(gè)缺省文件組,那么在創(chuàng)建數(shù)據(jù)庫對(duì)象時(shí)如果沒有指定將其放在哪一個(gè)文件組中,就會(huì)將它放在缺省文件組中。如果沒有指定缺省文件組,則主文件組為缺省文件組。3.1數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)一個(gè)文件只能存在于一個(gè)文件組中,一個(gè)文件組也只能被一個(gè)數(shù)據(jù)庫使用;日志文件是獨(dú)立的,它不能作為任何文件組的成員。
本章首頁3.2創(chuàng)建和刪除數(shù)據(jù)庫
3.2.1創(chuàng)建數(shù)據(jù)庫
創(chuàng)建數(shù)據(jù)庫需要一定許可,在默認(rèn)情況下,只有系統(tǒng)管理員和數(shù)據(jù)庫擁有者可以創(chuàng)建數(shù)據(jù)庫。數(shù)據(jù)庫被創(chuàng)建后,創(chuàng)建數(shù)據(jù)庫的用戶自動(dòng)成為該數(shù)據(jù)庫的所有者。
創(chuàng)建數(shù)據(jù)庫的過程實(shí)際上就是為數(shù)據(jù)庫設(shè)計(jì)名稱、設(shè)計(jì)所占用的存儲(chǔ)空間和存放文件位置的過程等。3.2創(chuàng)建和刪除數(shù)據(jù)庫1.使用向?qū)?chuàng)建數(shù)據(jù)庫
2.使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫
3.使用Transact-SQL語言創(chuàng)建數(shù)據(jù)庫3.2創(chuàng)建和刪除數(shù)據(jù)庫說明:在Transact-SQL語言的命令格式中,用[]括起來的內(nèi)容表示是可選的;[,…n]表示重復(fù)前面的內(nèi)容;用<>括起來表示在實(shí)際編寫語句時(shí),用相應(yīng)的內(nèi)容替代;用{}括起來表示是必選的;類似A|B的格式,表示A和B只能選擇一個(gè),不能同時(shí)都選。
3.2創(chuàng)建和刪除數(shù)據(jù)庫CREATEDATABASEdatabase_name[ON[PRIMARY][<filespec>[,…n][,<filegroupspec>[,…n]]][LOGON{<filespec>[,…n]}][FORLOAD|FORATTACH]
3.2創(chuàng)建和刪除數(shù)據(jù)庫<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)建和刪除數(shù)據(jù)庫database_name:新數(shù)據(jù)庫的名稱。數(shù)據(jù)庫名稱在服務(wù)器中必須唯一,最長為128個(gè)字符,并且要符合標(biāo)識(shí)符的命名規(guī)則。每個(gè)服務(wù)器管理的數(shù)據(jù)庫最多為32767個(gè)。ON:指定存放數(shù)據(jù)庫的數(shù)據(jù)文件信息。<filespec>列表用于定義主文件組的數(shù)據(jù)文件,<filegroup>列表用于定義用戶文件組及其中的文件。PRIMARY:用于指定主文件組中的文件。主文件組的第一個(gè)由<filespec>指定的文件是主文件。如果不指定PRIMARY關(guān)鍵字,則在命令中列出的第一個(gè)文件將被默認(rèn)為主文件。3.2創(chuàng)建和刪除數(shù)據(jù)庫LOGON:指明事務(wù)日志文件的明確定義。如果沒有本選項(xiàng),則系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè)文件名前綴與數(shù)據(jù)庫名相同,容量為所有數(shù)據(jù)庫文件大小1/4的事務(wù)日志文件。FORLOAD:表示計(jì)劃將備份直接裝入新建的數(shù)據(jù)庫,主要是為了和過去的SQLServer版本兼容。FORATTACH:表示在一組已經(jīng)存在的操作系統(tǒng)文件中建立一個(gè)新的數(shù)據(jù)庫。NAME:指定數(shù)據(jù)庫的邏輯名稱。FILENAME:指定數(shù)據(jù)庫所在文件的操作系統(tǒng)文件名稱和路徑,該操作系統(tǒng)文件名和NAME的邏輯名稱一一對(duì)應(yīng)。3.2創(chuàng)建和刪除數(shù)據(jù)庫SIZE:指定數(shù)據(jù)庫的初始容量大小。如果沒有指定主文件的大小,則SQLServer默認(rèn)其與模板數(shù)據(jù)庫中的主文件大小一致,其它數(shù)據(jù)庫文件和事務(wù)日志文件則默認(rèn)為1MB。指定大小的數(shù)字size可以使用KB、MB、GB和TB后綴,默認(rèn)的后綴為MB。Size中不能使用小數(shù),其最小值為512KB,默認(rèn)值為1MB。主文件的size不能小于模板數(shù)據(jù)庫中的主文件。MAXSIZE:指定操作系統(tǒng)文件可以增長到的最大尺寸。如果沒有指定,則文件可以不斷增長直到充滿磁盤。3.2創(chuàng)建和刪除數(shù)據(jù)庫FILEGROWTH:指定文件每次增加容量的大小,當(dāng)指定數(shù)據(jù)為0時(shí),表示文件不增長。增加量可以確定為以KB、MB作后綴的字節(jié)數(shù)或以%作后綴的被增加容量文件的百分比來表示。默認(rèn)后綴為MB。如果沒有指定FILEGROWTH,則默認(rèn)值為10%,每次擴(kuò)容的最小值為64KB。
3.2創(chuàng)建和刪除數(shù)據(jù)庫例3-2-1:使用CREATEDATABASE創(chuàng)建一個(gè)student數(shù)據(jù)庫,所有參數(shù)均取默認(rèn)值。
例3-2-2:創(chuàng)建一個(gè)Student1數(shù)據(jù)庫,該數(shù)據(jù)庫的主文件邏輯名稱為Student1_data,物理文件名為Student1.mdf,初始大小為10MB,最大尺寸為無限大,增長速度為10%;數(shù)據(jù)庫的日志文件邏輯名稱為Student1_log,物理文件名為Student1.ldf,初始大小為1MB,最大尺寸為5MB,增長速度為1MB。
3.2創(chuàng)建和刪除數(shù)據(jù)庫例3-2-3:創(chuàng)建一個(gè)指定多個(gè)數(shù)據(jù)文件和日志文件的數(shù)據(jù)庫。該數(shù)據(jù)庫名稱為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,增長速度分別為10%和1MB。事務(wù)日志文件的邏輯名為studentlog1和studentlog2,物理文件名為studentlog1.ldf和studentlog2.ldf,最大尺寸均為50MB,文件增長速度為1MB。
3.2創(chuàng)建和刪除數(shù)據(jù)庫3.2.2刪除數(shù)據(jù)庫
1.利用企業(yè)管理器刪除數(shù)據(jù)庫
2.利用Drop語句刪除數(shù)據(jù)庫
Dropdatabasedatabase_name[,…n]說明:只有處于正常狀態(tài)下的數(shù)據(jù)庫,才能使用DROP語句刪除。當(dāng)數(shù)據(jù)庫處于以下狀態(tài)時(shí)不能被刪除:數(shù)據(jù)庫正在使用;數(shù)據(jù)庫正在恢復(fù);數(shù)據(jù)庫包含用于復(fù)制的已經(jīng)出版的對(duì)象。
本章首頁3.3修改數(shù)據(jù)庫
3.3.1數(shù)據(jù)庫更名
在重命名數(shù)據(jù)庫之前,應(yīng)該確保沒有用戶使用該數(shù)據(jù)庫,而且數(shù)據(jù)庫應(yīng)該設(shè)置為“單用戶”模式。系統(tǒng)存儲(chǔ)過程sp_renamedb語法如下:sp_renamedb[@dbname=]'old_name',[@newname=]'new_name'3.3修改數(shù)據(jù)庫3.3.2利用企業(yè)管理器修改數(shù)據(jù)庫屬性
限制訪問包含兩個(gè)選項(xiàng):“db_owner,dbcreator或sysadmin的成員”選項(xiàng)表示只有數(shù)據(jù)庫的所有者、數(shù)據(jù)庫創(chuàng)建者和系統(tǒng)管理員才有權(quán)使用數(shù)據(jù)庫;“單用戶”
選項(xiàng)表示數(shù)據(jù)庫在同一時(shí)間只能供一個(gè)用戶使用。ANSINULL默認(rèn)設(shè)置:允許在數(shù)據(jù)庫表的列中輸入空(NULL)值。遞歸觸發(fā)器:指定是否允許觸發(fā)器遞歸調(diào)用。自動(dòng)更新統(tǒng)計(jì)信息:允許使用SELECTINTO或BCP、WRITETEXT、UPDATETEXT命令向表中大量插入數(shù)據(jù)。在開發(fā)數(shù)據(jù)庫時(shí)常常將此選項(xiàng)設(shè)置為真。3.3修改數(shù)據(jù)庫殘缺頁檢測:允許自動(dòng)檢測有損壞的頁。頁是數(shù)據(jù)庫內(nèi)容的基本存儲(chǔ)單位,每個(gè)頁的大小為8KB。由于SQLServer對(duì)頁的讀寫單位是大小為512字節(jié)的扇區(qū),當(dāng)每個(gè)頁的第一個(gè)扇區(qū)被成功寫入后,SQLServer就認(rèn)為此頁已經(jīng)被成功寫入。因此,如果寫完第一個(gè)扇區(qū)后發(fā)生突發(fā)事件,導(dǎo)致寫入中斷,就會(huì)產(chǎn)生有損壞的頁,需要通知備份來恢復(fù)數(shù)據(jù)庫。自動(dòng)關(guān)閉:當(dāng)數(shù)據(jù)庫中無用戶時(shí),自動(dòng)關(guān)閉該數(shù)據(jù)庫,并將所占用的資源交還給操作系統(tǒng)。對(duì)那些不間斷使用的數(shù)據(jù)庫不要使用此選項(xiàng)。3.3修改數(shù)據(jù)庫自動(dòng)收縮:允許定期對(duì)數(shù)據(jù)庫進(jìn)行檢查,當(dāng)數(shù)據(jù)庫文件或日志文件中未用空間超過其大小的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ì)信息。使用被引用的標(biāo)識(shí)符:標(biāo)識(shí)符必須用雙引號(hào)括起來,且可以不遵循Transact-SQL命名標(biāo)準(zhǔn)。
3.3修改數(shù)據(jù)庫3.3.3使用Transact-SQL語言修改數(shù)據(jù)庫
只有數(shù)據(jù)庫管理員或具有CREATEDATABASE權(quán)限的數(shù)據(jù)庫所有者才有權(quán)執(zhí)行該語句。ALTERDATABASE語句的語法格式如下:3.3修改數(shù)據(jù)庫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修改數(shù)據(jù)庫addfile<filespec>[,…n][tofilegroupfilegroupname]:表示向指定的文件組中添加新的數(shù)據(jù)文件。addlogfile<filespec>[,…n]:增加新的日志文件。removefilelogical_file_name:刪除指定的操作系統(tǒng)文件。removefilegroupfilegroup_name:刪除指定的文件組。modifyfile<filespec>:修改某個(gè)操作系統(tǒng)文件。3.3修改數(shù)據(jù)庫modifyname=new_databasename:重命名數(shù)據(jù)庫。addfilegroupfilegroup_name:增加一個(gè)文件組。modifyfilegroupfilegroup_name:修改某個(gè)指定文件組的屬性。
3.3修改數(shù)據(jù)庫3.3.4縮小數(shù)據(jù)庫
1.使用企業(yè)管理器可以縮小數(shù)據(jù)庫。
2.使用Transact-SQL語言縮小數(shù)據(jù)庫。
(1)使用DBCCSHRINKDATABASE命令收縮指定數(shù)據(jù)庫中的數(shù)據(jù)文件。
DBCCSHRINKDATABASE(database_name[,target_percent][,{NOTRUNCATE|TRUNCATEONLY}])3.3修改數(shù)據(jù)庫database_name:要收縮的數(shù)據(jù)庫名稱。Target_percent:當(dāng)數(shù)據(jù)庫收縮后,數(shù)據(jù)庫文件中剩余可用空間的百分比。
NOTRUNCATE:被釋放的文件空間依然保持在數(shù)據(jù)庫文件中。如果未指定,將所釋放的文件空間被操作系統(tǒng)回收。TRUNCATEONLY:將數(shù)據(jù)文件中未使用的空間釋放給操作系統(tǒng),并將文件收縮到上一次所分配的大小。使用
TRUNCATEONLY時(shí),將忽略
target_percent的限制。
3.3修改數(shù)據(jù)庫(2)使用DBCCSHRINKFILE命令收縮數(shù)據(jù)庫的指定數(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è)字節(jié)(2)Smallint
:2個(gè)字節(jié)(3)Tinyint:1個(gè)字節(jié)
4.1數(shù)據(jù)類型2.浮點(diǎn)數(shù)據(jù)類型:用于存儲(chǔ)十進(jìn)制小數(shù),采用只入不舍的方式
(1)Real:4個(gè)字節(jié)的,最大7位精確位數(shù)。(2)Float:可以精確到第15位小數(shù),默認(rèn)占用8個(gè)字節(jié)的存儲(chǔ)空間。Float數(shù)據(jù)類型也可以寫為float(n)的形式,n為1~15之間的整數(shù)值。當(dāng)n取1~7時(shí),系統(tǒng)用4個(gè)字節(jié)存儲(chǔ)它;當(dāng)n取8~15時(shí),用8個(gè)字節(jié)存儲(chǔ)它。4.1數(shù)據(jù)類型(3)Decimal和numeric:可以提供小數(shù)所需要的實(shí)際存儲(chǔ)空間,可以用2~17個(gè)字節(jié)來存儲(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:占用1個(gè)字節(jié)。其定義形式為:char(n)n的取值為1~8000。默認(rèn)n的值為1。4.1數(shù)據(jù)類型(2)Varchar:可以存儲(chǔ)長達(dá)8000個(gè)字符的可變長度字符串,和char類型不同varchar類型根據(jù)輸入數(shù)據(jù)的實(shí)際長度而變化。其定義形式為:varchar(n)(3)Nchar:采用Unicode(統(tǒng)一字符編碼標(biāo)準(zhǔn))字符集每個(gè)Unicode字符用兩個(gè)字節(jié)為一個(gè)存儲(chǔ)單位。其定義形式為:nchar(n)(4)Nvarchar:使用Unicode字符集的Varchar數(shù)據(jù)類型。其定義形式為:nvarchar(n)4.1數(shù)據(jù)類型4.日期和時(shí)間數(shù)據(jù)類型(1)Datetime:占用8個(gè)字節(jié)。用于存儲(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í)間單位間的分隔符。(2)Smalldatetime:存儲(chǔ)從1900年1月1日~2079年6月6日內(nèi)的日期。4個(gè)字節(jié)。
4.1數(shù)據(jù)類型5.文本和圖形數(shù)據(jù)類型(1)Text:容量可以在1~231-1個(gè)字節(jié)。在定義Text數(shù)據(jù)類型時(shí),不需要指定數(shù)據(jù)長度,SQLServer會(huì)根據(jù)數(shù)據(jù)的長度自動(dòng)為其分配空間。(2)Ntext:采用unicode標(biāo)準(zhǔn)字符集,用于存儲(chǔ)大容量文本數(shù)據(jù)。其理論上的容量為230-1(1,073,741,823)個(gè)字節(jié)。(3)Image:用于存儲(chǔ)照片、目錄圖片或者圖畫,其理論容量為231-1(2,147,483,647)個(gè)字節(jié)。
4.1數(shù)據(jù)類型6.貨幣數(shù)據(jù)類型(1)Money:用于存儲(chǔ)貨幣值,數(shù)值以一個(gè)正數(shù)部分和一個(gè)小數(shù)部分存儲(chǔ)在兩個(gè)4字節(jié)的整型值中,存儲(chǔ)范圍為-922337213685477.5808~922337213685477.5808,精度為貨幣單位的萬分之一。(2)Smallmoney:其存儲(chǔ)范圍為-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è)字節(jié)存放。如果有9~16個(gè)bit列時(shí),用2個(gè)字節(jié)存放。在輸入0以外的其它值時(shí),系統(tǒng)均把它們當(dāng)1看待。4.1數(shù)據(jù)類型8.二進(jìn)制數(shù)據(jù)類型(1)Binary:其定義形式為binary(n),數(shù)據(jù)的存儲(chǔ)長度是固定的,即n+4個(gè)字節(jié)。二進(jìn)制數(shù)據(jù)類型的最大長度(即n的最大值)為8000,常用于存儲(chǔ)圖像等數(shù)據(jù)。(2)Varbinary:其定義形式為varbinary(n),數(shù)據(jù)的存儲(chǔ)長度是變化的,它為實(shí)際所輸入數(shù)據(jù)的長度加上4字節(jié)。在輸入二進(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í)間。它提供數(shù)據(jù)庫范圍內(nèi)的唯一值。(2)Uniqueidentifier:也稱作唯一標(biāo)識(shí)符數(shù)據(jù)類型。Uniqueidentifier用于存儲(chǔ)一個(gè)16字節(jié)長的二進(jìn)制數(shù)據(jù)類型,它是SQLServer根據(jù)計(jì)算機(jī)網(wǎng)絡(luò)適配器地址和CPU時(shí)鐘產(chǎn)生的全局唯一標(biāo)識(shí)符代碼(GloballyUniqueIdentifier,簡寫為GUID)。
4.1數(shù)據(jù)類型10.新增數(shù)據(jù)類型(1)Bigint:占用8個(gè)字節(jié)。(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’
本章首頁4.2創(chuàng)建表
表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對(duì)象,用來存儲(chǔ)各種各樣的信息。在SQLServer2000中,一個(gè)數(shù)據(jù)庫中最多可以創(chuàng)建200萬個(gè)表,用戶創(chuàng)建數(shù)據(jù)庫表時(shí),最多可以定義1024列。在同一數(shù)據(jù)庫的不同表中,可以有相同的字段,但在同一個(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ù):精度是列的總長度,包括整數(shù)部分和小數(shù)部分的長度之和,但不包括小數(shù)點(diǎn);小數(shù)位數(shù)指定小數(shù)點(diǎn)后面的長度。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:指定列是否使用全局唯一標(biāo)識(shí)符。公式:用于指定計(jì)算列的列值表達(dá)式。排序規(guī)則:指定列的排序規(guī)則。說明:在數(shù)據(jù)庫中表名必須是唯一的,但是如果為表指定了不同的用戶,就可以創(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)}本章首頁
4.3創(chuàng)建、刪除和修改約束
約束是SQLServer提供的自動(dòng)保持?jǐn)?shù)據(jù)庫完整性的一種方法。列級(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è)列的組合值具有唯一性,以防止在列中輸入重復(fù)的值。使用唯一性約束的字段允許為空值;一個(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檢查約束保證數(shù)據(jù)庫數(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)值長于其對(duì)應(yīng)字段的允許長度,那么輸入到表中的默認(rèn)值將被截?cái)啵徊荒芗尤氲綆в蠭DENTITY屬性或者數(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])]
本章首頁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]}
}本章首頁4.5查看表格
4.5.1查看表格的定義
4.5.2查看表格中的數(shù)據(jù)
4.5.3查看表格與其它數(shù)據(jù)庫對(duì)象的依賴關(guān)系
4.5.4利用系統(tǒng)存儲(chǔ)過程Sp_help查看表的信息
本章首頁5.1在企業(yè)管理器中操作表中的數(shù)據(jù)
查詢插入更新刪除本章首頁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ù)表達(dá)式使用算術(shù)表達(dá)式的一般形式為:expressionoperatorexpression
WHERE子句中允許出現(xiàn)的算術(shù)運(yùn)算符有:=(等于)、>(大于)、>=(對(duì)于等于)、<(小于)、<=(小于等于)、<>(不等于)、!>(不大于)、!<(不小于)、!=(不等于)
5.2使用SELECT語句查詢數(shù)據(jù)2.邏輯表達(dá)式在Transact-SQL中可以使用的邏輯運(yùn)算符有三個(gè):NOT:邏輯反,對(duì)指定的布爾表達(dá)式求反。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通配符:%:可匹配任意類型和長度的字符串。_(下劃線):可匹配任何單個(gè)字符。[]:指定范圍或集合中的任何單個(gè)字符。[^]:不屬于指定范圍或集合的任何單個(gè)字符6.NULL關(guān)鍵字
表達(dá)式ISNULL或表達(dá)式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表示大于子查詢中的所有值。
本章首頁5.3使用INSERT語句插入數(shù)據(jù)
INSERT[INTO]{table_name|view_name}
{[(
column_list)]{VALUES
(
{DEFAULT|NULL|expression}[,...n])
|derived_table}
本章首頁5.4使用UPDATE語句更新數(shù)據(jù)
UPDATE{table_name|view_name}[FROM{<table_source>}[,...n]SETcolumn_name={expression|DEFAULT|NULL}[,...n][WHEREsearch_condition>]
本章首頁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服務(wù)器進(jìn)行執(zhí)行。SQLServer服務(wù)器將批處理編譯成一個(gè)可執(zhí)行單元,稱為執(zhí)行計(jì)劃。本章首頁6.2注釋
在SQLServer中,有兩種類型的注釋字符:單行注釋:使用兩個(gè)連在一起的減號(hào)“--”作為注釋符;多行注釋:使用“/**/”作為注釋符。本章首頁6.3變量
6.3.1全局變量全局變量在整個(gè)SQLServer系統(tǒng)內(nèi)使用。存儲(chǔ)的通常是一些SQLServer的配置設(shè)定值和統(tǒng)計(jì)數(shù)據(jù)。在使用全局變量時(shí)應(yīng)該注意以下幾點(diǎn):全局變量是在服務(wù)器級(jí)定義的。用戶只能使用預(yù)先定義的全局變量。引用全局變量時(shí),必須以標(biāo)記符“@@”開頭。全局變量對(duì)用戶來說是只讀的。局部變量的名稱不能與全局變量的名稱相同。6.3變量6.3.2局部變量利用局部變量還可以保存程序執(zhí)行過程中的中間數(shù)據(jù)值,保存由存儲(chǔ)過程返回的數(shù)據(jù)值等。1.局部變量的定義必須先用DECLARE命令定義后才可以使用。DECLAER{@local_variabledata_type}[…n]2.局部變量的賦值方法
SET{{@local_variable=expression}或者SELECT{@local_variable=expression}[,...n]本章首頁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è)的操作數(shù)不能同時(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)先級(jí)括號(hào):();乘、除、求模運(yùn)算符:*,/,%;加減運(yùn)算符:+,-;比較運(yùn)算符:=,>,<,>=,<=,<>,!=,!>,!<;位運(yùn)算符:^,&,|;邏輯運(yùn)算符:NOT;邏輯運(yùn)算符:AND;邏輯運(yùn)算符:OR。本章首頁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表達(dá)式END
調(diào)用用戶自定義函數(shù)的基本語法為:變量=用戶名.函數(shù)名稱(實(shí)際參數(shù)列表)注意:在調(diào)用返回?cái)?shù)值的用戶自定義函數(shù)時(shí),一定要在函數(shù)名稱的前面加上用戶名
本章首頁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語句簡單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視圖的概念
視圖是一種數(shù)據(jù)庫對(duì)象,是從一個(gè)或者多個(gè)數(shù)據(jù)表或視圖中導(dǎo)出的虛表,視圖的結(jié)構(gòu)和數(shù)據(jù)是對(duì)數(shù)據(jù)表進(jìn)行查詢的結(jié)果。視圖被定義后便存儲(chǔ)在數(shù)據(jù)庫中,通過視圖看到的數(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)視圖可以屏蔽數(shù)據(jù)的復(fù)雜性,簡化用戶對(duì)數(shù)據(jù)庫的操作。視圖可以讓不同的用戶以不同的方式看到不同或者相同的數(shù)據(jù)集??梢允褂靡晥D重新組織數(shù)據(jù)。視圖可以定制不同用戶對(duì)數(shù)據(jù)的訪問權(quán)限。本章首頁7.2創(chuàng)建視圖
視圖的名稱只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建視圖。一個(gè)視圖中行、列的限制。如果視圖中某一列是函數(shù)、數(shù)學(xué)表達(dá)式、常量或者來自多個(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使用向?qū)?chuàng)建視圖
本章首頁7.3查看視圖信息7.3.1使用企業(yè)管理器查看視圖信息
7.3.2使用系統(tǒng)存儲(chǔ)過程查看視圖信息
sp_help數(shù)據(jù)庫對(duì)象名稱sp_helptext視圖(觸發(fā)器、存儲(chǔ)過程)sp_depends數(shù)據(jù)庫對(duì)象名稱
本章首頁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本章首頁7.5使用視圖修改視圖中的數(shù)據(jù)時(shí)每次修改都只能影響一個(gè)基表。不能修改那些通過計(jì)算得到的字段。如果在創(chuàng)建視圖時(shí)指定了WITHCHECKOPTION選項(xiàng),那么所有使用視圖修改數(shù)據(jù)庫信息時(shí),必須保證修改后的數(shù)據(jù)滿足視圖定義的范圍。執(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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境電商獨(dú)立站域名2025年租賃轉(zhuǎn)讓協(xié)議
- 初中政治期末考試試題及答案
- 2025-2026人教版小學(xué)二年級(jí)語文上冊期末測試
- 議論文考試題及答案
- 2025-2026人教版五年級(jí)語文上學(xué)期真題
- 2025 小學(xué)六年級(jí)科學(xué)上冊科學(xué)教育中的探究式學(xué)習(xí)活動(dòng)設(shè)計(jì)課件
- 水上游樂場衛(wèi)生管理制度
- 公共衛(wèi)生證管理制度
- 衛(wèi)生院設(shè)備監(jiān)測管理制度
- 食品衛(wèi)生間清洗制度
- 2025大模型安全白皮書
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及1套參考答案詳解
- 工程款糾紛專用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 2026湖北武漢長江新區(qū)全域土地管理有限公司招聘3人筆試備考題庫及答案解析
- 110(66)kV~220kV智能變電站設(shè)計(jì)規(guī)范
- (正式版)DB44∕T 2784-2025 《居家老年人整合照護(hù)管理規(guī)范》
- 2025年美國心臟病協(xié)會(huì)心肺復(fù)蘇和心血管急救指南(中文完整版)
- 1、湖南大學(xué)本科生畢業(yè)論文撰寫規(guī)范(大文類)
- 基于多源數(shù)據(jù)融合的深圳市手足口病時(shí)空傳播模擬與風(fēng)險(xiǎn)預(yù)測模型構(gòu)建及應(yīng)用
- 2025初三歷史中考一輪復(fù)習(xí)資料大全
- 2025年江西公務(wù)員考試(財(cái)經(jīng)管理)測試題及答案
評(píng)論
0/150
提交評(píng)論