數(shù)據(jù)庫(kù)技術(shù):SQL-SERVER-2000數(shù)據(jù)庫(kù)管理與開發(fā)_第1頁(yè)
數(shù)據(jù)庫(kù)技術(shù):SQL-SERVER-2000數(shù)據(jù)庫(kù)管理與開發(fā)_第2頁(yè)
數(shù)據(jù)庫(kù)技術(shù):SQL-SERVER-2000數(shù)據(jù)庫(kù)管理與開發(fā)_第3頁(yè)
數(shù)據(jù)庫(kù)技術(shù):SQL-SERVER-2000數(shù)據(jù)庫(kù)管理與開發(fā)_第4頁(yè)
數(shù)據(jù)庫(kù)技術(shù):SQL-SERVER-2000數(shù)據(jù)庫(kù)管理與開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩448頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

SQLSERVER2000

數(shù)據(jù)庫(kù)管理與開發(fā)目錄SQLSERVER2000概述數(shù)據(jù)庫(kù)管理表及其應(yīng)用數(shù)據(jù)的查詢與更新使用視圖和索引Transact-SQL程序設(shè)計(jì)使用規(guī)則、默認(rèn)值與觸發(fā)器SQLServer中的安全管理備份和還原不同數(shù)據(jù)格式的轉(zhuǎn)換數(shù)據(jù)庫(kù)的事務(wù)管理數(shù)據(jù)庫(kù)設(shè)計(jì)第1章SQLSERVER2000概述本章目標(biāo)了解SQLServer2000SQLServer2000啟動(dòng)和停止管理服務(wù)器的方法使用SQLServer2000提供的管理工具和實(shí)用程序回憶以前學(xué)習(xí)的知識(shí)生活中遇到的大量數(shù)據(jù),需要解決哪些問題?數(shù)據(jù)保存、查詢、排序、篩選、刪除……在Execl中學(xué)習(xí)的相關(guān)內(nèi)容?數(shù)據(jù)清單、自動(dòng)篩選和高級(jí)篩選、分類匯總、數(shù)據(jù)透視圖和透視表Execl數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的發(fā)展史萌芽階段——文件系統(tǒng)使用磁盤文件來(lái)存儲(chǔ)數(shù)據(jù)初級(jí)階段——第一代數(shù)據(jù)庫(kù)出現(xiàn)了網(wǎng)狀模型、層次模型的數(shù)據(jù)庫(kù)中級(jí)階段——第二代數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)和結(jié)構(gòu)化查詢語(yǔ)言高級(jí)階段——新一代數(shù)據(jù)庫(kù)“關(guān)系-對(duì)象”型數(shù)據(jù)庫(kù)早期數(shù)據(jù)保存方式—

書面文件在數(shù)據(jù)庫(kù)出現(xiàn)之前,人們書面文檔來(lái)存儲(chǔ)數(shù)據(jù)容易丟失數(shù)據(jù)數(shù)據(jù)重復(fù)、冗余難于查閱和使用維護(hù)成本高早期數(shù)據(jù)保存方式—計(jì)算機(jī)文件

操作、修改、查找數(shù)據(jù)1磁盤計(jì)算機(jī)系統(tǒng)進(jìn)行數(shù)據(jù)處理2傳送信息磁帶可以以不同的文件格式進(jìn)行數(shù)據(jù)保存今天,人們依然采用文件方式保存一些數(shù)據(jù)為什么使用數(shù)據(jù)庫(kù)?條理分明檢索方便維護(hù)容易減少錯(cuò)誤信息挖掘名姓聘任時(shí)間KarlaJablonski1994-03-11MartineRance1992-02-05MargaretSmith1988-09-29GaryThomas1988-08-09計(jì)算機(jī)化數(shù)據(jù)庫(kù)的好處數(shù)據(jù)結(jié)構(gòu)化

數(shù)據(jù)能夠共享

數(shù)據(jù)冗余度小,易擴(kuò)充

數(shù)據(jù)與程序的獨(dú)立性較高

對(duì)數(shù)據(jù)實(shí)行集中統(tǒng)一控制

可以建立和遵循某些標(biāo)準(zhǔn)便于維護(hù)數(shù)據(jù)完整性能夠?qū)崿F(xiàn)數(shù)據(jù)的安全性MSSQLServer2000是一個(gè)大型的管理數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)多層的客戶/服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng)采用請(qǐng)求-應(yīng)答工作方式SQLServer2000是一種關(guān)系型數(shù)據(jù)庫(kù).以二維表的方式存儲(chǔ)數(shù)據(jù).數(shù)據(jù)庫(kù)服務(wù)器響應(yīng)和提供數(shù)據(jù)應(yīng)用程序數(shù)據(jù)庫(kù)操作和查詢數(shù)據(jù)庫(kù)和應(yīng)用程序的請(qǐng)求-應(yīng)答工作方式數(shù)據(jù)庫(kù)模型模型:事物抽象特征或者過程的描述數(shù)據(jù)模型:描述用來(lái)存儲(chǔ)數(shù)據(jù)的容器;在該容器中存儲(chǔ)和檢索數(shù)據(jù)的過程;數(shù)據(jù)庫(kù)模型分類:層次模型網(wǎng)狀模型關(guān)系模型關(guān)系模型記錄和記錄之間通過屬性之間的關(guān)系來(lái)進(jìn)行連接保證數(shù)據(jù)獨(dú)立性,并形成數(shù)據(jù)集之間的關(guān)系753862981成績(jī)學(xué)號(hào)劉三陽(yáng)3李東2張明1姓名學(xué)號(hào)劉三陽(yáng)753姓名成績(jī)學(xué)號(hào)基于關(guān)系模型的數(shù)據(jù)庫(kù)目前較流行的關(guān)系型數(shù)據(jù)庫(kù):桌面數(shù)據(jù)庫(kù)MSAccess大型網(wǎng)絡(luò)數(shù)據(jù)庫(kù)MSSQLServer、Oracle和Sybase、DB2等SQLServer2000的版本包括企業(yè)版、標(biāo)準(zhǔn)版、個(gè)人版、開發(fā)版和用于測(cè)試的評(píng)估版,用戶可以根據(jù)自己的需要和軟、硬件環(huán)境選用相應(yīng)的產(chǎn)品。企業(yè)版:最大支持32個(gè)CPU、64G內(nèi)存的多處理器系統(tǒng),適合于大規(guī)模商業(yè)應(yīng)用;標(biāo)準(zhǔn)版:最大支持4個(gè)CPU、2G內(nèi)存的多處理器系統(tǒng),適合于中小規(guī)模的商業(yè)應(yīng)用;個(gè)人版:支持兩個(gè)CPU的處理器系統(tǒng),適合于個(gè)人或小型工作組的實(shí)驗(yàn)應(yīng)用;開發(fā)版:適合于開發(fā)人員應(yīng)用;評(píng)估版:適合于開發(fā)人員體驗(yàn)SQLServer2000的新功能。SQLServer2000的新特性支持XML支持多實(shí)例改進(jìn)的數(shù)據(jù)倉(cāng)庫(kù)及智能化業(yè)務(wù)(BI)支持微軟Windows2000操作系統(tǒng)改進(jìn)的性能和可擴(kuò)展性改進(jìn)的向?qū)Ы缑娓倪M(jìn)的查詢分析器改進(jìn)的DTSSQLServer2000的實(shí)例安裝SQLServer2000數(shù)據(jù)服務(wù)器就是安裝SQLServer2000數(shù)據(jù)庫(kù)引擎實(shí)例一臺(tái)計(jì)算機(jī)上可安裝多個(gè)SQLServer數(shù)據(jù)庫(kù)引擎實(shí)例在單臺(tái)計(jì)算機(jī)上可以運(yùn)行的實(shí)例數(shù)目取決于可用資源,SQLServer2000最多支持16個(gè)實(shí)例SQLServer實(shí)例類型默認(rèn)實(shí)例

一臺(tái)計(jì)算機(jī)上只能有一個(gè)默認(rèn)實(shí)例默認(rèn)實(shí)例可以是SQLServer的任何版本

命名實(shí)例

安裝SQLServer2000的系統(tǒng)要求

企業(yè)版:WinNTServer、Win2000Server、

WinAdvancedServer、Win2000DataCenter

標(biāo)準(zhǔn)版:WinNTServer、Win2000Server、

