




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章Transact-SQL語言rasac語言(事務(wù)L,簡稱L)是 的Lver使用的L語言,它以標準的L為藍本,對其進行了修改和補充,但兩者之間的語法格式以及大部分功能是一樣的。SQL概Transact-SQL數(shù)據(jù)類Transact-SQL變Transact-SQL編程基Transact-SQL函SQL概SQL語言的特SQL語言的組SQL語句的結(jié)常用的SQL語SQL語言的特以多種方式使L語言風格統(tǒng)一,可以完成數(shù)據(jù)庫活動中的全部工作,這為數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)提供了良好的環(huán)境。用戶在數(shù)據(jù)庫系統(tǒng)投入使用之后,還可以根據(jù)需要隨時修改模式結(jié)構(gòu),并且不影響數(shù)據(jù)庫的運行,從而使系統(tǒng)具有良好的可擴展性 實就可以將要求交給系統(tǒng),然后由系統(tǒng)自動完成全部工作雖然語言功能很強大,但是它只有為數(shù)不多的幾條命令。另外,語法也比較簡單,它是一種描述性語言,很接近自然語言,因此容易學習和掌握。SQL語言的組SQL語言的組功數(shù)據(jù)定義語數(shù)據(jù)查詢語實現(xiàn)查詢數(shù)據(jù)數(shù)據(jù)語數(shù)據(jù)控制語表3.1常見SQL語語功語功數(shù)據(jù)定創(chuàng)建一個過創(chuàng)建一個數(shù)據(jù)庫從數(shù)據(jù)庫中刪除過從數(shù)據(jù)庫中刪除創(chuàng)建一個觸發(fā)修改數(shù)據(jù)庫表結(jié)從數(shù)據(jù)庫中刪除觸發(fā)創(chuàng)建一個視創(chuàng)建一個數(shù)據(jù)值從數(shù)據(jù)庫中刪除改變域定為數(shù)據(jù)庫表創(chuàng)建索從數(shù)據(jù)庫中刪除從數(shù)據(jù)庫中刪除索語功語功數(shù)據(jù)控事務(wù)控授予用戶權(quán)回滾當前事用在事務(wù)內(nèi)設(shè)置保存解除用戶權(quán)程序化數(shù)設(shè)定游從數(shù)據(jù)庫表中檢索數(shù)打開一個游向數(shù)據(jù)庫表中添加檢索一行查詢結(jié)從數(shù)據(jù)庫表中刪除數(shù)據(jù)關(guān)閉游更新數(shù)據(jù)庫表中的數(shù)為動態(tài)執(zhí)行準備SQL語動態(tài)執(zhí)行SQL語SQL語句的結(jié)),每一條子句由一個關(guān)鍵字開始SELECTToyNameFROMToysWHERE玩具娃塑料積浙江溫木質(zhì)飛河北唐滑智力拼陜西西浙江溫汽玩具娃滑汽浙江溫玩具娃滑汽常用的SQL語簡單的SELECT語句的語法如下SELECT[ALL︱DISTINCT]<目標表達式FROM<表或視圖名>[,<表或視圖名>]…[WHERE<條件表達式>][GROUPBY<列名[HAVING<條件表達式>] [ORDERBY<列名2>[ASC︱DESC]]玩具娃塑料積浙江溫木質(zhì)飛河北唐滑智力拼陜西西汽浙江溫例3-USESELECTToyId,ToyNameFROM例3-USEToyUniverseSELECT*FROMToys玩具娃塑料積木質(zhì)飛滑智力拼汽玩具娃塑料積浙江溫木質(zhì)飛河北唐滑智力拼陜西西汽浙江溫例3-USESELECTToyId,ToyName,ToyRateFROMToysWHEREToyRate>30ORDERBYToyRate玩具娃娃塑料木浙江溫木質(zhì)機河北唐滑智力圖陜西西玩具娃滑汽滑玩具汽娃Transact-SQL數(shù)據(jù)類功功變量說用來說明變量數(shù)據(jù)定義語大部分是以TE開頭令數(shù)語用來數(shù)據(jù)庫中的數(shù)令數(shù)據(jù)控制語用來控制數(shù)據(jù)庫組件的存限等令、存取流程控制語用于設(shè)計應(yīng)用程序的語句如IFWHILE內(nèi)嵌函說明變量其它命嵌于命令中使用的標準函 SQLServer中每個變量、參數(shù)、表達式等幾大類,如表3.2所示。表3.2SQLServer2005提供的數(shù)據(jù)類型分特殊數(shù)據(jù)類用戶自定義數(shù)據(jù)類
數(shù)據(jù)類 TIMESTAMP、UNIQUEIDENTIFIER、TABLESQL_VARIANT、XML、CURSOR表3.3整數(shù)數(shù)據(jù)類數(shù)據(jù)類說從-231(-2,147,483,648)~231-1(2,147,483,647)之的所有正負整數(shù)。占用4B,共32位,其中1位表示正負號其它31位表示整數(shù)值的長度和大小從-215(-32,768)~215-1(32,767)之間的所有正負整數(shù)占用2B,共16位,其中1位表示正負號,其它15位表示數(shù)值的長度和大小從0~255之間的所有整數(shù)。占用1B,共8位從-263(-9,223,372,036,854,775,807)~263-(9,223,372,06,854,775,807)之間的所有正負整數(shù)。占用8B,共64位,其中1位表示正負號,其它63位表示整數(shù)值的長度和大小。浮點數(shù)據(jù)類型用于十進制小數(shù)。浮點數(shù)值的數(shù)據(jù)在SQLServer中采用上舍入方式進行。如:對3.14159265358979分別進行2位12位舍入,結(jié)果為3.15和3.141592653590表3.4浮點數(shù)數(shù)據(jù)類數(shù)據(jù)類說取值范圍是-3.40E+38~3.40E+38,可精到第7位小數(shù),占用4取值范圍是-1.79E+308~1.79E+308,可確到第15位小數(shù),占用8B注注式。n指定FLOAT數(shù)據(jù)的精度。n為1到15之間的整數(shù)值。當n取1到7時,實際上是定義了一個REAL類型的數(shù)據(jù),系統(tǒng)用4B它;當n取8到15時,系統(tǒng)認為其是FLOAT類型,用8B它。數(shù)據(jù)類型可寫為dial[(p[,s])]的形式,p和確定了精確的比例和數(shù)位。其中度p表示可供 的值的總位數(shù)(不包括小數(shù)點),缺省值為8;s表示小數(shù)點后的位數(shù),缺省值為0。例如ial(15,5),表示共有位數(shù),其中整數(shù)0位,小數(shù)位。注注 DECIMAL和NUMERIC數(shù)據(jù)類型在SQLServer在使用REAL、FLOAT、DECIMAL、時,用戶不能指定其長度,但是可以設(shè)DECIMAL、NUMERIC的精度,進而修改其長度表3.5二進制數(shù)數(shù)據(jù)數(shù)據(jù)類 說 如圖像和文檔時必須指定BINARY類型數(shù)據(jù)的大小,至少作為二進制標識號“0”后添加一個0,如上述的“0xa會被系統(tǒng)自動變?yōu)樵摂?shù)據(jù)類型定義形式為VARBINARY。它與BINARY類型相似,n的取值也為1到該數(shù)據(jù)類型的理論容量為211(2,147,483,647)個字節(jié)。在Lver2005中,將ME類型的數(shù)據(jù)直接存放到表的數(shù)據(jù)行中,而不是存放到不同的數(shù)據(jù)頁中常用來 圖形等。在輸入數(shù)據(jù)時,必須在數(shù)據(jù)前加上字符“0”作為二進制標識。BIT數(shù)據(jù)類型占用1個字節(jié)的空間,視為1。BIT類型不能定義為NULL值。字符數(shù)據(jù)類型可以用來各種字母、數(shù)字符號、特殊符號。一般情況下,使用字符類型數(shù)據(jù)時須在其前后加上單引號(‘1)。字符數(shù)據(jù)類型包括 、、 、 若不指定n值,則系統(tǒng)默認值為1。若輸入數(shù)據(jù)的字符數(shù)小于,則系統(tǒng)自動在其后添加空格來填滿設(shè)定好的空間。若輸入的數(shù)據(jù)過長,將會截掉超出部分。它與CHAR類型相似。不同的是NCHAR數(shù)據(jù)類型n的取值為1到4000。因為NCHAR類型采用UNICODE標準字符集。UNICODE標準規(guī)定每個字符占用兩個字節(jié)的空間。該數(shù)據(jù)類型的定義形式為VARCHAR。它與CHAR類型相似,n的取值也為1到 該數(shù)據(jù)類型的定義形式用UNICODE標準字符集,n的取值為1到這類數(shù)據(jù)類型用 大量的字符 容量理論上為1~2^31-1(2,147,483,647)B, 在SQLServer2005中,TEXT類型的數(shù)NTEXT類型采用UNICODE標準字符集,因此其理論容量為2^30-1(1,07341823)TETIME數(shù)據(jù)類型用于 日期和時間的結(jié)合體。它可以 從公元1753年1月1日零時起到公元 2時5分59秒之間的所有日期和時間,其精確度可達三百分之一秒,即3.33毫秒占用的 空間8B。 后的天數(shù),數(shù)值分正負。如果省略了日期部,則系統(tǒng) 作為日期缺省值后4B用于從此日零時起所指定的時間 2079年6月6日之間的所有日期和時間,精度入。如:DATETIME時間為14:38:30.28時,SMALLDATETIME認為是14:39:00。SMALLDATETIME數(shù)據(jù)類型使用4數(shù)據(jù) 從基礎(chǔ)日期1900年1 與MONEY類似,取值從占用4B任何一個數(shù)據(jù)庫表只能有一個TIMESTAMP 字稱為GUID(GloballyUniqueIdentifier)即全球唯一鑒定號。此數(shù)字由SQLServer的NEWID續(xù)處理。這一新類型使得變量可以一 他任何合法的SQLServer數(shù)據(jù)。該數(shù)據(jù)類型可以 可擴展標記文本數(shù)據(jù)。利用它可將L實例 在表列中或者L類型的變量中。注意儲在L中的數(shù)據(jù) 過2B.該數(shù)據(jù)類型是變量或過程OUTPUT參數(shù)的一種數(shù)據(jù)類型,這些參數(shù)包含對游標的。使用CURSOR數(shù)據(jù)在SQLServer2005中,用戶自定義的數(shù)據(jù)類型是基于系統(tǒng)數(shù)據(jù)類型的(除、SMALLMONEY等)在創(chuàng)建一個用戶定義的數(shù)據(jù)類型時,必須給出以下3部分信息:新數(shù)據(jù)類型名;這種數(shù)據(jù)類型是基于哪種系統(tǒng)數(shù)據(jù)類型的;可否為空。 使用SQLServer管理控制使用T-SQL語句—CREATE 過程過程 語法格式如下sp_addtype‘null|notnull’例3-4:以smalldatetime為基類型建立一個名為birthday數(shù)據(jù)類型,不允許取空值USEstudentexecsp_addtypebirthday,smalldatetime,‘notnull’例3-5:以CHAR為基類型建立一個長度為1USEstudentexecsp_addtypegrade,‘char(1)’,‘NULL’使使用sp_helptype_name查看用戶自定義數(shù)據(jù)類使用sp_renametype_name重命名用戶自定義數(shù)據(jù)類使用sp_droptypetype_name刪除已經(jīng)定義且未被使用的戶自定義數(shù)據(jù)類使用SQL使用SQLServer 上上述過程創(chuàng)建的數(shù)據(jù)類型可以在當前數(shù)據(jù)庫中定新表時使用使用T-SQL使用T-SQL語句CREATE語法格式如下:createtype{fromsystem_type[null|notnull]例35:以alldattie為基類型建立一個名為irhday的數(shù)據(jù)類型,不允許取空值。USEstudentcreatetypebirthdayfromsmalldatetimenot例3-6:以CHAR為基類型建立一個長度為1USEstudentcreatetypegradefromchar(1)NULL使使用droptypetype_name刪除已經(jīng)定義且未被使用自定義數(shù)據(jù)類Transact-SQL變局部變?nèi)肿兙植孔?其說明形式如下DECLARE@變量名變量類[,@變量名變量類型SELECT@局部變量=變量值SET@局部變量=變量值 并賦值10010001。DECLARE@idCHAR(10)SELECT@id=‘10010001’例3-USEDECLARE@PriceMONEYFROMWHERE@PriceASToyRate玩具娃塑料積浙江溫木質(zhì)飛河北唐滑智力拼陜西西汽浙江溫運行結(jié)果如下 玩具 全局變?nèi)肿兞渴荢QLServer系統(tǒng)的注:全局變量不是由用戶的程序定義,它們是在服務(wù)器級定義的,只能使用預(yù)先說明及定義的全局變量。例如,SELECT@@ServerName顯示服Transact-SQL編程基注釋運算通配注釋在Transact-SQL中可使用兩類注釋符一是I標準的注釋符“”,用于單行注釋;二是與C語言相同的程序注釋符號,即,“/*”用于注釋文字開頭,“*/”用于注釋文字的結(jié)尾,可在程序中標識多行文字為注釋運算運算符的處理順+(加﹣(減*(乘/(除%(取余>(大于<(小于=(賦值>=(大于等于<=(小于等于<>(不等于!=(不等于!>(不大于!<(不小于其中!=、!>、!<不是ANSI標準的運算符&(按位與|(按位或~(按位非^(按位異或“+”,用于連接兩個或兩個以上的字符或二進制串、列名或串和列的混合體,將一個串加入到另一個串的末尾,其語法為:<expression1>+<expression2>括號()位運算符邏輯運算符邏輯運算符ALL、ANY、IN、LIKE、通配表3.6Transact-SQL的通配通配功實%代表零個或個字‘a(chǎn)b%’,ab后可接任意字符_(下劃線代表一個字‘a(chǎn)_b’,a與b之間可符表示在某一圍的字[0-9],0-9之間的字[^0-9],不在0-9之間的字WHEREyear_bornLIKEWHEREyear_bornLIKE‘196[1-WHEREyear_bornLIKE‘196[^1-Transact-SQL函數(shù)學函字符串函日期和時間函轉(zhuǎn)換函系統(tǒng)函聚合函數(shù)學函數(shù)學函數(shù)主要用來對數(shù)值表達式進行數(shù)算并返回結(jié)果,它可以對SQLServer提供的數(shù)值數(shù)據(jù)Selectceiling(13.4),floor(13.4),round(13.4567,3)141312.4570Selectround(45.923,2),round(45.923,0),45.920 字符串函字符串函數(shù)可以二制據(jù)字串表式行不同的運算,大多數(shù)字符串函數(shù)只能用于ha和vaha數(shù)據(jù)類型,少數(shù)幾個字符串函數(shù)也可用于biay和varbinar數(shù)據(jù)類型。某些字串數(shù)能理x x和iag數(shù)據(jù)類型。常用的字符串函數(shù)見表2.Selectleft(‘a(chǎn)bcdefg’,4) Selectstuff(‘a(chǎn)bcdef’,2,3,’ijklmn’) FROM結(jié)果如下 -------------------------
------------------------------------------
--------RobbytheWhale AgiantBlueWhalewithtwoheavy-dutyh WaterChannelSystem Childrenenjoyplayingwithwater.The ParachuteandRocket Steponthelaunchpadandtherocketis SuperDeluge Createartificialrainfallinyourgarde …………日期和時間函函數(shù)語說(日期元素,數(shù)字日期向指定日期添加“數(shù)字”個“日元素(日期元素,日期日期返回兩個日期之間的“日期元素的個(日期元素,日期以ASCII碼的形式返回指定日期“日期元素”。例如(日期元素,日期以整數(shù)的形式返回指定日期的“期元素(返回當前的日期和時(日期從日期中提取天(日期從日期中提取月份(日期從日期中提取年份日期元縮值dayof1~7(1isSelectgetdate(as當前日期和事Select 例:按以下格式顯示所有運貨的報表‘OrderNumber’=cOrderNo,‘ShipmentDate’=dShipmentDate,‘ActualDeliveryDate’=dActualDeliveryDate,‘DayinTransit’=DATEDIFF(dy,dShipmentDate,dActualDeliveryDate)FROMshipment結(jié)果如下Dayin ShipmentDayin
1999-05-231999-05-2411999-05-231999-05-2301999-05-231999-05-241999-05-2621999-05-241999-05-2511999-05-221999-05-231轉(zhuǎn)換函Cast(expressionAS----將表達式expression轉(zhuǎn)化為指定的數(shù)據(jù)類型Convert(data_type[(length)],expression[,style]----data_type轉(zhuǎn)換后的數(shù)據(jù)類型;length轉(zhuǎn)換后數(shù)據(jù)類l將日期時間類型的數(shù)據(jù)轉(zhuǎn)化為字符類型的數(shù)據(jù)時,該參數(shù)用于指定轉(zhuǎn)換后的樣式將數(shù)值型數(shù)據(jù)248.57據(jù)Declare@myvaldecimal(5,2)Set@myval=248.57 cast(cast(@myval varchar(20) asmoneyDeclare@myvaldecimal(5,2)Set@myval=248.57Selectconvert(money,convert(varchar(20),@myval)系統(tǒng)函系統(tǒng)函數(shù)用于查詢系統(tǒng)表系統(tǒng)是SQLServer用來 COL_NAME:返回表中指定字段的名稱,即列名COL_LENGTHDB_ID:返回數(shù)據(jù)庫 DB_NAME:返回數(shù)據(jù)庫的名稱DATALENGTH:返回任何數(shù)據(jù)表達式的實際長度HOST_ID:返回服務(wù)器端計算機的ID號HOST_NAME:返回服務(wù)器端計算機的名稱3.5.5系統(tǒng)函ISDATE:檢查給定的表達式是否為有效的日期格式ISNULL:用指定值替換表達式中的指定空值NULLIF:如果兩個指定的表達式相等,則返回空值OBJECT_ID:返回數(shù)據(jù)庫對象 OBJECT_NAME:返回數(shù)據(jù)庫對象的名稱SUSER_SID:返回服務(wù)器用戶的安全賬戶號SUSER_NAME:返回服務(wù)器用戶的登錄名USER_ID:返回用戶的數(shù)據(jù)庫ID號USER_NAME:返回用戶的數(shù)據(jù)庫3.5.6聚合函例:顯示玩具價格的最大值、最小值和平均值SELECTFROM結(jié)果如下----------
--------
---------- 批處理和流程控制語批處理是使用O語句將多條SL語句進行分隔,其中每兩個O之間的SQ語句就是一個批處理單元。使用批時有如下限制Createdefault、createprocedure、createrule、createtrigger和createview語句不能在批處理中與其他語句組合不能再同一個批處理中更改表,然 新用SETCASE語WHILE語GOTO語RETURN語語法如下IF<條件表達式<命令行或程序塊例3-DECLEAR@xINT,@yINT,@zINTSELECT@x=1,@y=2,@z=3IF@x>PRINT‘x>y’ ELSEIF@y>@zPRINT‘y>z’PRINT‘z>語法如下CASE語CASE表達式用來簡化SQL表達式。是搜索CASE表達簡單CASE簡單CASECASE<測試表達式例:調(diào)整員工工資,工作級別(ob_vl)的,其工資(_wag)上調(diào)8%,工作級別為2的上調(diào)7%,工作級別為的上調(diào)%,其他上調(diào)。USEOfficeSETe_wage=CASEjob_level=WHEN‘1’THENe_wage*1.08WHEN‘2’THENe_wage*1.07WHEN‘3’THENe_wage*1.06ELSEe_wage*1.05搜索CASE搜索CASEUSEOfficeSETe_wage=WHENjob_
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圍堰施工課題申報書
- 軟件測試申報書課題
- 課題申報書方案構(gòu)建模板
- 合伙企業(yè)人合同范本
- 單位買電合同范本
- 合同范本分包合同
- 課題申報書課題類型
- 特殊學生教育課題申報書
- 和單位購銷采購合同范本
- 品牌門窗店銷售合同范本
- 11《認識多媒體技術(shù)》教學設(shè)計、教材分析與教學反思2024年滇人版初中信息技術(shù)七年級下冊
- 2025年湖南環(huán)境生物職業(yè)技術(shù)學院單招職業(yè)技能測試題庫一套
- 2025年黑龍江農(nóng)業(yè)經(jīng)濟職業(yè)學院單招職業(yè)傾向性測試題庫參考答案
- 2025年湖南安全技術(shù)職業(yè)學院單招職業(yè)技能測試題庫參考答案
- DB3202-T 1063-2024 質(zhì)量基礎(chǔ)設(shè)施“-站式”服務(wù)與建設(shè)規(guī)范
- 2025年廣東省深圳法院招聘書記員招聘144人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- 變電站電網(wǎng)側(cè)儲能項目可行性研究報告
- 新版統(tǒng)編版一年級道德與法治下冊全冊教案(完整版)教學設(shè)計含教學反思
- 4.2 同學相伴 第二課時 課件 2024-2025學年三年級下冊道德與法治 統(tǒng)編版
- 2025年春季學期學校德育工作計劃安排表(完整版)
- 2025年全球及中國調(diào)頻儲能行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
評論
0/150
提交評論