SQLSERVER教程(數(shù)據(jù)庫應(yīng)用部分)_第1頁
SQLSERVER教程(數(shù)據(jù)庫應(yīng)用部分)_第2頁
SQLSERVER教程(數(shù)據(jù)庫應(yīng)用部分)_第3頁
SQLSERVER教程(數(shù)據(jù)庫應(yīng)用部分)_第4頁
SQLSERVER教程(數(shù)據(jù)庫應(yīng)用部分)_第5頁
已閱讀5頁,還剩95頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

整理為word格式整理為word格式整理為word格式SQLServer初步SQLServer的簡介什么是SQLServerSQL:StructuredQueryLanguageSQLSERVER是一個以客戶/服務(wù)器(c/s)模式訪問、使用Transact-SQL語言的關(guān)系型數(shù)據(jù)庫管理子統(tǒng)(RDBMS)。SQLServer是一種基于網(wǎng)絡(luò)的大型數(shù)據(jù)庫軟件。主要是用SQL語言來管理、修改、和修改數(shù)據(jù)庫。主要運算在WINNT、WIN2000、也可運行在WIN9X上的一種DBMS。SQLServer2000的主要版本及發(fā)布時間主要版本有個人(Personal)版、企業(yè)版(EnterPrise)、標(biāo)準(zhǔn)版和開發(fā)版等。個人版:最多連接5個用戶,可安裝在WINDOWS98、XP、WIN2000。企業(yè)版:可連接1000個用戶,需安裝在WIN2000服務(wù)版上。SQLServer2000的發(fā)布時間1988年MICROSOFT&SYBASE合作開發(fā)1993年NT3.1平臺上的SQLSERVER4.21994年中止合作獨自開發(fā)1995年SQLSERVER6.01996年SQLSERVER6.51998年SQLSERVER7.02000年SQLSERVER20002005年SQLSERVER2005SQLSERVER2008將于2008年初上市整理為word格式整理為word格式整理為word格式SQLServer的安裝運行安裝盤上的AUTORUN.EXE。SQL語言的特點1、SQL具有自含式與嵌入式兩種形式交互式SQL:一般DBMS都提供聯(lián)機交互工具,用戶可直接鍵入SQL命令對數(shù)據(jù)庫進行操作由DBMS來進行解釋嵌入式SQL:能將SQL語句嵌入到高級語言(宿主語言),使應(yīng)用程序充分利用SQL訪問數(shù)據(jù)庫的能力、宿主語言的過程處理能力,一般需要預(yù)編譯,將嵌入的SQL語句轉(zhuǎn)化為宿主語言編譯器能處理的語句SQL的語法結(jié)構(gòu)基本一致2、SQL具有語言簡潔、易學(xué)易用的特點3、SQL支持三級模式結(jié)構(gòu)一個SQL數(shù)據(jù)庫的總體邏輯結(jié)構(gòu)是基本表(Table)的集合,對應(yīng)于概念模式SQL數(shù)據(jù)庫的底層存儲結(jié)構(gòu)采用文件,一個或幾個表對應(yīng)一個存儲文件,以及索引文件,對應(yīng)內(nèi)模式用戶所見的數(shù)據(jù)結(jié)構(gòu)是視圖(View),用戶可直接操作的表,可為視圖或部分基本表。對應(yīng)外模式SQLSQL視圖1視圖2基本表1基本表2基本表3基本表4存儲文件1存儲文件4外模式模式內(nèi)模式存儲文件2存儲文件3整理為word格式整理為word格式整理為word格式主要組件由企業(yè)管理器、查詢分析器、服務(wù)管理器等組成。服務(wù)管理器SQLServer服務(wù)管理器(ServiceManager)是在服務(wù)器端實際工作時最有用的實用程序。SQLServer服務(wù)管理器的主要作用是用來啟動數(shù)據(jù)庫服務(wù)器的實時服務(wù)、暫停和停止正在運行的服務(wù),或在暫停服務(wù)后繼續(xù)服務(wù)。企業(yè)管理器企業(yè)管理器(EnterpriseManager:EM)是SQLServer中一個很重要的插件,它通過GUI(圖形用戶界面)環(huán)境管理SQLServer。層次:根目錄、服務(wù)器組、服務(wù)器。每一個服務(wù)器的名稱由以下幾項組成:名稱、數(shù)據(jù)庫、數(shù)據(jù)轉(zhuǎn)換服務(wù)、管理、復(fù)制、安全性、支持服務(wù)、MetaDataService等。建立服務(wù)器組在企業(yè)管理器中,可以連接與管理多個服務(wù)器。服務(wù)器組是用來把比較上相似的SQLSERVER2000服務(wù)器組織在一起的一種方式,如市場部中有4個服務(wù)器,生產(chǎn)部中有6個服務(wù)器,可以將這些服務(wù)器都組織在“SQLSERVER組”中,也可以創(chuàng)建兩個服務(wù)器組,一個叫作“市場”,一個叫做“生產(chǎn)”,這樣比較容易區(qū)分服務(wù)器的作用。服務(wù)器組的建立:右鍵單擊MicrosoftSQLServers或現(xiàn)有服務(wù)器組,從彈出的菜單中選擇“新建服務(wù)器組”。服務(wù)器組的更名:右鍵單擊要更名的服務(wù)器組。建立服務(wù)器首次訪問EM時,第一個任務(wù)是將服務(wù)器注冊。如果在服務(wù)器上運行,則本地服務(wù)器自動在SQLServer組中注冊。整理為word格式整理為word格式整理為word格式通過EM可以添加新服務(wù)器。查詢分析器SQLServer2000的查詢分析器(QueryAnalyzer)可以使用戶交互式地輸入和執(zhí)行各種Transact-SQL語句,并且迅速地查看這些語句的執(zhí)行結(jié)果,來完成對數(shù)據(jù)庫中的數(shù)據(jù)的分析和處理。啟動查詢分析器執(zhí)行企業(yè)管理器的“工具”菜單下的“SQL查詢分析器”命令或執(zhí)行“MicroSoftSQLServer”下的“查詢分析器”。查詢分析器的使用新建查詢文件保存查詢文件使用幫助運行“聯(lián)機叢書”組件。整理為word格式整理為word格式整理為word格式Transact-SQL語言基礎(chǔ)Transact-SQL語言又稱T-SQL是MicroSoft開發(fā)的一種SQL語言。數(shù)據(jù)類型二進制數(shù)據(jù)二進制數(shù)據(jù)以十六進制形式存儲。二進制數(shù)據(jù):固定長度(binary)的或可變長度(varbinary)的二進制數(shù)據(jù)類型。格式:binary[(n)]固定長度的n個字節(jié)二進制數(shù)據(jù)。varbinary[(n)]n個字節(jié)變長二進制數(shù)據(jù)注釋:如果在數(shù)據(jù)定義或變量聲明語句中沒有指定n,默認(rèn)長度為1。declare@b1varbinary(1)set@b1=0x3456select@b1結(jié)果為0x34而:declare@b1varbinaryset@b1=0x3456select@b1結(jié)果也為0x34字符數(shù)據(jù)用來表示一串字符。字符數(shù)據(jù)型分為char、varchar等類型。長度不同時可用varchar類型,但任何項的長度都不能超過8KB。定長使用char類型(最多8KB)。格式:char[(n)]定長為n的字符型數(shù)據(jù)整理為word格式整理為word格式整理為word格式varchar[(n)]最大長度為n的變長字符型數(shù)據(jù)例:declare@char1char(5)set@char1='fff'select@char1注意:如果沒有在數(shù)據(jù)定義或變量聲明語句中指定n,則默認(rèn)長度為1。日期時間數(shù)據(jù)日期時間數(shù)據(jù)類型:用來表示日期與時間,依時間范圍與精確程度可分為DATETIME與SMALLDATETIME兩種。例:’4/01/9812:15:00:00:00PM’,’1:28:29:15:01AM8/17/98’。datetime范圍為1753.1.1-9999.12.31smalldatetime范圍為1900.1.1-2079.6.6該數(shù)據(jù)類型長度固定。數(shù)值型數(shù)據(jù)整型數(shù)據(jù)bigint(-2^63-2^63-1)(8B)。int(-2,147,483,648至2,147,483,647)(4B)。smallint(-32,768至32,767)(2B)。tinyint(0–255)(1B)。定義數(shù)據(jù)時要注意數(shù)據(jù)的范圍。實型數(shù)據(jù)定點數(shù)數(shù)據(jù):使用decimal(numeric)數(shù)據(jù)類型存儲:-1038+1~1038-1格式:decimal[(p[,s])]其中P為總位數(shù),即精度,S為小數(shù)位數(shù)numeric[(p[,s])]若S缺省,則無小數(shù)部分精度存儲字節(jié)數(shù)1-9510-19920-2813整理為word格式整理為word格式整理為word格式29-3817浮點數(shù)數(shù)據(jù):用float型和real型存儲,浮點數(shù)據(jù)只是近似數(shù)據(jù),不一定能準(zhǔn)確表示數(shù)據(jù)。其中:Float:-1.79E+308~1.79E+308Real:-3.4E+38~3,4E+38格式:float(real)[(n)]n為用于存儲科學(xué)記數(shù)法float數(shù)尾數(shù)的位數(shù)貨幣數(shù)據(jù)貨幣數(shù)據(jù)類型用于貨幣值。分為money和smallmoney類型。精確度為四位小數(shù)。money:-922,337,203,685,477.5808~922,337,203,685,477.5807)(8B)。Smallmoney:-214,748.3648~214,748.3647(4B)。特殊數(shù)據(jù)類型bit數(shù)據(jù)類型只能包括0或1??梢杂胋it數(shù)據(jù)類型代表TRUE或FALSE、YES或NO。文本和圖像數(shù)據(jù)類型文本(text):用來處理可變長的大文本數(shù)據(jù),其中text可存儲2GB。圖像(image):用來處理圖像數(shù)據(jù),可存儲2GB。例如,必須將一個有關(guān)用戶信息的大文本文件(.txt)導(dǎo)入到SQLServer數(shù)據(jù)庫中。應(yīng)將這些數(shù)據(jù)作為一個數(shù)據(jù)塊存儲起來,而不是集成到數(shù)據(jù)表的多個列中。為了達到這個目的,可以創(chuàng)建一個text數(shù)據(jù)類型的列。然而,如果必須存儲當(dāng)前作為標(biāo)記圖象文件格式(TIFF)圖像(.tif)存儲的、每個大小為10KB的公司徽標(biāo),則需創(chuàng)建一個image數(shù)據(jù)類型的列。變量變量分為局部變量和全局變量,但使用前必須使用DECLARE聲明整理為word格式整理為word格式整理為word格式局部變量Transact-SQL局部變量是可以保存特定類型的單個數(shù)據(jù)值的對象,還可以保存程序執(zhí)行過程中的中間數(shù)據(jù)值,保存由存儲過程返回的數(shù)據(jù)值等。輸出變量的值:格式:select@變量名或Print@變量名聲明局部變量格式:DECLARE@變量名類型[(長度)][,…]作用:聲明變量并將變量初始化為NULL變量賦值可通過SET語句和SELECT語句對局部變量賦值。格式:SET@變量名=表達式SELECT@變量名=表達式全局變量全局變量是由系統(tǒng)提供且預(yù)先聲明的變量,通過在名稱前保留兩個(@@)符號區(qū)別于局部變量。全局變量在整個SQLServer系統(tǒng)內(nèi)使用。存儲的通常是一些SQLServer的配置設(shè)定值和統(tǒng)計數(shù)據(jù)。在使用全局變量時應(yīng)該注意以下幾點:全局變量是在服務(wù)器級定義的。用戶只能使用預(yù)先定義的全局變量。引用全局變量時,必須以標(biāo)記符“@@”開頭。全局變量對用戶來說是只讀的。局部變量的名稱不能與全局變量的名稱相同。如:@@SERVERNAME給出服務(wù)器名@@ROWCOUNT給出最近一個SELECT影響的行數(shù)整理為word格式整理為word格式整理為word格式命令的執(zhí)行與結(jié)果顯示執(zhí)行“查詢”菜單下“執(zhí)行”命令或F5鍵。執(zhí)行“查詢”菜單下的“文本顯示結(jié)果”或“以表格顯示結(jié)果”命令運算符和表達式運算符算術(shù)運算符+-*/%(取模,求余)比較運算符=,>,<,>=,<=,<>,!=(不等于),!>(不大于),!<(不小于)位運算符運算符含義&(按位AND)按位AND(兩個操作數(shù))|(按位OR)按位OR(兩個操作數(shù))^(按位異或XOR)按位互斥OR(兩個操作數(shù)~(按位求反NOT)返回數(shù)字的補數(shù)。邏輯運算符運算符含義ALL如果一系列的比較都為TRUE,那么就為TRUE。AND如果兩個布爾表達式都為TRUE,那么就為TRUE。ANY如果一系列的比較中任何一個為TRUE,那么就為TRUE。BETWEEN如果操作數(shù)在某個范圍之內(nèi),那么就為TRUE。EXISTS如果子查詢包含一些行,那么就為TRUE。IN如果操作數(shù)等于表達式列表中的一個,那么就為TRUE。LIKE如果操作數(shù)與一種模式相匹配,那么就為TRUE。NOT對任何其它布爾運算符的值取反。OR如果兩個布爾表達式中的一個為TRUE,那么就為TRUE。SOME如果在一系列比較中,有些為TRUE,那么就為TRUE。整理為word格式整理為word格式整理為word格式字符串串聯(lián)運算符字符串串聯(lián)運算符允許通過加號“+”進行字符串串聯(lián)表達式SQLSERVER中表達式非常豐富,除了以上表達式外,還CASE表達式等,用于復(fù)雜情況。函數(shù)字符串函數(shù)ASCII功能:返回字符表達式最左端字符的ASCII代碼值。格式:ASCII(character_expression)CHAR功能:將ASCII值轉(zhuǎn)換為字符函數(shù)。格式:CHAR(integer_expression)參數(shù):integer_expression介于0和255之間的整數(shù)。如果整數(shù)表達式不在此范圍內(nèi),將返回NULL值。例:顯示ASCII字符declare@iastinyintset@i=32while@i<126begin設(shè)置語句塊,相當(dāng)于循環(huán)體printchar(@i)set@i=@i+1end整理為word格式整理為word格式整理為word格式LEN功能:返回給定字符串表達式的字符(而不是字節(jié))個數(shù),其中不包含尾部空格。格式:LEN(string_expression)參數(shù):string_expression要計算的字符串表達式。例:SELECTLEN('CompanyName')LEFT和RIGHT功能:LEFT為左取子串函數(shù)格式:LEFT(character_expression,integer_expression)功能:RIGHT為右取子串函數(shù):格式:RIGHT(character_expression,integer_expression)例:SELECTLEFT('ABCDEFG',5)LOWER和UPPER格式:LOWER(character_expression)日期和時間函數(shù)。DATEADD功能:在向指定日期加上一段時間的基礎(chǔ)上,返回新的datetime值。格式:DATEADD(datepart,number,date)日期部分縮寫Yearyy,yyyyquarterqq,qMonthmm,mdayofyeardy,yDaydd,dWeekwk,wwHourhh整理為word格式整理為word格式整理為word格式minutemi,nsecondss,smillisecondms例:SELECT“出生日期”=csrq,”周年”=DATEADD(year,1,csrq)fromstudentDATEDIFF功能:給出兩個日期之間的差值。格式::DATEDIFF(datepart,startdate,enddate)例:檢索所有學(xué)生的年齡:SELECTDATEDIFF(YEAR,CSRQ,GETDATE())ASAGE,CSRQFROMSTUDENTDAY、MONTH、YEAR格式:DAY(date)功能:取指定日期的日格式:MONTH(date)功能:取指定日期的月格式:YEAR(date)功能:取指定日期的年例:檢索所有學(xué)生的年齡:SELECTYEAR(GETDATE())-YEAR(CSRQ)ASAGEFROMSTUDENTGETDATE格式:GETDATE()功能:取當(dāng)前系統(tǒng)日期和時間整理為word格式整理為word格式整理為word格式數(shù)值函數(shù)CEILING功能:返回大于或等于所給數(shù)字表達式的最小整數(shù)。格式:CEILING(numeric_expression)例:SELECTCEILING(123.45),CEILING(-123.45),CEILING(0.0)FLOOR功能:返回小于或等于所給數(shù)字表達式的最大整數(shù)。格式:FLOOR(numeric_expression)例:SELECTFLOOR(123.45),FLOOR(-123.45)POWER作用:返回給定表達式乘指定次方的值。語法:POWER(numeric_expression,y)RAND返回0到1之間的隨機float值。語法RAND()declare@aasfloatset@a=rand()print@aEXP返回所給的float表達式的指數(shù)值。語法:EXP(float_expression)CONVERT函數(shù)功能:將某種數(shù)據(jù)類型的表達式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CAST和CONVERT提供相似的功能。格式:CONVERT(data_type,expression)整理為word格式整理為word格式整理為word格式CAST(expressionASdata_type)例:selectconvert(char(6),567)系統(tǒng)函數(shù)返回數(shù)據(jù)庫和數(shù)據(jù)庫對象的特性信息。COL_LENGTH功能:返回列的定義長度(以字節(jié)為單位)。格式:COL_LENGTH('table','column')參數(shù):'table':表名稱,Column:列名稱DB_NAME在master數(shù)據(jù)庫中,記錄了SQLServer系統(tǒng)的所有系統(tǒng)級別信息。它記錄所有的登錄帳戶和系統(tǒng)配置設(shè)置及所有其它的數(shù)據(jù)庫的信息,其中包括數(shù)據(jù)庫文件的位置。功能:返回數(shù)據(jù)庫名。語法:DB_NAME(database_id)參數(shù):database_id,是應(yīng)返回數(shù)據(jù)庫的標(biāo)識號(ID)。例:USEmasterSELECTdbid,DB_NAME(dbid)ASDB_NAMEFROMsysdatabasesDB_ID功能:返回數(shù)據(jù)庫標(biāo)識(ID)號。格式:DB_ID(['database_name'])參數(shù):'database_name',數(shù)據(jù)庫名,如果不填database_name,則返回當(dāng)前數(shù)據(jù)庫ID。例:此例檢查在sysdatabases中的每個數(shù)據(jù)庫,使用數(shù)據(jù)庫名來確定數(shù)據(jù)庫ID。USEmaster整理為word格式整理為word格式整理為word格式SELECTname,DB_ID(name)ASDB_IDFROMsysdatabasesHOST_NAME功能:返回工作站名稱。語法:HOST_NAME()返回類型:nchar例:selectHOST_NAME()整理為word格式整理為word格式整理為word格式數(shù)據(jù)庫的創(chuàng)建與管理數(shù)據(jù)庫概述數(shù)據(jù)庫是相關(guān)的多維數(shù)據(jù)集及其所共享的對象的容器。這些對象包括數(shù)據(jù)源(表)、表、視圖、規(guī)則、角色、存儲過程、自定義函數(shù)等。如果多個多維數(shù)據(jù)集要共享這些對象,那么這些對象和多維數(shù)據(jù)集必須在同一個數(shù)據(jù)庫中。在對象層次結(jié)構(gòu)中,數(shù)據(jù)庫直接從屬于分析服務(wù)器。因此,在安裝分析服務(wù)器后,第一個要創(chuàng)建的對象就是數(shù)據(jù)庫。數(shù)據(jù)庫可以在"數(shù)據(jù)庫"對話框中進行創(chuàng)建數(shù)據(jù)庫的文件組成數(shù)據(jù)庫可由三種文件組成,主文件(.MDF)、次要數(shù)據(jù)文件(.ndf)、日志文件(.LDF),在SQLServer中,數(shù)據(jù)庫必須至少包含一個主文件和一個事務(wù)日志文件。主要數(shù)據(jù)文件該文件包含數(shù)據(jù)庫的啟動信息,并用于存儲數(shù)據(jù)。每個數(shù)據(jù)庫都有一個主文件。主文件的擴展名為.mdf。次要文件這些文件含有不能置于主要數(shù)據(jù)文件中的所有數(shù)據(jù)。如果主文件可以包含數(shù)據(jù)庫中的所有數(shù)據(jù),那么數(shù)據(jù)庫就不需要次要數(shù)據(jù)文件。有些數(shù)據(jù)庫可能足夠大故需要多個次要數(shù)據(jù)文件,或使用位于不同磁盤驅(qū)動器上的輔助文件將數(shù)據(jù)擴展到多個磁盤。次要文件可有多個。次要文件的擴展名為.ndf日志文件事務(wù)日志文件保存用來恢復(fù)數(shù)據(jù)庫的日志信息。每個數(shù)據(jù)庫必須至少有一個事務(wù)日志文件(盡管可以有多個)。事務(wù)日志文件最小為512KB。整理為word格式整理為word格式整理為word格式數(shù)據(jù)和事務(wù)日志信息從不混合在同一文件中,并且每個文件只能由一個數(shù)據(jù)庫使用。注意:每個數(shù)據(jù)庫至少有兩個文件,一個主文件和一個事務(wù)日志文件。文件組文件組是SQLServer中一個或多個文件的命名集合,它構(gòu)成或分配用于數(shù)據(jù)庫管理的單個單元。文件組允許對文件進行分組,以便于管理和數(shù)據(jù)的分配/放置。例如,可以分別在三個硬盤驅(qū)動器上創(chuàng)建三個文件(Data1.mdf、Data2.ndf和Data3.ndf),并將這三個文件指派到文件組fgroup1中。然后,可以明確地在文件組fgroup1上創(chuàng)建一個表。對表中數(shù)據(jù)的查詢將分散到三個磁盤上,在多處理器中,對同一文件組的不同文件,可以采用多線程并行操作,因而性能得以提高。文件組的分類主文件組此文件組包含主數(shù)據(jù)文件以及任何其它沒有放入其它文件組的文件。系統(tǒng)表都在主文件組。用戶定義文件組該文件組是用CREATEDATABASE或ALTERDATABASE語句中的FILEGROUP關(guān)鍵字指定的任何文件組。默認(rèn)文件組默認(rèn)文件組包含在創(chuàng)建時沒有指定文件組的所有表和索引的頁。在每個數(shù)據(jù)庫中,每次只能有一個文件組是默認(rèn)文件組。如果沒有指定默認(rèn)文件組,則默認(rèn)文件組是主文件組。文件組說明最多可以為每個數(shù)據(jù)庫創(chuàng)建256個文件組。文件組只能包含數(shù)據(jù)文件。事務(wù)日志文件不能是文件組的一部分。整理為word格式整理為word格式整理為word格式文件組不能獨立于數(shù)據(jù)庫文件創(chuàng)建。文件組是在數(shù)據(jù)庫中對文件進行分組的一種管理機制。數(shù)據(jù)庫的創(chuàng)建與管理數(shù)據(jù)庫創(chuàng)建使用創(chuàng)建數(shù)據(jù)庫向?qū)Т蜷_企業(yè)管理器后,選中“數(shù)據(jù)庫”后,執(zhí)行“工具”菜單下的“向?qū)А泵睢J褂闷髽I(yè)管理器打開企業(yè)管理器后,右鍵單擊“數(shù)據(jù)庫”,選擇“新建數(shù)據(jù)庫”命令。使用create命令格式:CREATEDATABASEdatabase_name:數(shù)據(jù)庫文件名ON