WinAdvancedServer、Win2000DataCenter

個(gè)人版:Win98、WinMe、WinNTWorkstation、

Win2000Professional及更高版本W(wǎng)indows系統(tǒng) 開發(fā)版:WinNTWorkstation、Win2000Professional

及更高版本W(wǎng)indows系統(tǒng) 客戶端:WinNT、Win2000、WinMe、Win98等SQLServer2000管理工具簡(jiǎn)介服務(wù)管理器:服務(wù)啟動(dòng)、暫停和停止管理企業(yè)管理器:可以完成幾乎所有管理工作查詢分析器:允許輸入、執(zhí)行SQL語(yǔ)句并返回結(jié)果客戶端網(wǎng)絡(luò)實(shí)用工具:客戶端數(shù)據(jù)庫(kù)連接工具事件探查器:數(shù)據(jù)庫(kù)事件管理工具數(shù)據(jù)導(dǎo)入/導(dǎo)出工具:用于數(shù)據(jù)的傳遞與轉(zhuǎn)換服務(wù)管理器SQLServer服務(wù)SQLServer代理服務(wù)MSDTC服務(wù)每個(gè)SQLServer實(shí)例都有一個(gè)SQLServer服務(wù),默認(rèn)實(shí)例名為MSSQLServer在對(duì)SQLServer數(shù)據(jù)庫(kù)進(jìn)行任何操作之前,必須啟動(dòng)本地或遠(yuǎn)程SQLServer服務(wù)器。使用服務(wù)管理器使用命令服務(wù)管理:運(yùn)行:NetStartmssqlserver暫停:Netpausemssqlserver繼續(xù):Netcontinuemssqlserver停止:Netstopmssqlserver啟動(dòng)和停止SQLServer服務(wù)SQLServer的日常管理是在企業(yè)管理器中進(jìn)行的,在使用企業(yè)管理器管理本地或遠(yuǎn)程SQLServer服務(wù)器時(shí),必須先在企業(yè)管理器中對(duì)該服務(wù)器注冊(cè)。在SQLServer企業(yè)管理器中可以完成注冊(cè)服務(wù)器的操作。SQLServer服務(wù)器注冊(cè)成功后,在企業(yè)管理器中依次展開MicrosoftSQLServers、SQLServer組、服務(wù)器節(jié)點(diǎn),在服務(wù)器節(jié)點(diǎn)上指示燈是綠色的,表示服務(wù)器連接成功。注冊(cè)服務(wù)器和創(chuàng)建服務(wù)器組使用企業(yè)管理器組注冊(cè)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)表記錄在服務(wù)器節(jié)點(diǎn)上指示燈是綠色的,表示服務(wù)器連接成功登錄查詢分析器使用查詢分析器對(duì)象瀏覽器總結(jié)SQLServer2000的版本啟動(dòng)和停止SQLServer服務(wù)注冊(cè)服務(wù)器和創(chuàng)建服務(wù)器組SQLServer2000管理工具簡(jiǎn)介SQLServer2000的兩種安全模式第2章數(shù)據(jù)庫(kù)管理本章目標(biāo)掌握數(shù)據(jù)庫(kù)系統(tǒng)的組成明確數(shù)據(jù)庫(kù)文件分類掌握SQLServer2000的系統(tǒng)數(shù)據(jù)庫(kù)能夠進(jìn)行用戶數(shù)據(jù)庫(kù)管理學(xué)習(xí)數(shù)據(jù)庫(kù)的分離與附加什么是數(shù)據(jù)庫(kù)?數(shù)據(jù)庫(kù)就是按照一定的組織結(jié)構(gòu)存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)介質(zhì)上的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)具有以下的特點(diǎn):結(jié)構(gòu)化:數(shù)據(jù)庫(kù)文件及文件內(nèi)部數(shù)據(jù)都有一定的結(jié)構(gòu);獨(dú)立性:數(shù)據(jù)的邏輯組織與物理存儲(chǔ)方式無(wú)關(guān);數(shù)據(jù)共享,減少冗余:數(shù)據(jù)集中存儲(chǔ),統(tǒng)一管理;安全性與完整性:保證數(shù)據(jù)的正確性和可靠性數(shù)據(jù)冗余和數(shù)據(jù)完整性示例

學(xué)號(hào)

姓名1

張明2

王東3

李健3

趙彬失去了數(shù)據(jù)完整性學(xué)號(hào)必須唯一

學(xué)號(hào)

姓名1

張明2

王東3

李健4

趙彬

學(xué)號(hào)成績(jī)

姓名189

張明276

王東380

李健467

趙彬存在數(shù)據(jù)冗余什么是DBMS?數(shù)據(jù)庫(kù)管理系統(tǒng)是用來(lái)幫助用戶建立、使用和管理數(shù)據(jù)庫(kù)的軟件系統(tǒng),簡(jiǎn)稱DBMS。數(shù)據(jù)庫(kù)管理系統(tǒng)的功能:建立:建立數(shù)據(jù)庫(kù)結(jié)構(gòu),并存儲(chǔ)用戶數(shù)據(jù);操作:插入、修改、刪除、檢索、統(tǒng)計(jì)匯總、打印等;其他:數(shù)據(jù)安全性、數(shù)據(jù)完整性、并發(fā)控制等管理計(jì)算機(jī)基本系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)的組成有關(guān)應(yīng)用所需要的工作數(shù)據(jù)的集合,是數(shù)據(jù)庫(kù)的主體數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)物理數(shù)據(jù)庫(kù)描述數(shù)據(jù)庫(kù)關(guān)于各級(jí)數(shù)據(jù)結(jié)構(gòu)的描述數(shù)據(jù),通常由一個(gè)數(shù)據(jù)詞典系統(tǒng)管理SQLServer數(shù)據(jù)庫(kù)SQLServer2000是一種采用SQL語(yǔ)言的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),是以文件的形式存儲(chǔ)在磁盤上的(以文件組形式進(jìn)行組織管理),數(shù)據(jù)庫(kù)文件(使用便于管理的規(guī)則命名)根據(jù)作用不同分為三種。文件名擴(kuò)展名存在數(shù)量作用(存放內(nèi)容)主數(shù)據(jù)文件.MDF僅有1個(gè)數(shù)據(jù)和數(shù)據(jù)庫(kù)啟動(dòng)信息輔助數(shù)據(jù)文件.NDF0個(gè)或多個(gè)存放數(shù)據(jù)事務(wù)日志文件.LDF1個(gè)或多個(gè)存放數(shù)據(jù)庫(kù)的修改信息數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)中的數(shù)據(jù)按不同形式組織在一起,構(gòu)成了不同的數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象在磁盤上沒有對(duì)應(yīng)的文件SQLServer2000中有以下數(shù)據(jù)庫(kù)對(duì)象:表、視圖、存儲(chǔ)過程、觸發(fā)器、用戶自定義數(shù)據(jù)類型、用戶自定義函數(shù)、索引、規(guī)則、默認(rèn)、約束等文件組將多個(gè)數(shù)據(jù)文件存放在不同的磁盤上并把多個(gè)數(shù)據(jù)文件組成一個(gè)或多個(gè)文件組。數(shù)據(jù)庫(kù)根據(jù)組內(nèi)數(shù)據(jù)文件的大小,按比例地寫入組內(nèi)所有數(shù)據(jù)文件,使多個(gè)磁盤同時(shí)并行工作、提高讀寫速度Northwnd.ldfE:\日志文件…

Orders

Customers

Products

OrdHistYear2

OrdHistYear1

主文件組Northwnd.mdfC:\用戶定義文件組OrdHist1.ndfOrdHist2.ndfD:\E:\sys…

sys…

sysusers

sysobjects

示范數(shù)據(jù)庫(kù)Northwind的物理文件結(jié)構(gòu)——文件組和數(shù)據(jù)存儲(chǔ)tempdb臨時(shí)數(shù)據(jù)庫(kù),臨時(shí)數(shù)據(jù)可被自動(dòng)刪除,不需要特殊權(quán)限,系統(tǒng)中僅有一個(gè),空間不足可自動(dòng)擴(kuò)展系統(tǒng)數(shù)據(jù)庫(kù)用戶數(shù)據(jù)庫(kù)mastermodelmsdbpubsNorthwindUser1distribution示例數(shù)據(jù)庫(kù)主控?cái)?shù)據(jù)庫(kù),用于管理其他數(shù)據(jù)庫(kù)和保存SQLServer系統(tǒng)信息模板數(shù)據(jù)庫(kù),當(dāng)創(chuàng)建一個(gè)用戶數(shù)據(jù)庫(kù)時(shí)其內(nèi)容自動(dòng)復(fù)制到新數(shù)據(jù)庫(kù)中SQLServer代理使用其安排報(bào)警、作業(yè)并記錄操作員系統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)示例數(shù)據(jù)庫(kù)系統(tǒng)表SQLServer2000中的每個(gè)數(shù)據(jù)庫(kù)都包含系統(tǒng)表系統(tǒng)表在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)自動(dòng)產(chǎn)生系統(tǒng)表用來(lái)記錄SQLServer組件所需的數(shù)據(jù)SQLServer的操作能否成功,取決于系統(tǒng)表中信息的完整性任何用戶都不應(yīng)直接修改系統(tǒng)表常用的master系統(tǒng)表系統(tǒng)表名稱用途sys_server_info保存服務(wù)器及安裝信息spt_values用于保存系統(tǒng)表的特征值sysconfigures保存服務(wù)器選項(xiàng)的代碼、名稱、當(dāng)前設(shè)置sysdatabases保存所有數(shù)據(jù)庫(kù)的代碼、名稱、創(chuàng)建日期等syslogins保存系統(tǒng)所有登錄賬號(hào)sysdevices用于保存系統(tǒng)數(shù)據(jù)庫(kù)設(shè)備和備份的信息常用數(shù)據(jù)庫(kù)系統(tǒng)表系統(tǒng)表名稱用途sysobjects用于保存數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)庫(kù)對(duì)象的信息,包括表、視圖、存儲(chǔ)過程、規(guī)則等systypes記錄系統(tǒng)數(shù)據(jù)類型和用戶定義的數(shù)據(jù)類型sysfiles記錄數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和日志文件的信息sysdevices用于保存數(shù)據(jù)庫(kù)的文件組信息sysusers記錄數(shù)據(jù)庫(kù)中所有的用戶和角色創(chuàng)建用戶數(shù)據(jù)庫(kù)一個(gè)數(shù)據(jù)庫(kù)是包含表、視圖、存儲(chǔ)過程及觸發(fā)器等數(shù)據(jù)庫(kù)對(duì)象的容器,在數(shù)據(jù)庫(kù)中建立的各種數(shù)據(jù)庫(kù)對(duì)象都保存在數(shù)據(jù)庫(kù)文件中創(chuàng)建數(shù)據(jù)庫(kù)之前應(yīng)考慮好數(shù)據(jù)庫(kù)的擁有者、數(shù)據(jù)庫(kù)的初始容量、最大容量、增長(zhǎng)量及數(shù)據(jù)庫(kù)文件存放的路徑等因素要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù),用戶必須具有相應(yīng)的權(quán)限可以使用企業(yè)管理器、CREATEDATABASE語(yǔ)句和向?qū)N方法創(chuàng)建數(shù)據(jù)庫(kù)3-1演示使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫(kù)…數(shù)據(jù)文件的邏輯名數(shù)據(jù)文件的物理名文件組日志文件不屬于任何文件組createdatabase

數(shù)據(jù)庫(kù)名

[on[primary]

{([name=

數(shù)據(jù)文件的邏輯名稱,]

filename=

‘?dāng)?shù)據(jù)文件的物理名稱’

,

[size=

數(shù)據(jù)文件的初始大小,][maxsize=數(shù)據(jù)文件的最大容量,][filegrowth=

數(shù)據(jù)文件的增長(zhǎng)量])}[,…n]

logon{([name=

事務(wù)日志文件的邏輯名稱,]

filename=

‘事務(wù)日志文件的物理名稱’

,

[size=

事務(wù)日志文件的初始大小,][maxsize=事務(wù)日志文件的最大容量,][filegrowth=

事務(wù)日志文件的增長(zhǎng)量])}[,…n]

用CREATEDATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)

例2.1用語(yǔ)句創(chuàng)建一個(gè)名為students的數(shù)據(jù)庫(kù),包含一個(gè)主數(shù)據(jù)文件和一個(gè)事務(wù)日志文件。這兩個(gè)文件都放在‘d:\data’目錄中。

主數(shù)據(jù)文件邏輯文件名為‘studentdata’,物理文件名為‘student_data.mdf’,初始容量大小為10MB,最大容量為50MB,每次增長(zhǎng)量為25%。

事務(wù)日志文件的邏輯文件名為‘studentlog’,物理文件名為‘student_log.ldf’,初始容量大小為10MB,最大容量為不受限制,每次增長(zhǎng)量為2MB。createdatabasestudentsonprimary(name=studentdata,filename='d:\data\student_data.mdf',size=10,maxsize=50,filegrowth=25%)logon(name=studentlog,filename='d:\data\student_log.ldf',size=10mb,maxsize=unlimited,filegrowth=2mb)示例用T-SQL語(yǔ)句在C:\DATA\與D:\DATA\文件夾中創(chuàng)建一個(gè)教師信息數(shù)據(jù)庫(kù)teacher,該數(shù)據(jù)庫(kù)包含:一個(gè)主數(shù)據(jù)文件邏輯名‘teacherdata1’,物理名‘C:\DATA\tdata1.mdf’,初始容量1MB,最大容量10MB,每次增長(zhǎng)量為15%。一個(gè)輔助數(shù)據(jù)文件邏輯名‘teacherdata2’物理名‘D:\DATA\tdata2.ndf’,初始容量2MB,最大容量15MB,每次增長(zhǎng)量為2MB。一個(gè)事務(wù)日志文件邏輯名‘teacherlog’物理名‘D:\DATA\teacherlog.ldf’,初始容量512KB,最大容量不受限制,每次增長(zhǎng)量為512KB。createdatabaseteacheronprimary(name=teacherdata1,filename='C:\DATA\tdata1.mdf',size=1,maxsize=10,filegrowth=15%),(name=teacherdata2,filename='C:\DATA\tdata2.ndf',size=2,maxsize=15,filegrowth=2)logon(name=teacherlog,filename='D:\DATA\teacherlog.ldf',size=512kb,maxsize=unlimited,filegrowth=512kb)(答案)SQL語(yǔ)句在書寫時(shí)不區(qū)分大小寫,一條語(yǔ)句可以寫在多行上,但不能將多條語(yǔ)句寫在一行上。演示使用向?qū)?chuàng)建數(shù)據(jù)庫(kù)…創(chuàng)建數(shù)據(jù)庫(kù)3-3完成后會(huì)詢問“是否馬上為新創(chuàng)建的數(shù)據(jù)庫(kù)創(chuàng)建維護(hù)計(jì)劃”。維護(hù)計(jì)劃就是設(shè)置何時(shí)自動(dòng)定期對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)。查看數(shù)據(jù)庫(kù)信息數(shù)據(jù)庫(kù)信息主要包括三方面:基本信息、維護(hù)信息和空間使用情況。使用企業(yè)管理器查看數(shù)據(jù)庫(kù)信息演示使用企業(yè)管理器查看數(shù)據(jù)庫(kù)信息…使用sp_helpdb查看數(shù)據(jù)庫(kù)信息語(yǔ)法:[execute]sp_helpdb[數(shù)據(jù)庫(kù)名]配置數(shù)據(jù)庫(kù)選項(xiàng)僅允許特殊用戶訪問數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)只能讀取,不能修改當(dāng)最后一個(gè)用戶退出,SQLServer將自動(dòng)關(guān)閉該數(shù)據(jù)庫(kù)并釋放其所占的系統(tǒng)資源數(shù)據(jù)庫(kù)文件中未使用空間超過文件大小的25%,將自動(dòng)縮小空間,縮小后數(shù)據(jù)庫(kù)文件的大小不能小于初始大小。設(shè)置只讀時(shí),此選項(xiàng)無(wú)效

對(duì)數(shù)據(jù)庫(kù)訪問權(quán)限進(jìn)行設(shè)置和修改