[PRIMARY]:指定數(shù)據(jù)文件名,包含主文件和次文件(NAME=logical_file_name,:指定操作系統(tǒng)文件對應(yīng)的邏輯文件名

FILENAME='os_file_name',:指定操作系統(tǒng)文件名,必須給出路徑SIZE=size,:指定文件的大小,默認(rèn)為MB

MAXSIZE=maxsize,:指定文件的最大值

FILEGROWTH=growth_increment):指定文件增長的增量LOGON:指定日志文件(NAME=logical_file_name,

FILENAME='os_file_name',SIZE=size,

MAXSIZE=maxsize,

FILEGROWTH=growth_increment)整理為word格式整理為word格式整理為word格式例如:CREATEDATABASEOrdersONPRIMARY(NAME=Orders_dat,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\Orders.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5%)LOGON(NAME='Orders_log',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\Orderslog.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)例:指定多個數(shù)據(jù)文件和多個事務(wù)日志文件CREATEDATABASEArchiveONPRIMARY(NAME=Arch1,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archdat1.mdf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),Filegroupf1(NAME=Arch2,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archdat2.ndf',SIZE=100MB,整理為word格式整理為word格式整理為word格式MAXSIZE=200,FILEGROWTH=20),Filegroupf2(NAME=Arch3,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archdat3.ndf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)LOGON(NAME=Archlog1,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archlog1.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Archlog2,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\archlog2.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)數(shù)據(jù)庫管理修改數(shù)據(jù)庫方法一:使用企業(yè)管理器右鍵單擊要修改的數(shù)據(jù)庫,選擇屬性命令。方法二:使用ALTERDATABASE命令語法格式:整理為word格式整理為word格式整理為word格式ALTERDATABASEdatabase{ADDFILE<filespec>[,...n][TOFILEGROUPfilegroup_name]:增加數(shù)據(jù)文件|ADDLOGFILE<filespec>[,...n]:增加日志文件|REMOVEFILElogical_file_name:刪除文件|ADDFILEGROUPfilegroup_name:增加文件組|REMOVEFILEGROUPfilegroup_name:刪除文件組|MODIFYFILE<filespec>:修改文件組|MODIFYNAME=new_dbname:修改數(shù)據(jù)庫名|MODIFYFILEGROUPfilegroup_name{filegroup_property|NAME=new_filegroup_name}增大數(shù)據(jù)庫文件ALTERDATABASEOrdersmodifyfile(name='stuman_dat',size=60MB)增加輔助文件ALTERDATABASEstumanaddfile(name=stumanADD,filename='c:\stuman_add.ndf',size=20MB,maxsize=50,filegrowth=20%)從數(shù)據(jù)庫中刪除文件ALTERDATABASEOrdersREMOVEFILEstumanADD整理為word格式整理為word格式整理為word格式增加文件組例:ALTERDATABASEOrdersADDFILEGROUPTest1FG1GOALTERDATABASEOrdersADDFILE(NAME=test1dat3,FILENAME='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\t1dat3.ndf',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB)TOFILEGROUPTest1FG1向數(shù)據(jù)庫中添加日志文件ALTERDATABASEOrdersADDLOGFILE(NAME=test1log2,FILENAME='c:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\test2log.ldf',SIZE=5MB,MAXSIZE=100MB,FILEGROWTH=5MB)整理為word格式整理為word格式整理為word格式刪除數(shù)據(jù)庫使用企業(yè)管理器使用DROP命令DROPDATABASE從MicrosoftSQLServer刪除一個或多個數(shù)據(jù)庫。語法:DROPDATABASEdatabase_name數(shù)據(jù)庫的其它管理導(dǎo)入與導(dǎo)出數(shù)據(jù)庫導(dǎo)入:將其它類型的數(shù)據(jù)文件轉(zhuǎn)換為SQL數(shù)據(jù)庫文件,如將.XLS電子表格導(dǎo)入至SQL中。導(dǎo)出:將SQL數(shù)據(jù)庫轉(zhuǎn)換為其他的數(shù)據(jù)文件。分離與連接數(shù)據(jù)庫SQLSERVER允許用戶斷開數(shù)據(jù)庫的連接,以后再連接數(shù)據(jù)庫。這為數(shù)據(jù)庫的復(fù)制和攜帶提供了條件,當(dāng)然,更多的是創(chuàng)建可移動數(shù)據(jù)庫,以使在不同介質(zhì)上移動數(shù)據(jù)庫。分離數(shù)據(jù)庫方法一:使用企業(yè)管理器右鍵單擊要分離的數(shù)據(jù)庫名,在“所有任務(wù)”中選擇“分離數(shù)據(jù)庫”方法二:使用sp_detach_db命令格式:sp_detach_DB數(shù)據(jù)庫名功能:斷開指定數(shù)據(jù)庫的連接,此時要求此數(shù)據(jù)庫沒有被使用。Sp_detach_dbstuman整理為word格式整理為word格式整理為word格式連接數(shù)據(jù)庫方法一:使用企業(yè)管理器右鍵單擊空白區(qū)域,選擇“附加數(shù)據(jù)庫”命令方法二:使用sp_attach_db命令格式:sp_attach_db[@dbname=]'數(shù)據(jù)庫名'

,[@filename1=]'數(shù)據(jù)文件名'[,...16]如:將上例分離出去的STUMAN庫與SQLSERVER連接。sp_attach_dbstuman,@filename1='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\stu.MDF',@filename2='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\stu.lDF'方法三:使用CREATEDATABASE命令格式:CREATEDATABASE數(shù)據(jù)庫名ONPRIMARY(FILENAME=‘?dāng)?shù)據(jù)文件名’)LOGON(FILENAME=‘事務(wù)日志文件名’)FORATTACH例:createdatabasesmonprimary(filename='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\stuman.MDF')LOGON(FILENAME='C:\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\FORATTACH數(shù)據(jù)庫的備份與恢復(fù)數(shù)據(jù)庫備份是一個復(fù)雜的過程,其主要目的有二:(1)當(dāng)當(dāng)前數(shù)據(jù)遭到意外破壞時,可以啟用后備數(shù)據(jù)庫(2)為了從一臺機器到另一臺機器所進行的數(shù)據(jù)傳輸整理為word格式整理為word格式整理為word格式數(shù)據(jù)庫的備份包括靜態(tài)備份和動態(tài)備份,完全備份、增量備份及日志備份等,在此只講述數(shù)據(jù)庫的簡單備份。備份在企業(yè)管理器右擊要備份的數(shù)據(jù)庫,在出現(xiàn)的菜單中選擇“所有任務(wù)/備份數(shù)據(jù)庫”,按要求操作即可。恢復(fù)在企業(yè)管理器中右擊,在出現(xiàn)的菜單中選擇“所有任務(wù)/還原數(shù)據(jù)庫”,按要求操作即可。系統(tǒng)數(shù)據(jù)庫及樣本數(shù)據(jù)庫SQLServer系統(tǒng)有四個系統(tǒng)數(shù)據(jù)庫,它們用于支持SQLServer操作,安裝應(yīng)用程序會自動生成。系統(tǒng)數(shù)據(jù)庫包含元數(shù)據(jù),即關(guān)于數(shù)據(jù)的數(shù)據(jù),這些系統(tǒng)數(shù)據(jù)庫都是不能刪除的。master數(shù)據(jù)庫記錄SQLServer系統(tǒng)的所有系統(tǒng)級別信息。它記錄所有的登錄帳戶和系統(tǒng)配置設(shè)置、系統(tǒng)存儲過程和其他數(shù)據(jù)庫的存儲性,另外還記錄所有其它的數(shù)據(jù)庫,其中包括數(shù)據(jù)庫文件的位置。如果master數(shù)據(jù)庫被破壞,則SQLServer將無法運行,因此必須經(jīng)常備份master數(shù)據(jù)庫。Sysdatabases表:是存儲在master數(shù)據(jù)庫中的一個非常重要的表,它記錄了SQLServer上的所有數(shù)據(jù)庫信息,每個數(shù)據(jù)庫在表中占一行。tempdb數(shù)據(jù)庫tempdb數(shù)據(jù)庫保存所有的臨時表和臨時存儲過程。tempdb數(shù)據(jù)庫在SQLServer每次啟動時都重新創(chuàng)建,臨時表和存儲過程在連接斷開時自動除去。整理為word格式整理為word格式整理為word格式model數(shù)據(jù)庫model數(shù)據(jù)庫用作在系統(tǒng)上創(chuàng)建的所有數(shù)據(jù)庫的模板。當(dāng)執(zhí)行CREATEDATABASE語句時,新數(shù)據(jù)庫通過復(fù)制model數(shù)據(jù)庫中的內(nèi)容創(chuàng)建。msdb數(shù)據(jù)庫Msdb數(shù)據(jù)庫保存SQLServerAgent(代理)的信息,此數(shù)據(jù)庫存儲處理作業(yè)、備份、警告信息。另外還有兩個示例數(shù)據(jù)庫NORTHWIND和PUBS。練習(xí):1、請創(chuàng)建名稱為“studentmanager”的數(shù)據(jù)庫,要求如下:(1)數(shù)據(jù)文件建立在主文件組中。(2)主數(shù)據(jù)文件邏輯文件名為“stuman_dat”,物理文件名為“stuman_dat.mdf”,事務(wù)日志文件邏輯文件名為“stuman_log”,物理文件名為“stuman_log.log”,都存儲在E:\SQL文件下。(3)數(shù)據(jù)文件及事務(wù)文件初始值為2M,每次可增長1M,最大值為10M。(4)使用SQL命令完成。2、添加一個GROUP1文件組,并在該文件組中添加一個數(shù)據(jù)文件,邏輯文件名為stuman_dat1,物理文件為stuman_dat1.ndf,存儲在d:\。3、將數(shù)據(jù)庫更名為“stumansys”。整理為word格式整理為word格式整理為word格式表的創(chuàng)建和管理創(chuàng)建表SQLSERVER2000中的存儲有一定限制,但我們通常不會達到這個極限,表中的列限于1024列,行中字節(jié)數(shù)限于8060B(每個頁面為8K,但每個頁面都包括一個132字節(jié)的頁面頭)。但是,圖形之類的數(shù)據(jù)類型可以存放到2GB,因為這類數(shù)據(jù)存放在數(shù)據(jù)行之外的另一數(shù)據(jù)頁中。表中的行數(shù)只受存儲空間的限制,是物理限制而不是數(shù)據(jù)庫限制。對表的建立,可使用企業(yè)管理器,也可使用T-SQL語句完成。用企業(yè)管理器建立表的結(jié)構(gòu)用CREATETABLE命令建立表的結(jié)構(gòu)使用CREATETABLE語句創(chuàng)建表的簡單語法如下:CREATETABLE[[數(shù)據(jù)庫名.]表所有者.]表名({列名數(shù)據(jù)類型}[NULL|NOTNULL][,……])[ON{文件組名|DEFAULT}]說明:(1)表名最多由128個字符組成(2)表均是在特定數(shù)據(jù)庫上創(chuàng)建,創(chuàng)建表時,可直接指定數(shù)據(jù)庫名和表所有者。CREATETABLESTUMAN.DBO.TT(…)否則要用以下兩種方法指定其所屬數(shù)據(jù)庫:A.使用USE命令先打開數(shù)據(jù)庫B.通過工具欄選取當(dāng)前數(shù)據(jù)庫整理為word格式整理為word格式整理為word格式(3)NULL/NOTNULL:指定該列是否可以取空值4)在建表前,如果不知道是否有同名表存在,可以使用OBJECT_ID(表名)是否為空的方式判斷該表是否存在。ifobject_id('dbo.tt')isnullcreatetablett(namechar(1))其中OBJECT_ID(表名)為返回對象的標(biāo)識號。自動獲取列值創(chuàng)建表后,要以往表中添加行,一般情況下,添加行時,應(yīng)為每一列指定值,但可使用以下方法自動獲取列值。使用列表達式創(chuàng)建表時使用列表達式的語法如下:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名([……,]{列名AS列表達式}[,……])此時,該列不用再指定數(shù)據(jù)類型。在企業(yè)管理器中添加相應(yīng)列后,右鍵單擊選擇“運行”即可見結(jié)果。如:CREATETABLESTUDENT1(NAMECHAR(8),BIRTHDAYSMALLDATETIME,AGEASYEAR(GETDATE())-YEAR(BIRTHDAY))指定默認(rèn)值方法一:在創(chuàng)建表時指定默認(rèn)值:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名整理為word格式整理為word格式整理為word格式({列名數(shù)據(jù)類型}[NULL|NOTNULL][DEFAULT常量表達式][,……])例:CREATETABLESTUDENT2(NAMECHAR(8),COLLEGECHAR(20)DEFAULT‘黑龍江八一農(nóng)墾大學(xué)’)方法二:先創(chuàng)建默認(rèn)值對象,再綁定到表中的某一列上。創(chuàng)建默認(rèn)值對象的格式如下:CREATEDEFAULT默認(rèn)值對象名AS常量表達式綁定到指定列上的格式為:SP_BINDEFAULT默認(rèn)值對象名,‘表名.列名’例:CREATEdefaultyx1as'信息技術(shù)學(xué)院'Go‘此處必須入GO命令,否則系統(tǒng)會把后續(xù)命令作為默認(rèn)值的一部分,從而產(chǎn)生錯誤sp_bindefault'yx1','student2.yxmc'取消(解除)綁定:Sp__unbindefault‘表名.列名’刪除默認(rèn)值對象:DROPDEFAULT默認(rèn)值對象名標(biāo)識列每個表中只能創(chuàng)建一個標(biāo)識符列。如果為該列指定IDENTITY屬性,則該列的值由系統(tǒng)根據(jù)標(biāo)識特性產(chǎn)生。標(biāo)識特性包括種子值和增量值,第一行的表列的值作為種子值,而相鄰兩行的差值為增量值。格式:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名({列名數(shù)據(jù)類型}整理為word格式整理為word格式整理為word格式[IDENTITY(種子值,增量值)NOTNULL][,……])注意:1)一個表只能有一列定義為IDENTITY屬性,而且該列必須以decimal、int、numeric、smallint、bigint或tinyint數(shù)據(jù)類型定義。2)可指定種子和增量值。二者的默認(rèn)值均為1。3)標(biāo)識符列不允許空值,也不能包含DEFAULT定義。4)可以使用IDENT_SEED('表名')函數(shù)獲得IDENTITY的初始值,也可以通過IDENT_INCR('表名')獲得IDENTITY的增量值例:CREATETABLESTUDENT2(NAMECHAR(8),COLLEGENCHAR(20)DEFAULT'黑龍江八一農(nóng)墾大學(xué)',snointidentity(101,1)notnull)CHECK檢查約束檢查約束即指定列的取值范圍。指定檢查約束有三種方法:使用企業(yè)管理器在創(chuàng)建表時通過屬性/CHECK約束創(chuàng)建。定義列時指定檢查約束,此時不必指定約束名,由系統(tǒng)自定義約束名創(chuàng)建表時在定義列時指定檢查約束的語法如下:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名({列名數(shù)據(jù)類型}[NULL|NOTNULL]CHECK(邏輯表達式)[,……])整理為word格式整理為word格式整理為word格式例:createtablestudent3(namechar(8),cjtinyintcheck(cj>60))自命名檢查約束創(chuàng)建表時單獨創(chuàng)建檢查約束的語法如下:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名({列名數(shù)據(jù)類型}[NULL|NOTNULL][,……][CONSTRAINT約束名][CHECK(邏輯表達式1[AND|OR……])])例:createtablestudent3(namechar(8),cjsmallintconstraintcheck_id1check(cjbetween60and90),csrqsmalldatetime)定義主關(guān)鍵字主關(guān)鍵字又稱為主鍵(PK),它是指唯一標(biāo)識表中的所有行的一個列或多個列。主鍵也強制執(zhí)行唯一性。不能在主鍵列中輸入NULL值。每個表都應(yīng)有一個主鍵。候選鍵(candidatekey):表中可以有不止一個鍵唯一標(biāo)識行,每個鍵都稱作候選鍵。整理為word格式整理為word格式整理為word格式使用企業(yè)管理器創(chuàng)建使用T-SQL語句創(chuàng)建創(chuàng)建表時定義主關(guān)鍵字的語法如下:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名({列名數(shù)據(jù)類型}[NULL|NOTNULL][,……][PRIMARYKEY(主關(guān)鍵字列1[,……])])例:createtablestudent4(xhchar(11),kchchar(4),scoretinyintprimarykey(xh,kch))定義外關(guān)鍵字外關(guān)鍵字即外部鍵,創(chuàng)建表時定義外關(guān)鍵字的語法如下:CREATETABLE[[數(shù)據(jù)庫名.]數(shù)據(jù)所有者.]表名({列名數(shù)據(jù)類型}[NULL|NOTNULL][,……]FOREIGNKEY<約束名>[(列名[,……])]REFERENCES參照表[(參照列[,……])])整理為word格式整理為word格式整理為word格式注意:(1)外關(guān)鍵字對本關(guān)系不一定是鍵(2)創(chuàng)建外關(guān)鍵字前,鏈接表的主關(guān)鍵字已經(jīng)建立。(3)當(dāng)創(chuàng)建外部鍵后,外部鍵的取值必須來源于主鍵值。createtablescore1(xhchar(11),kchchar(3),scoretinyint,foreignkey(xh)referencesstudent(xh),foreignkey(kch)referencescourse(kch))也可如下定義某列的外部鍵:createtablescore1(xhchar(11),kchchar(3)referencescourse(kch),scoretinyint,foreignkey(xh)referencesstudent(xh),)UNIQUE約束在列集內(nèi)強制執(zhí)行值的唯一性。對于UNIQUE約束中的列,不允許有兩相同的非空值。且只能有一個非空值。一個表可以有多個UNIQUE約束。若某列定義了唯一性約束,則SQLServer會自動在該列上創(chuàng)建索引。例:createtablescore1(xhchar(11),kchchar(3)referencescourse(kch),scoretinyintunique,整理為word格式整理為word格式整理為word格式foreignkey(xh)referencesstudent(xh),)改變表的結(jié)構(gòu)使用企業(yè)管理器修改表的外關(guān)鍵字和檢查約束,可利用設(shè)計表中的“屬性”功能。(1)創(chuàng)建外部鍵,使用“關(guān)系”選項卡。(2)創(chuàng)建唯一性約束和索引,使用“索引/鍵”選項卡,(3)創(chuàng)建檢查約束,使用“check約束”選項卡。使用ALTERTABLE命令添加列使用ALTERTABLE命令添加新列的簡單語法:ALTERTABLE表名ADD列名數(shù)據(jù)類型[[DEFAULT常量表達式]|[IDENTITY|NULL][,……]例:altertablestudent2addcsrqsmalldatetime,ageint刪除列使用ALTERTABLE命令從表中刪除列的語法如下:ALTERTABLE表名整理為word格式整理為word格式整理為word格式DROPCOLUMN列名[,……]例:altertablestudent2DROPCOLUMNcsrq,age注意:有些列不能刪除,如索引列及有約束的列等,而且一個表不能超過1024列。修改列的數(shù)據(jù)類型使用ALTERTABLE語句調(diào)整列的語法如下:ALTERTABLE表名ALTERCOLUMN列名{新數(shù)據(jù)類型[(數(shù)據(jù)精度[,寬度])][NULL|NOTNULL]}例:altertablestudent2altercolumnagechar(2)注意:并非任何情況下都允許修改列的數(shù)據(jù)類型,下列情況下不允許修改:數(shù)據(jù)類型為TEXT、IMAGE、NTEXT等表的ROWGUIDCOL列(全局唯一約束)用列表達式定義的列用于復(fù)制的列主關(guān)鍵字列或被其他表引用為外關(guān)鍵字的列用于檢查約束或唯一性約束的列綁定了默認(rèn)值的列包含在索引中的列更改列名使用系統(tǒng)存儲過程sp_rename修改列名的語法如下:sp_rename[@objname=]'[[[數(shù)據(jù)庫名.]表所有者.]表名.舊列名',[@newname=]'新列名',整理為word格式整理為word格式整理為word格式[@objtype=]'COLUMN'例:sp_rename'student2.age','NL'更改表名使用系統(tǒng)存儲過程sp_rename修改表名的語法如下:sp_rename[@objname=]'[[[數(shù)據(jù)庫名.]表所有者.]舊表名',[@newname=]'新表名'[,[@objtype=]'OBJECT']例:sp_rename'stu','student2'向表中添加數(shù)據(jù)使用企業(yè)管理器INSERT命令插入單行記錄使用INSERT語句往表中輸入單行的語法如下:INSERT[INTO]表名(列名1,……,列名n)VALUES(列值1,……,列值n)例:insertintostudent2(csrq,nl)values('20000101',12)使用SELECT插入多行記錄使用SELECT從句輸入表的簡單語法如下:INSERT[INTO]表名(列名1,……,列名n)SELECT兼容列名1,……,兼容列名nFROM兼容表名整理為word格式整理為word格式整理為word格式WHERE邏輯表達式修改和刪除表中的數(shù)據(jù)修改表中數(shù)據(jù)使用企業(yè)管理器使用UPDATE語句格式:UPDATE表名SET列名=“表達式”where條件表達式例:updatestudent2setname='李四'wherename='43'刪除表中的數(shù)據(jù)使用DELETE命令格式:DELETE[from]表名[where條件表達式]說明:當(dāng)可選項缺省時,刪除表中所有數(shù)據(jù)例:deletefromstudent2wherecsrq='1998-05-10'使用TRUNCATE命令格式:TRUNCATETABLE表名功能:刪除表中所有數(shù)據(jù)刪除表使用命令DROPTABLE刪除表定義及該表的所有數(shù)據(jù)。語法整理為word格式整理為word格式整理為word格式DROPTABLEtable_name使用可視化工具練習(xí):(1)在表STUDENT中添加一列,命名默認(rèn)值為當(dāng)前系統(tǒng)時期(2)本學(xué)期,來了一名叫張三的男教師,本科學(xué)歷,職稱為講師,請把該教師信息存入相應(yīng)表中。SELECT查詢語句語法格式格式:SELECTselect_list要查詢的內(nèi)容[INTOnew_table_name]將查詢結(jié)果存入新表中FROMtable_list數(shù)據(jù)的來源表[WHEREsearch_conditions]查詢條件[GROUPBYgroup_by_list]分組查詢[HAVINGsearch_conditions]篩選條件[ORDERBYorder_list[ASC|DESC]]排序FROM子句從多表中選擇字段,使用時要特別注意,兩關(guān)系或多關(guān)系間的隱含條件使用選擇列表選擇所有列usepubsselect*frompublishers選擇特定列usepubsselectxh,xmfromstudent整理為word格式整理為word格式整理為word格式計算列選擇列表可包含通過對一個或多個簡單表達式應(yīng)用運算符而創(chuàng)建的表達式。這使結(jié)果集中得以包含基表中不存在,但是由存儲在基表中的值計算而來的值。這些結(jié)果集列被稱為導(dǎo)出列。SELECTxm,year(getdate())-year(csrq)FROMstudent改變列標(biāo)題第一種形式:字段名AS新列名第二種形式:新列名=表達式或舊列名DISTINCT消除重復(fù)行DISTINCT關(guān)鍵字可從SELECT語句的結(jié)果中除去重復(fù)的行。如果沒有指定DISTINCT,那么將返回所有行,包括重復(fù)的行。TOP子句功能:TOP子句限制返回到結(jié)果集中的行數(shù)。格式:TOPn[percent]使用表別名格式:表名[as]表別名注意:當(dāng)表名中包含空格等特殊字符時,必須用[]括起,當(dāng)setquoted_identifieron時(也可通過工具->選項->連接屬性進行設(shè)置),也可用””括起。WHERE子句該出子句用于確定查詢條件。在WHERE子句中使用的運算符如下表:運算符含義網(wǎng)格窗格示例1BETWEENexpr1

ANDexpr2值的測試范圍。BETWEEN'01Jan1995'AND'31Dec1995'2IS[NOT]NULL測試列的內(nèi)容或表達式的結(jié)果是否為空。ISNULL整理為word格式整理為word格式整理為word格式運算符含義網(wǎng)格窗格示例1[NOT]LIKE執(zhí)行樣式匹配(通常只限于字符數(shù)據(jù)類型)。LIKE('MAC%')expr1[NOT]IN

(val1,val2,...)

或expr1[NOT]IN

(subquery)通過測試expr1在值的列表中還是在子查詢的結(jié)果集中來匹配特定值的列表。IN('SW','SE')supplier_idIN(subquery)ANY(SOME)測試子查詢的結(jié)果集中是否有一行或多行滿足指定的條件。(ANY和SOME是同義詞,當(dāng)創(chuàng)建SQL語句時,查詢設(shè)計器將使用ANY。)<>ANY(subquery)ALL測試子查詢結(jié)果集的所有行是否都滿足指定的條件。advance>ALL(subquery)[NOT]EXISTS測試子查詢是否返回任何結(jié)果(不只是特定的結(jié)果)。EXISTS(subquery)匹配運算符的模式如下:模式含義%匹配包含零個或多個字符的任意字符串。這個通配符既可以用作前綴也可以用作后綴。-匹配任意單個字符,并且可以被用作前綴或后綴[a-d]從a到d中的任一字符[aef]字符a、e、f[^a-d]除了從a到d中的任一字符[^aef]除了字符a、e、f以外的字符例:1、查詢姓張的所有學(xué)生的姓名和入學(xué)成績。selectxm,rxcjfromstudentwherexmlike'張%'學(xué)生姓名中包含“萬”字或“玉”字的學(xué)生信息select*fromxs1wherexmlike'%[萬玉]%'查詢姓名只有兩個字的學(xué)生信息。select*fromstudentwherexmlike'__'xmlike'__'ORDERBY子句對查詢結(jié)構(gòu)進行排序,注意多關(guān)鍵字排序的順序。其一般形式為:整理為word格式整理為word格式整理為word格式ORDERBY列名或ORDERBY列號select*fromstudentorderbyxbdesc,csrqSELECTXH,CJFROMSCOREORDERBY2使用聚合函數(shù)聚合函數(shù)對一組值執(zhí)行計算并返回單一的值。多用于表的查詢中函數(shù)功能格式AVG求平均值A(chǔ)VG(列名)SUM求和SUM(列名)MAX求最大值MAX(列名)MIN求最小值MIN(列名)COUNT統(tǒng)計記錄個數(shù)COUNT(列名)GROUPBY和HAVING子句GROUPBY:按指定關(guān)鍵字進行分組,注意按多關(guān)鍵字進行分組的方法HAVING:在分組的基礎(chǔ)進一步篩選,一般與GROUPBY子句配合使用。值得注意的是:(1)在包含GROUPBY子句的查詢語句中,SELECT出了句后的所有字段列表,除聚合函數(shù),都應(yīng)包含在GROUPBY子句中,否則將出錯。這是因為聚合函數(shù)只產(chǎn)生一個值,而在GROUPBY子句中不包含的列可能有多個值,無法匹配。(2)沒有GROUPBY子句時,不能使用HAVING子句,因為HAVING子句是針對GROUPBY子句的。例:對成績表,查詢各科的最高成績及最低成績。select課程號=kch,最高成績=max(cj),min(cj)as最低成績fromscoregroupbykch例:查詢至少有5人的選修的課程的課程號及選修人數(shù)。selectkch,count(*)ascfromscoregroupbykchhavingcount(*)>=5練習(xí):(1)在STUDENT表中插入一列NL,并填充其值。(2)查詢各年齡段中超過5人的年齡段信息及人數(shù)信息。整理為word格式整理為word格式整理為word格式COMPUTE和COMPUTEBY在SELECT語句中,可以使用COMPUTE子句、COMPUTEBY子句和集合函數(shù)實現(xiàn)對數(shù)據(jù)庫的統(tǒng)計操作。COMPUTE子句使用集合函數(shù)在查詢的結(jié)果中生成匯總行,COMPUTEBY根據(jù)某一列的列值進行分類排序再進行匯總。例:統(tǒng)計所有課程的總學(xué)分和總學(xué)時數(shù)select*fromcoursecomputesum(xf),sum(xs)例:統(tǒng)計各科的平均成績、選修此課程的人數(shù)、最高成績及最低成績select*fromscoreorderbykchcomputeavg(cj),count(kch),max(cj),min(cj)bykch注意:DISTINCT不允許同聚合函數(shù)一起用。COMPUTE子句中的列必須在SELECT后面的選擇列表中。SELECTINTO不能和COMPUTE子句一起使用。若使用了COMPUTEBY子句,則必須使用ORDERBY。連接查詢連接操作是在多表查詢中常用必須使用的一種操作。當(dāng)多表查詢時,必須使用外部鍵作為連接屬性。當(dāng)連接查詢無條件時,為笛卡爾乘積。內(nèi)連接(INNERJOIN)自然連接也叫自然連接,即常規(guī)意義上的連接,其實現(xiàn)形式有兩種:使用關(guān)鍵字INNERJOIN…ONFROM表1[INNER]JOIN表2ON表1.屬性值=表2.屬性值直接表示FROM表1,表2WHERE表1.主鍵值=表2.外鍵值例:查詢所有學(xué)生的姓名及所選修的課程的課程號,可用以下兩種方法完成:selectxm,kchfromstudentinnerjoinscoreonstudent.xh=score.xh整理為word格式整理為word格式整理為word格式或:selectxm,kchfromstudent,scorewherestudent.xh=score.xh例:查詢所有女生的姓名、所選修的課程名及成績。selectxm,kcm,cjfromstudentjoinscoreonstudent.xh=score.xhjoincourseonscore.kch=course.kchwherexbdm='2'或:selectxm,kcm,cjfromstudents,coursec,scorescwherexbdm='2'ands.xh=sc.xhandsc.kch=c.kch外聯(lián)接外聯(lián)接會返回FROM子句中提到的至少一個表的所有行,只要這些行符合任何WHERE條件。將檢索通過左向外聯(lián)接引用的左表的所有行,以及通過右向外聯(lián)接引用的右表的所有行。完整外部聯(lián)接中兩個表的所有行都將返回。左聯(lián)接一般形式:LEFTOUTERJOIN或LEFTJOIN或“*=”不管第一個表中是否有匹配的數(shù)據(jù),結(jié)果將包含第一個表中的所有行。例:查詢所有學(xué)生的學(xué)號、姓名、所選修的課程的課程號及其成績。selectstudent.xh,xm,score.kch,cjfromstudentleftjoinscoreonstudent.xh=score.xh或:selectstudent.xh,xm,score.kch,cjfromstudent,scorewherestudent.xh*=score.xh如果有的學(xué)生沒選修課程,也顯示相應(yīng)結(jié)果,只不過后兩列均為空值。右聯(lián)接一般形式:RIGHTJOIN或RIGHTJOIN或“=*”不管第一個表中是否有匹配的數(shù)據(jù),結(jié)果將包含第二個表中的所有行。全聯(lián)接FULLJOIN整理為word格式整理為word格式整理為word格式若要通過在聯(lián)接結(jié)果中包括不匹配的行保留不匹配信息,使用完整外部聯(lián)接。SQL不管另一個表是否有匹配的值,此運算符都包括兩個表中的所有行。自連接有時需要表和自己進行連接,其一般形式為:FROM表名別名1,表名別名2WHERE別名1.屬性值=別名2.屬性值例:查詢至少選修了兩門課程的學(xué)生的學(xué)號和所選修的課程號。SELECTX.XH,X.KCHFROMSCOREX,SCOREYWHEREX.XH=Y.XHANDX.KCH<>Y.KCH合并數(shù)據(jù)集作用:將兩個或多個查詢結(jié)果組合成一個結(jié)果集。例如:select*fromxs1wherexbdm='1'unionselect*fromxs1wherexbdm='2'注意:(1)UNION中的所有選擇列表必須具有相同的列數(shù),相似的數(shù)據(jù)類型和相同的順序。(2)結(jié)果集中的列名來自第一個SELECT語句。(3)在合并結(jié)果時,缺省將從結(jié)果集中刪除重復(fù)行,若使用ALL,則結(jié)果集中所有的行。練習(xí):查詢計算機系的學(xué)生及入學(xué)成績高于560的學(xué)生信息。查詢至少選修了兩門課的學(xué)生信息。嵌套查詢一般適用于單層查詢不能實現(xiàn)的查詢。在嵌套查詢中常用的運算符有:in、some、any、all、exists、not及關(guān)系運算符等。整理為word格式整理為word格式整理為word格式例:查詢與“張三”同齡的學(xué)生的姓名。例:查詢計算機系沒有選修‘0701’課程的學(xué)生。selectxhfromstudentwherexhnotin(selectxhfromscorewherekch='0701')或selectxhfromstudentwherexh<>all(selectxhfromscorewherekch='0701')練習(xí):查詢STUDENT關(guān)系前3條記錄的信息對STUDENT關(guān)系,查詢姓張的所有學(xué)生的信息查詢不及格的學(xué)生的姓名及科目名稱查詢“關(guān)海鷗”教師所教授的全部課程的課程號查詢“數(shù)據(jù)庫原理與應(yīng)用”課程的學(xué)分對STUDENT關(guān)系,刪除學(xué)號為“20004071101”的學(xué)生記錄求“數(shù)據(jù)庫原理及應(yīng)用”課程的平均分查詢了選修了課程的學(xué)生人數(shù)。(selectcount(distinctxh)fromscore)統(tǒng)計各科的總成績,并用“課程名”和“總成績”作為字段名顯示其信息檢索與“張三”同齡的學(xué)生姓名查詢?nèi)朦h成績最高分的學(xué)生的學(xué)號及入學(xué)成績成績值。索引與視圖索引索引的概念及分類可以利用索引快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一個或多個列(例如,employee表的姓氏(lname)列)的值進行排序的結(jié)構(gòu)。索引提供指針以指向存儲在表中指定列的數(shù)據(jù)值,然后根據(jù)指定的排序次序排列這些指針。數(shù)據(jù)庫使用索引的方式與使用書的目錄很相似:通過搜索索引找到特定的值,然后跟隨指針到達包含該值的行。整理為word格式整理為word格式整理為word格式索引分為唯一索引、簇(CLUSTERED)索引和非簇索引(NONCLUSTERED)。簇索引實際上按索引鍵值排序之后才存儲數(shù)據(jù)。由于表格數(shù)據(jù)只能按一種方法排序,因此每個表只能生成一個簇索引,由于表格按序排列,故查詢效率高。非簇索引非簇索引不按順序排列表格數(shù)據(jù),并且也不要求重排表格,因此一個表格也以生成若干個非簇索引,最多為249個,由于表格不按序排列,故查詢效率低,一般不用。創(chuàng)建索引命令格式CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameONtable(column[ASC|DESC])說明:(1)UNIQUE:為表或視圖創(chuàng)建唯一索引(不允許存在索引值相同的兩行,若存在,則產(chǎn)生錯誤)。不允許為已經(jīng)包含重復(fù)值的列創(chuàng)建唯一索引。(2)CLUSTERED:創(chuàng)建一個簇索引對象,其中行的物理排序與索引排序相同,如果沒有指定CLUSTERED,則創(chuàng)建非簇索引。在創(chuàng)建簇索引時,將會對表進行復(fù)制,對表中的數(shù)據(jù)進行排序,然后刪除原始的表。因此,數(shù)據(jù)庫上必須有足夠的空閑空間,以容納數(shù)據(jù)復(fù)本。(4)NONCLUSTERED:即普通索引,創(chuàng)建一個指定表的邏輯排序的對象。對于非簇索引,行的物理排序獨立于索引排序。(5)建立主鍵時自動建立唯一簇索引整理為word格式整理為word格式整理為word格式刪除索引語法DROPINDEXtable.index視圖視圖可以被看成是虛擬表或存儲查詢。將用戶限定在表中的特定行上。將用戶限定在特定列上。創(chuàng)建視圖定義視圖的查詢不可以包含COMPUTE或COMPUTEBY子句或INTO關(guān)鍵字。不能包含ORDERBY子句。使用視圖向?qū)?chuàng)建視圖在"工具"菜單上單擊"向?qū)?命令。展開"數(shù)據(jù)庫"文件夾。雙擊"創(chuàng)建視圖向?qū)?。完成向?qū)е械牟襟E。用CREATEVIEW命令創(chuàng)建視圖CREATEVIEWview_name[列名…]ASselect_statement當(dāng)無列名時,視圖的列名就是查詢的列名,當(dāng)有列名時,稱其為虛列,它可以是計算列。整理為word格式整理為word格式整理為word格式修改視圖用“ALTERVIEW”命令語法:ALTERVIEWview_nameASselect_statement用“設(shè)計視圖”命令刪除視圖DROP命令DROPVIEW{viewname}[,...n]游標(biāo)關(guān)系數(shù)據(jù)庫中的操作會對整個行集產(chǎn)生影響,由SELECT語句返回的行集包括所有滿足該語句WHERE子句中條件的行。由語句所返回的這一完整的行集被稱為結(jié)果集。應(yīng)用程序,特別是交互式聯(lián)機應(yīng)用程序,并不總能將整個結(jié)果集作為一個單元來有效地處理。這些應(yīng)用程序需要一種機制以便每次處理一行或一部分行。游標(biāo)就是提供這種機制的結(jié)果集擴展。游標(biāo)包括如下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論