修改數(shù)據(jù)庫(kù)特性,同樣也可以使用‘企業(yè)管理器’alterdatabase數(shù)據(jù)庫(kù)名addfile<文件格式>[tofilegroup文件組]|addlogfile<文件格式>|removefile邏輯文件名|addfilegroup文件組名|removefilegroup文件組名|modifyfile<文件格式>|modifyfilegroup文件組名,文件組屬性(name=數(shù)據(jù)文件的邏輯名稱

[,filename=‘?dāng)?shù)據(jù)文件的物理名稱’]

[,size=數(shù)據(jù)文件的初始大小][,maxsize=數(shù)據(jù)文件的最大容量|unlimited][,filegrowth=數(shù)據(jù)文件的增長(zhǎng)量])在修改文件的“分配的空間”項(xiàng)時(shí),所改動(dòng)的值必須大于現(xiàn)有的空間值。例2.5用語(yǔ)句向students數(shù)據(jù)庫(kù)添加一個(gè)名為studentsfilegroup的文件組,并將student_dataadd.ndf添加到此文件組中。--添加文件組alterdatabasestudentsaddfilegroupstudentsfilegroupgo--添加數(shù)據(jù)文件,并將其加入新文件組alterdatabasestudentsaddfile(name=studentdataadd,filename='d:\data\student_dataadd.ndf')tofilegroupstudentsfilegroupgo--查看數(shù)據(jù)庫(kù)信息executesp_helpdbstudentsgo示例將students數(shù)據(jù)庫(kù)原有主數(shù)據(jù)文件studentsdata的物理文件名改為C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\students.mdf,初始大小改為2MB;按2MB自動(dòng)增長(zhǎng)到最大容量20MB。alterdatabasestudentsModifyfile(name=studentsdata,filename=‘C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\students.mdf

',size=2,maxsize=20,filegrowth=2(答案)刪除數(shù)據(jù)庫(kù)刪除一個(gè)數(shù)據(jù)庫(kù)會(huì)刪除該數(shù)據(jù)庫(kù)中的所有對(duì)象,從而釋放出該數(shù)據(jù)庫(kù)所占用的磁盤空間注意當(dāng)數(shù)據(jù)庫(kù)處于正在使用、正在被恢復(fù)和正在參與復(fù)制三種狀態(tài)之一時(shí),不能刪除該數(shù)據(jù)庫(kù)若要?jiǎng)h除的數(shù)據(jù)庫(kù)正在被其他用戶所使用,則可以先斷開服務(wù)器與該用戶的連接,然后刪除該數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)中的master、model和tempdb不能被刪除,msdb雖然可以被刪除,但刪除msdb后很多服務(wù)(比如SQLServer代理服務(wù))將無(wú)法使用,因?yàn)檫@些服務(wù)在運(yùn)行時(shí)會(huì)用到msdb刪除數(shù)據(jù)庫(kù)2–1演示在企業(yè)管理器中刪除數(shù)據(jù)庫(kù)…演示在查詢分析器中刪除數(shù)據(jù)庫(kù)…(例2.6)刪除數(shù)據(jù)庫(kù)2–2創(chuàng)建數(shù)據(jù)庫(kù)關(guān)于數(shù)據(jù)庫(kù)的命令createdatabasealterdatabasedropdatabase修改數(shù)據(jù)庫(kù)刪除數(shù)據(jù)庫(kù)sp_helpdb查看數(shù)據(jù)庫(kù)定義信息分離數(shù)據(jù)庫(kù)實(shí)際上是從SQLServer系統(tǒng)中刪除數(shù)據(jù)庫(kù)

組成該數(shù)據(jù)庫(kù)的數(shù)據(jù)文件和事務(wù)日志文件依然完好無(wú)損的保存在磁盤上

注意只有固定服務(wù)器角色成員sysadmin才可執(zhí)行分離操作系統(tǒng)數(shù)據(jù)庫(kù)master、model

和tempdb數(shù)據(jù)庫(kù)無(wú)法從系統(tǒng)分離出去

數(shù)據(jù)庫(kù)與SQLServer系統(tǒng)的分離若要執(zhí)行分離操作,必須先單擊“清除”按鈕清除連接

使用這些數(shù)據(jù)文件和事務(wù)日志文件可以將數(shù)據(jù)庫(kù)再附加到任何SQLServer系統(tǒng)中,而且數(shù)據(jù)庫(kù)在新系統(tǒng)中的使用狀態(tài)與它分 離時(shí)的狀態(tài)完全相 同附加數(shù)據(jù)庫(kù)只需要 指定要附加到SQL Server系統(tǒng)的數(shù)據(jù) 庫(kù)主數(shù)據(jù)文件的路 徑與文件名

將數(shù)據(jù)庫(kù)附加到SQLServer系統(tǒng)總結(jié)概念:數(shù)據(jù)庫(kù)、DBMS數(shù)據(jù)庫(kù)系統(tǒng)的組成SQLServer數(shù)據(jù)庫(kù)文件分類數(shù)據(jù)庫(kù)對(duì)象SQLServer的系統(tǒng)數(shù)據(jù)庫(kù)用戶數(shù)據(jù)庫(kù)的創(chuàng)建、修改和刪除查看數(shù)據(jù)庫(kù)信息設(shè)置數(shù)據(jù)庫(kù)選項(xiàng)數(shù)據(jù)庫(kù)的分離與附加第3章表及其應(yīng)用本章目標(biāo)理解表的概念掌握表的創(chuàng)建、修改、刪除查看表的信息表是相關(guān)聯(lián)的行列集合。表是按照行列結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的。描述一個(gè)個(gè)體屬性的總和稱為一條記錄。描述個(gè)體的一個(gè)屬性稱為一個(gè)字段,也稱數(shù)據(jù)項(xiàng)。結(jié)構(gòu)和數(shù)據(jù)記錄是表的兩大組成部分。表的概念回顧數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)分類系統(tǒng)數(shù)據(jù)庫(kù)示例數(shù)據(jù)庫(kù)用戶自定義數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)文件數(shù)據(jù)庫(kù)對(duì)象本節(jié)目標(biāo)表的概念數(shù)據(jù)類型表的創(chuàng)建、修改、刪除查看表的信息表3.1人事表姓名性別年齡電話職位張三男30234567市場(chǎng)部經(jīng)理李四男28987657開發(fā)部經(jīng)理王五女34987456電腦操作員趙六女225245652教師行/記錄列/屬性/字段/數(shù)據(jù)項(xiàng)表是相關(guān)聯(lián)的行列集合。表是按照行列結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的。描述一個(gè)個(gè)體屬性的總和稱為一條記錄。描述個(gè)體的一個(gè)屬性稱為一個(gè)字段,也稱數(shù)據(jù)項(xiàng)。結(jié)構(gòu)和數(shù)據(jù)記錄是表的兩大組成部分。SQLServer中創(chuàng)建表的限制

每個(gè)數(shù)據(jù)庫(kù)里最多有20億個(gè)表。每個(gè)表上最多可創(chuàng)建一個(gè)聚集索引,249個(gè)非聚集索引。每個(gè)表最多可以設(shè)置1,024個(gè)字段。每條記錄最多占8,060B,但不包括text字段和image字段。創(chuàng)建表前的考慮

數(shù)據(jù)庫(kù)中要存放哪些數(shù)據(jù),這些數(shù)據(jù)如何劃分到表中。確定每個(gè)表需要哪些列,即決定表所包含的屬性有哪些。SQLServer的數(shù)據(jù)類型包括兩類:系統(tǒng)定義的數(shù)據(jù)類型

用戶定義的數(shù)據(jù)類型數(shù)據(jù)類型是用來(lái)表現(xiàn)數(shù)據(jù)的特性的,表中的每列數(shù)據(jù)必須是同一種類型的數(shù)據(jù),列的數(shù)據(jù)類型確定了該列數(shù)據(jù)的取值范圍。系統(tǒng)定義數(shù)據(jù)類型charvarchartextncharnvarcharntextmoneysmallmoneybinaryvarbinaryimagedatetimesmalldatetimebittinyintsmallintintbigintnumericdecimalfloatreal二進(jìn)制貨幣數(shù)字字符SQLServer2000數(shù)據(jù)類型整數(shù)位日期時(shí)間型統(tǒng)一字符型精確小數(shù)近似數(shù)值char(2)nchar(2)decimal(5,2)0/1以外的任何值都會(huì)作為1來(lái)處理字符型需用引號(hào)引起來(lái)需用引號(hào)引起來(lái)存儲(chǔ)圖像等數(shù)據(jù)帶有4位小數(shù)的decimal類型的數(shù)據(jù)域完整性實(shí)體完整性參照完整性數(shù)據(jù)完整性正確性+一致性=表中所有行唯一,即所有記錄都是可以區(qū)分的表中指定列的數(shù)據(jù)具有正確的數(shù)據(jù)類型、格式和有效的數(shù)據(jù)范圍有關(guān)聯(lián)的兩個(gè)或兩個(gè)以上表之間數(shù)據(jù)的一致性??梢酝ㄟ^建立主鍵和外鍵約束來(lái)實(shí)現(xiàn)。數(shù)據(jù)完整性可以通過各種約束、規(guī)則、默認(rèn)、觸發(fā)器等來(lái)保證外鍵約束(foreignkey)數(shù)據(jù)完整性保證

——約束:對(duì)輸入數(shù)據(jù)取值范圍和格式的限制唯一約束(unique)檢查約束(check)默認(rèn)值約束(default)空值約束(null)主鍵約束(primarykey)主鍵約束

每個(gè)表僅能定義一個(gè)主鍵主鍵值是表中記錄的標(biāo)識(shí)主鍵列可以有一個(gè)或多個(gè)列組合而成主鍵值不可為空(null)

主鍵值不能重復(fù)

image和text類型的列不能做主鍵是一列或幾列的組合用于保證非主鍵的不可重復(fù)字段可以為表定義多個(gè)唯一約束只能為表定義一個(gè)主鍵約束該列允許為空值,但只允許一個(gè)空值存在唯一約束可以定義在允許空值的列上主鍵約束只能定義在不允許為空值的列上唯一約束不改變字段的物理存儲(chǔ)位置記錄按主鍵值的指定順序存儲(chǔ)唯一約束設(shè)置外鍵約束字段的表稱為子表,它所引用的表稱為父表外鍵可以是單一字段,也可以是多個(gè)字段的組合外鍵所引用父表中的字段必須是創(chuàng)建了主鍵約束或唯一約束的列子表中外鍵字段添加的新數(shù)據(jù),必須在父表存在子表中引用父表數(shù)據(jù)的記錄未刪除,父表中被引用數(shù)據(jù)不能被刪除外鍵約束子表

記錄如果數(shù)據(jù)項(xiàng)不在父表中添加父表如果導(dǎo)致子表產(chǎn)生孤立記錄刪除外鍵約束:用來(lái)建立兩個(gè)表之間的關(guān)聯(lián)檢查約束

用指定的條件檢查限制輸入數(shù)據(jù)的取值范圍是否正確用于保證數(shù)據(jù)的參照完整性和域完整性如:成績(jī)必須>0

默認(rèn)值約束是給某個(gè)字段綁定一個(gè)默認(rèn)的初始值輸入記錄時(shí)若沒有給出該字段的數(shù)據(jù),則自動(dòng)填入默認(rèn)值以保證數(shù)據(jù)的域完整性對(duì)設(shè)置了默認(rèn)值約束的字段若輸入數(shù)據(jù)時(shí)則以輸入的數(shù)據(jù)為準(zhǔn)可為常量、內(nèi)置函數(shù)或表達(dá)式默認(rèn)值約束

空值NULL是不知道或不能確定的特殊數(shù)據(jù)不等同于數(shù)值0和字符的空格空值約束就是設(shè)置某個(gè)字段是否允許為空用以保證數(shù)據(jù)的實(shí)體完整性和域完整性空值約束在企業(yè)管理器中創(chuàng)建數(shù)據(jù)庫(kù)表每個(gè)表必須有一個(gè)主鍵字段不能存在重復(fù)字段每個(gè)表必須包含單個(gè)實(shí)體的信息表的每個(gè)字段必須依賴于主鍵字段所有非主鍵字段不能相互依賴字段必須符合命名規(guī)則createtable表名

({字段名列屬性列約束}[,…n])使用T-SQL創(chuàng)建表數(shù)據(jù)類型[(長(zhǎng)度)][null|notnull][identity(初始值,步長(zhǎng)值)]列屬性的格式[constraint約束名]primarykey[(列名)][constraint約束名]unique[(列名)][constraint約束名][foreiginkey[(外鍵列)]]references引用表名(引用列)[constraint約束名]check(檢查表達(dá)式)[constraint約束名]default默認(rèn)值列約束的格式使用T-SQL創(chuàng)建表

列名稱CREATETABLECa (CaId

CaName De Pi

數(shù)據(jù)類型

intIDENTITY(1,1)

nvarchar(15)ntextChar(10)空或非空

primarykey,NOTNULL,NULL,NULL)CREATETABLECa(CaId

int

IDENTITY(1,1)

primarykey,CaNamenvarchar(15)NOTNULL,DentextNULL,PiChar(10)NULL)例3.1用語(yǔ)句創(chuàng)建customers表,記錄客戶的基本信息。

表中包含如下內(nèi)容:客戶編號(hào)、姓名、地址、電話和出生日期。

設(shè)置客戶編號(hào)字段為主鍵約束,電話字段為唯一約束,姓名字段不能為空。createtablecustomers(客戶編號(hào)intprimarykey,

姓名varchar(20)notnull,

地址varchar(50),

電話varchar(20)unique,

出生日期datetime)例3.2用語(yǔ)句創(chuàng)建goods表,記錄貨品的基本信息。

表中包含如下內(nèi)容:貨品名稱、庫(kù)存量、供應(yīng)商、狀態(tài)和價(jià)格。

設(shè)置字段為主鍵約束,狀態(tài)字段為類型。createtablegoods(貨品名稱varchar(20)primarykey,

庫(kù)存量int,

供應(yīng)商varchar(50),

狀態(tài)bitdefault0,

價(jià)格money)貨品名稱bit例3.3用語(yǔ)句創(chuàng)建orders表,記錄客戶訂購(gòu)貨品的訂單信息。

表中包含內(nèi)容:訂單號(hào)、貨品名稱、客戶編號(hào)、數(shù)量、總金額和訂貨日期。

設(shè)置訂單號(hào)字段為自動(dòng)編號(hào),初始值為1,遞增量為1,同時(shí)設(shè)置為主鍵。

客戶編號(hào)字段為外鍵約束。

數(shù)量字段檢查約束為數(shù)量大于0,同時(shí)不能為空。

訂貨日期默認(rèn)值,為系統(tǒng)日期。createtableorders(訂單號(hào)

intidentity(1,1)primarykey,

貨品名稱

varchar(20)notnullreferencesgoods(貨品名稱),

客戶編號(hào)

intforeignkeyreferencescustomers(客戶編號(hào)),

數(shù)量

intnotnullcheck(數(shù)量>0),

總金額

money,

訂貨日期

datetimedefaultgetdate())練習(xí)圖書信息表字段名類型大小說明圖書編號(hào)Char10主鍵作者vchar20出版社vchar60定價(jià)money——讀者信息表字段名類型大小說明讀者編號(hào)char8主鍵姓名char8性別char2默認(rèn)‘男’身份證號(hào)char18聯(lián)系電話vchar20借閱信息表字段名類型大小說明圖書編號(hào)Char10組合主鍵讀者編號(hào)Char8借閱時(shí)間Datetime——默認(rèn)時(shí)間:系統(tǒng)當(dāng)前日期歸還時(shí)間Datetime——是否超期bit——默認(rèn)值‘0’超期罰款money——圖書信息管理數(shù)據(jù)庫(kù)1設(shè)置/查看約束除了在語(yǔ)句中設(shè)置約束,還可以通過‘企業(yè)管理器’進(jìn)行設(shè)置。設(shè)置主鍵約束設(shè)置唯一約束設(shè)置外鍵約束設(shè)置檢查約束添加/查看數(shù)據(jù)使用‘企業(yè)管理器’添加/查看數(shù)據(jù)通過Insert語(yǔ)句添加數(shù)據(jù)查看表信息通過‘企業(yè)管理器’.[execute]

sp_help

[表名]兩種方法。使用‘企業(yè)管理器’:‘所有任務(wù)’→‘顯示相關(guān)性’查看表之間的依賴關(guān)系修改表定義altertable表名

add列名數(shù)據(jù)類型[(長(zhǎng)度)][null|notnull] |altercolumn列名數(shù)據(jù)類型[(長(zhǎng)度)][null|notnull]

|dropcolumn字段名

[,…n] |addconstraint約束定義

[,…n] |dropconstraint約束名

[,…n] |nocheckconstraint約束名

|checkconstraint約束名

使用ADD子句添加列AlterTable表名

Add列名數(shù)據(jù)類型[(長(zhǎng)度)][NULL|NotNULL]若向已存在記錄的表中添加列,新添加的列可以設(shè)置允許為空;若不允許為空,則需指定默認(rèn)值。演示示例3.4…使用ADDCONSTRAINT子句添加約束AlterTable表名

AddConstraint約束定義[,……]演示示例3.5…約束對(duì)象5-1USEAA

CREATETABLEABCASDintDefault8,ASDEvarchar(20)Default'UNKNOWN')DEFAULT約束USEAAALTERTABLEABC

ADDCONSTRAINTDF_ASDDEFAULT10FORASD約束對(duì)象5–2CREATETABLEABCD(ASDint,ASDEvarchar(80)Default'UNKNOWN')CHECK約束USEABCDALTERTABLEABCDADDCONSTRAINTCK_ASD

CHECK(ASD>0ANDASD<100)約束對(duì)象5-4CREATETABLEAAC(ASDintCHECK(ASD<100)PRIMARYKEY,ASDEint)UNIQUE約束USENorthwindALTERTABLEAACADDCONSTRAINTU_ASDEUNIQUE(ASDE)使用DROPCONSTRAINT子句刪除約束AlterTable表名

DropConstraint約束名[,……]演示示例3.6…使用DROPCOLUMN子句刪除列AlterTable表名

DropColumn字段名[,……]演示示例3.7…在刪除列時(shí),必須先刪除基于該列的索引和約束后,才能刪除該列。刪除表定義droptable表名

[,…n]droptable語(yǔ)句不能刪除系統(tǒng)表。如果一個(gè)表被其他表通過外鍵約束引用,那么必須先刪除設(shè)置了外鍵約束的表,或刪除其外鍵約束??偨Y(jié)概念:表、數(shù)據(jù)完整性、數(shù)據(jù)類型、數(shù)據(jù)約束表的創(chuàng)建、修改和刪除為表添加數(shù)據(jù)查看表的信息定義信息表的約束表中的數(shù)據(jù)表之間的依賴關(guān)系第4章數(shù)據(jù)的查詢與更新本章目標(biāo)掌握數(shù)據(jù)查詢簡(jiǎn)單查詢統(tǒng)計(jì)指定數(shù)據(jù)源子查詢使用語(yǔ)句進(jìn)行數(shù)據(jù)更新添加數(shù)據(jù)修改數(shù)據(jù)刪除數(shù)據(jù)SELECT語(yǔ)句的基本語(yǔ)法格式select列名1,列名2,……,列名n[into新表名][from表名1,表名2,……,表名n][where條件表達(dá)式][groupby列名1,列名2,……,列名n][having條件表達(dá)式][orderby列名1[asc|desc],……,列名n[asc|desc]]使用select子句字段列表中的列可以是表中所定義的列,也可以是派生列。派生列就是由多個(gè)列運(yùn)算后產(chǎn)生的列,或者是利用算術(shù)函數(shù)計(jì)算后產(chǎn)生的列。例4.1查詢customers表中的所有信息。Usemarketselect*fromcustomers輸出表中所有列select*from數(shù)據(jù)源例4.2從customers表中選取‘姓名’和‘電話’兩個(gè)字段作為查詢的輸出字段。Usemarketselect姓名,電話fromcustomers輸出表中部分列select字段列表from數(shù)據(jù)源例4.3從goods表中選取‘貨品名稱’和‘總價(jià)格’兩個(gè)字段作為查詢的輸出字段,同時(shí)要求輸出一‘總價(jià)格’信息,其中‘總價(jià)格’=‘庫(kù)存量’╳‘價(jià)格’計(jì)算確定,‘貨品名稱’列的別名改為‘商品名稱’。Usemarketselect貨品名稱

as商品名稱,總價(jià)格=庫(kù)存量*價(jià)格

fromgoods為結(jié)果集中的列指定別名格式一:select列別名=原列名from數(shù)據(jù)源格式二:select原列名as列別名from數(shù)據(jù)源例4.4從orders表中選取‘貨品名稱’字段,要求刪除重復(fù)記錄。過濾結(jié)果集中的重復(fù)行selectdistinct

字段列表from數(shù)據(jù)源Usemarketselectdistinct貨品名稱fromorders例4.5查詢customers表的前三條記錄的信息。Usemarketselecttop3*fromcustomers限制返回行數(shù)selecttopn[percent]

字段列表from數(shù)據(jù)源使用into子句通過select…into可以創(chuàng)建一個(gè)新表并將查詢結(jié)果記錄添加到新表中。用戶在執(zhí)行一個(gè)帶有into子句的select語(yǔ)句時(shí),必須擁有在目標(biāo)數(shù)據(jù)庫(kù)上創(chuàng)建表的權(quán)限。

select…into不能與compute子句一起使用。新表所含的列為select指定列名,行由where確定。新表可以是臨時(shí)表,也可以是永久表。其中,臨時(shí)表表名以‘#’開頭。使用where子句通過where子句查詢滿足特定條件的記錄。在where子句中,組成表達(dá)式的運(yùn)算符有六種:比較運(yùn)算符、范圍運(yùn)算符、列表運(yùn)算符、模式匹配符、空值判斷符、邏輯運(yùn)算符。例4.7查詢goods表中庫(kù)存量大于等于100的貨品記錄。Usemarketselect*fromgoodswhere庫(kù)存量>=1001、比較運(yùn)算符——用來(lái)比較大小測(cè)試表達(dá)式比較運(yùn)算符比較值其中,比較運(yùn)算符有:>>==<<=<>!=!>!<例4.8查詢goods表中庫(kù)存量不在100~500之間的貨品記錄。Usemarketselect*fromgoodswhere庫(kù)存量

notbetween100and5002、范圍運(yùn)算符——用來(lái)判斷列值是否在指定范圍內(nèi)測(cè)試表達(dá)式[not]between起始值and終止值測(cè)試表達(dá)式必須與起始值和終止值的數(shù)據(jù)類型相同。例4.9查詢customers表中姓名是‘王蘭’、‘李紅’的客戶信息。Usemarketselect*fromcustomerswhere姓名in(‘王蘭’,‘李紅’)3、列表運(yùn)算符——用來(lái)判斷給定列值是否在給定值的列表中測(cè)試表達(dá)式[not]in(列值1,…列值n)例4.10查詢customers表中姓李的客戶信息。select*fromcustomerswhere姓名like'李%'4、模式匹配運(yùn)算符——用來(lái)判斷字符型數(shù)據(jù)值是否與指定通配格式相符測(cè)試表達(dá)式[not]like‘通配符’通配符包括:%:代表0個(gè)或多個(gè)字符的任意字符串

_:代表單個(gè)字符

[]:代表指定范圍內(nèi)的單個(gè)字符

[^]:代表不在指定范圍內(nèi)的單個(gè)字符例4.11查詢goods表中不知道供應(yīng)商名稱的貨品信息,即供應(yīng)商列為空值。Usemarketselect*fromgoodswhere供應(yīng)商isnull5、空值運(yùn)算符——用來(lái)判斷所指定的列值是否為空值測(cè)試表達(dá)式is[not]

null例4.12用兩種方法查詢goods表中庫(kù)存量在100~1000之間的貨品記錄。Usemarketselect*fromgoodswhere庫(kù)存量

between100and1000select*fromgoodswhere庫(kù)存量>=100and庫(kù)存量<=10006、邏輯運(yùn)算符——用來(lái)連接多個(gè)條件,以便構(gòu)成一個(gè)復(fù)雜的查詢條件邏輯表達(dá)式1and|or邏輯表達(dá)式2

not邏輯表達(dá)式使用orderby子句

orderby{列名[asc|desc]}[,…n]例4.13查詢orders中的所有信息,在查詢結(jié)果中按‘貨品名稱’降序顯示,在‘貨品名稱’相同情況下,按訂貨的‘?dāng)?shù)量’升序顯示。Usemarketselect*fromordersorderby貨品名稱desc,數(shù)量使用集合函數(shù)集合函數(shù)可將查詢結(jié)果中的記錄進(jìn)行匯總計(jì)算,并將滿足條件的記錄匯總生成一條新記錄。max([all|distinct]列名)sum([all|distinct]列名)avg([all|distinct]列名)min([all|distinct]列名)count([*|all|distinct]列名)例4.14計(jì)算goods表中所有已定價(jià)貨品的平均價(jià)格、總價(jià)、最高價(jià)、最低價(jià)及記錄的個(gè)數(shù)。select平均價(jià)=avg(價(jià)格),sum(價(jià)格)as總價(jià)格,max(價(jià)格)最高價(jià),

最低價(jià)=min(價(jià)格),

定價(jià)記錄個(gè)數(shù)=count(價(jià)格)fromgoods使用groupby子句

groupby列名[having條件表達(dá)式]按照指定的列,將列值相同的記錄分組,對(duì)分組進(jìn)行匯總計(jì)算。每一組生成一條記錄。

select子句中的列名必須在groupby子句中存在的

where是對(duì)表中記錄進(jìn)行篩選;having則是對(duì)分組進(jìn)行篩選。所以having子句中可以有聚合函數(shù),而where子句中不能有聚合函數(shù)。有時(shí)兩者可以互換。GROUPBY子句2–1USEnorthwindSELECTproductid,orderid

,quantityFROMorderhistSELECTproductid,SUM(quantity)AStotal_quantityFROMorderhistGROUPBYproductidproductidtotal_quantity115235345productidorderidquantity11511102110222531153230productidtotal_quantity235SELECTproductid,SUM(quantity)AStotal_quantityFROMorderhistWHEREproductid=2GROUPBYproductidGROUPBY子句2-2USEnorthwindSELECTproductid,orderid,quantityFROMorderhistUSEnorthwindSELECTproductid,SUM(quantity)AStotal_quantityFROMorderhist

GROUPBYproductid

HAVINGSUM(quantity)>=30productidtotal_quantity235345productidorderidquantity11511102110222531153230例4.15統(tǒng)計(jì)orders表中各種貨品的訂貨總數(shù)量。select貨品名稱,sum(數(shù)量)fromordersgroupby貨品名稱例4.16用兩種方法統(tǒng)計(jì)orders表中除pen以外各種貨品的訂貨總數(shù)量。select貨品名稱,sum(數(shù)量)fromordersgroupby貨品名稱

having貨品名稱<>'pen'select貨品名稱,sum(數(shù)量)fromorderswhere貨品名稱<>'pen'groupby貨品名稱使用compute子句

compute聚集函數(shù)[by列名]與集合函數(shù)的區(qū)別是compute子句不僅要顯示匯總數(shù)據(jù),還要顯示參加匯總的記錄的詳細(xì)信息,而集合函數(shù)僅顯示匯總數(shù)據(jù)。

使用computeby子句時(shí)必須先按照分組列進(jìn)行排序,所以computeby子句必須與orderby子句連用。例4.17統(tǒng)計(jì)orders表各種貨品訂貨總數(shù)量,并給出明細(xì)表。Usemarketselect*fromordersorderby貨品名稱

computesum(數(shù)量)by貨品名稱指定數(shù)據(jù)源聯(lián)接內(nèi)聯(lián)接外聯(lián)接自聯(lián)接交叉聯(lián)接指定選擇查詢的來(lái)源時(shí),最簡(jiǎn)單的情況是from子句中僅指定一個(gè)表名。在實(shí)際應(yīng)用中,一個(gè)選擇查詢往往需要從多個(gè)表中查詢數(shù)據(jù),這就需要使用連接查詢。使用交叉連接交叉連接又稱非限制連接,它將兩個(gè)表不加任何約束地組合在一起。格式一:select列名列表from表名1crossjoin表名2格式二:select列名列表from表名1,表名2例4.18將customers表和orders表進(jìn)行交叉連接,觀察結(jié)果。select*fromcustomerscrossjoinordersselect*fromcustomers,orderssalesbuyer_idprod_idqty114323151553711421003buyersbuyer_nameAdamBarrSeanChaiEvaCoretsErinO’Meliabuyer_id1234USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyers,sales交叉連接查詢結(jié)果buyer_nameAdamBarrSeanChaiEvaCoretsErinO’Meliabuyer_idqty111115151515AdamBarr25SeanChai2……使用內(nèi)連接內(nèi)連接又稱自然連接,它將兩個(gè)表中滿足連接條件的記錄組合在一起。內(nèi)連接就是將交叉連接產(chǎn)生的結(jié)果集經(jīng)過連接條件過濾后得到的。格式一:select列名列表from表名1[inner]join表名2on表名1.列名=表名2.列名格式二:select列名列表from表名1,表名2where表名1.列名=表名2.列名salesbuyer_idprod_idqty114323151553711421003buyersbuyer_nameAdamBarrSeanChaiEvaCoretsErinO’Meliabuyer_id1234查詢結(jié)果buyer_nameAdamBarrAdamBarrErinO’MeliaEvaCoretsbuyer_idqty11431553711ErinO’Melia41003USEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyersINNERJOINsalesONbuyers.buyer_id=sales.buyer_id內(nèi)連接例4.19用內(nèi)連接方法連接customers和orders兩個(gè)表,觀察連接后的結(jié)果。selectc.客戶編號(hào),c.姓名,o.數(shù)量,o.總金額

fromcustomersascinnerjoinordersasoonc.客戶編號(hào)=o.客戶編號(hào)selectc.客戶編號(hào),c.姓名,o.數(shù)量,o.總金額

fromcustomersasc,ordersasowherec.客戶編號(hào)=o.客戶編號(hào)使用外連接外連接又分為左外連接、右外連接、全外連接三種。例4.20使用左外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量。selectgoods.貨品名稱,訂貨日期,數(shù)量

fromgoodsleftjoinordersongoods.貨品名稱=orders.貨品名稱左外連接就是將左表的所有記錄分別與右表的每一條記錄進(jìn)行連接組合,結(jié)果集中除返回內(nèi)部連接的記錄外,還包括左表不符合條件記錄并在右表相應(yīng)列填上null。select列名列表from表名1left[outer]join表名2on表名1.列名=表名2.列名salesbuyer_idprod_idqty114323151553711421003buyersbuyer_nameAdamBarrSeanChaiEvaCoretsErinO’Meliabuyer_id1234查詢結(jié)果buyer_nameAdamBarrAdamBarrErinO’MeliaEvaCoretsbuyer_idqty11431553711ErinO’Melia41003SeanChaiNULLNULLUSEjoindbSELECTbuyer_name,sales.buyer_id,qtyFROMbuyersLEFTOUTERJOINsalesONbuyers.buyer_id=sales.buyer_id左外連接例4.21使用右外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量。selectgoods.貨品名稱,訂貨日期,數(shù)量fromordersrightjoingoods

ongoods.貨品名稱=orders.貨品名稱右外連接與左外連接正好相反。select列名列表from表名1right[outer]join表名2on表名1.列名=表名2.列名例4.22使用全外連接查詢goods表和orders表,獲取存在訂貨的貨品名稱、訂貨日期和訂貨數(shù)量。selectgoods.貨品名稱,訂貨日期,數(shù)量

fromgoodsfulljoinordersongoods.貨品名稱=orders.貨品名稱全外連接就是將左表的所有記錄分別與右表的每一條記錄進(jìn)行連接組合,結(jié)果集中除返回內(nèi)部連接的記錄外,還包括兩表不符合條件記錄并在其他相應(yīng)列填上null。select列名列表from表名1full[outer]join表名2on表名1.列名=表名2.列名子查詢?nèi)绻粋€(gè)select語(yǔ)句能夠返回一個(gè)單值或一列值并嵌套在一個(gè)select、insert、update或delete語(yǔ)句中,則稱之為子查詢或內(nèi)層查詢,而包含一個(gè)子查詢的語(yǔ)句則稱為主查詢或外層查詢。子查詢可實(shí)現(xiàn)多層嵌套,且要用圓括號(hào)括起來(lái)。常把子查詢用在外層查詢的where子句或having子句中,與比較或邏輯運(yùn)算符一起構(gòu)成查詢條件。

子查詢又分為嵌套子查詢和相關(guān)子查詢。嵌套子查詢與相關(guān)子查詢嵌套子查詢總是最先執(zhí)行最內(nèi)層查詢。相關(guān)子查詢的執(zhí)行過程依賴于值的外部查詢。相關(guān)子查詢的WHERE

子句引用外部查詢的FROM

子句中的表。這就是說子查詢是以循環(huán)的方式進(jìn)行處理的——

對(duì)外部查詢選擇的每行都執(zhí)行一次。例4.26從goods表中檢索數(shù)據(jù),列出高于平均價(jià)格的貨品信息。select*fromgoodswhere

價(jià)格> (selectavg(價(jià)格)fromgoods)使用子查詢進(jìn)行比較測(cè)試通過比較運(yùn)算符(>,>=,<,<=,=,<>,!=,!>,!<),將一個(gè)表達(dá)式的值與子查詢返回的單值進(jìn)行比較。如果比較運(yùn)算的結(jié)果為TRUE,則比較測(cè)試也返回TRUE。例4.27從orders表中檢索數(shù)據(jù),以查詢有訂單的客戶信息。select*fromcustomerswhere

客戶編號(hào)in (select

客戶編號(hào)fromorders)使用子查詢進(jìn)行集成員測(cè)試通過邏輯運(yùn)算符IN或NOTIN將一個(gè)表達(dá)式的值與子查詢返回的一列值進(jìn)行比較。使用IN運(yùn)算符時(shí),如果該表達(dá)式的值與此列中的任何一個(gè)值相等,則集成員測(cè)試返回TRUE,否則返回FALSE;使用NOTIN的測(cè)試結(jié)果則正好取反。使用子查詢進(jìn)行存在性測(cè)試通過邏輯運(yùn)算符EXISTS或NOTEXISTS,檢查子查詢返回的結(jié)果集是否包含有記錄。使用EXISTS運(yùn)算符時(shí),如果子查詢的結(jié)果集中包含一條或多條記錄,則存在性測(cè)試返回TRUE,否則返回FALSE;使用NOTEXISTS的測(cè)試結(jié)果則正好取反。例4.28從orders表中檢索數(shù)據(jù),以查詢有訂單的客戶信息。select*fromcustomerswhereexists (select*fromorderswhere customers.客戶編號(hào)=orders.客戶編號(hào))例4.29用IN子句完成上例的操作。select*fromcustomers where客戶編號(hào)in(select客戶編號(hào)fromorders)使用子查詢進(jìn)行批量比較測(cè)試使用子查詢進(jìn)行批量比較測(cè)試時(shí),除了使用各種比較運(yùn)算符外,還需要用到兩個(gè)邏輯運(yùn)算符:ANY和ALL。1.使用ANY運(yùn)算符進(jìn)行批量比較測(cè)試測(cè)試表達(dá)式比較運(yùn)算符ANY(子查詢)通過比較運(yùn)算符將一個(gè)表達(dá)式的值與子查詢返回的一列值中的每一個(gè)進(jìn)行比較。只要有一次比較的結(jié)果為TRUE,則ANY測(cè)試返回TRUE。例4.30從customers表中檢索數(shù)據(jù),以查詢一次訂貨數(shù)量大于等于20的客戶編號(hào)和姓名。selecta.客戶編號(hào),a.姓名

fromcustomersawhere20<=any(select數(shù)量

fromorderswherea.客戶編號(hào)=orders.客戶編號(hào))2.使用ALL運(yùn)算符進(jìn)行批量比較測(cè)試測(cè)試表達(dá)式比較運(yùn)算符ALL(子查詢)通過比較運(yùn)算符將一個(gè)表達(dá)式的值與子查詢返回的一列值中的每一個(gè)進(jìn)行比較。只要有一次比較的結(jié)果為FALSE,則ALL測(cè)試返回FALSE。例4.31從goods表中檢索數(shù)據(jù),以查詢?cè)谒械呢浧分校瑑r(jià)格最高的貨品信息。select*fromgoods where價(jià)格>=all(select價(jià)格

fromgoods)添加數(shù)據(jù)使用INSERT語(yǔ)句向表中添加數(shù)據(jù)有兩種方式:1、INSERT…VALUES,直接給各列賦值,一次只能添加一條記錄;2、INSERT…SELECT,將select子句產(chǎn)生的結(jié)果集添加到表中,一次可添加多條記錄。1、使用INSERT…VALUESinsert表名[(字段列表)]values(值列表)向表中所有字段賦值時(shí),字段列表可??;對(duì)于指定了默認(rèn)值的字段,若使用默認(rèn)值可用default關(guān)鍵字;不能對(duì)標(biāo)識(shí)列、計(jì)算列進(jìn)行賦值;在向表中添加數(shù)據(jù)時(shí)不能違反完整性約束。例4.32向orders表添加一條新記錄,給所有列提供列值。insertordersvalues('book',1,10,250,'1/23/2003')由于‘訂貨日期’設(shè)定了默認(rèn)值,所有可以使用默認(rèn)值insertordersvalues('book',1,10,250,default)字符型和日期型數(shù)據(jù)需要用單引號(hào)括起來(lái)例4.33創(chuàng)建一個(gè)與customers表結(jié)構(gòu)一樣的表cq,使該表中僅有重慶客戶的信息。select*intocqfromcustomerswhere2=4insertcqselect*fromcustomerswhere地址like'重慶%'2、使用INSERT…SELECTinsert表名[(字段列表)]select字段列表from表名where條件表達(dá)式Select子句不能使用小括號(hào)括起來(lái)update目標(biāo)表名set{列名=表達(dá)式}[,…n][from另一表名][where條件表達(dá)式]修改數(shù)據(jù)例4.34將goods表中的庫(kù)存量大于100的貨品的定價(jià)降低10%。updategoodsset價(jià)格=價(jià)格*0.9where庫(kù)存量>=100例4.35把orders表中的“總金額”用該貨品在goods表中的“價(jià)格”與在orders表中的訂貨“數(shù)量”的乘積代替,并顯示修改后的記錄。updateordersset總金額=價(jià)格*數(shù)量

fromgoodswhereorders.貨品名稱=goods.貨品名稱selecta.貨品名稱,a.價(jià)格,b.數(shù)量,b.總金額

fromgoodsasa,ordersasbwherea.貨品名稱=b.貨品名稱刪除數(shù)據(jù)可以使用DELETE語(yǔ)句從表中刪除滿足指定條件的若干行記錄;也可以使用TRUNCATETABLE語(yǔ)句從表中快速刪除所有記錄。刪除數(shù)據(jù)2、使用TRUNCATE語(yǔ)句1、使用DELETE語(yǔ)句delete表名[from另一表名][where條件表達(dá)式]truncatetable表名快速刪除方法,delete語(yǔ)句在刪除每一行時(shí)都要記錄日志,truncate則通過釋放表數(shù)據(jù)頁(yè)面的方法來(lái)刪除表中數(shù)據(jù),只記錄數(shù)據(jù)頁(yè)面的釋放操作,并且刪除的數(shù)據(jù)是不可恢復(fù)的,而delete還可以通過事務(wù)回滾來(lái)恢復(fù)刪除的數(shù)據(jù)。例4.36刪除goods表中的所有記錄。deletegoods例4.37刪除goods表中的未知定價(jià)的記錄。deletegoodswhere價(jià)格isnull例4.38刪除orders表中地址為重慶的客戶訂貨記錄。deleteordersfromcustomerswhereorders.客戶編號(hào)=customers.客戶編號(hào)

and地址='重慶'例4.39刪除orders表中的所有訂單。truncatetableorders使用企業(yè)管理器查詢與更新記錄

選擇“打開表”的“查詢”命令,顯示“查詢?cè)O(shè)計(jì)器”窗口:關(guān)系圖窗格、網(wǎng)格窗格、SQL窗格和結(jié)果窗格更改查詢類型:選擇:SELECT……FROM

從中插入:INSERT……SELECT

插入到:INSERT……VALUES

更新:UPDATE

刪除:DELETE

創(chuàng)建表:SELECT……INTO……FROM查詢更新記錄演示使用企業(yè)管理器查詢與更新記錄…總結(jié)使用select語(yǔ)句實(shí)現(xiàn)查詢簡(jiǎn)單查詢統(tǒng)計(jì)多表聯(lián)合查詢:交叉連接、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論