




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、T-SQL編程,1、 T-SQL 語言基礎(chǔ),任務(wù)1 使用T-SQL語句中的標(biāo)識符、注釋、變量、常量和表達(dá)式,編寫簡單的批處理。,1、 T-SQL 語言基礎(chǔ),1、標(biāo)識符 標(biāo)識符是指用戶在SQL Server中定義的服務(wù)器、數(shù)據(jù)庫、數(shù)據(jù)庫對象、變量和列等對象名稱。SQL Server標(biāo)識符分為常規(guī)標(biāo)識符和分隔標(biāo)識符兩類。,1、 T-SQL 語言基礎(chǔ),常規(guī)標(biāo)識符應(yīng)遵守以下的命名規(guī)則: 標(biāo)識符長度可以為1-128個字符。對于本地臨時表,標(biāo)識符最多可以有116個字符。 標(biāo)識符的首字符必須為Unicode3.2標(biāo)準(zhǔn)所定義的字母或_、#符號。 標(biāo)識符第一個字符后面的字符可以為Unicode3.2標(biāo)準(zhǔn)所定義的
2、字符、數(shù)字或、#、$、_符號。 標(biāo)識符內(nèi)不能嵌入空格或其他特殊字符。 標(biāo)識符不能與SQL Server中的保留關(guān)鍵字同名。,1、 T-SQL 語言基礎(chǔ),分隔標(biāo)識符允許在標(biāo)識符中使用SQL Server保留關(guān)鍵字或常規(guī)標(biāo)識符中不允許使用的一些特殊字符,這是由雙引號或方括號分隔符進行分隔的標(biāo)識符。 符合標(biāo)識符格式規(guī)則的標(biāo)識符可以分隔,也可以不分隔。,1、 T-SQL 語言基礎(chǔ),2、批處理 多條語句放在一起依次執(zhí)行,稱為批處理執(zhí)行,批處理語句之間用GO分隔。這里的GO表示向SQL Server實用工具發(fā)出一批T-SQL語句結(jié)束的信號。但并不是所有的T-SQL語句都可以組合成批處理,在使用批處理時有如
3、下限制。 規(guī)則和默認(rèn)不能在同一個批處理中既綁定又使用。 CHECK約束不能在同一個批處理中既定義又使用。 在同一個批處理中不能刪除對象又重新創(chuàng)建該對象。 用SET語句改變的選項在批處理結(jié)束時生效。 在同一個批處理中不能改變一個表再立即引用該表的新列。,1、 T-SQL 語言基礎(chǔ),【提示】 GO不是T-SQL語句,它是sqlcmd和osql實用工具以及SSMS代碼編輯器識別的命令。 SQL Server實用工具將Go解釋為應(yīng)該向SQL Server實例發(fā)送當(dāng)前批T-SQL語句的信號。當(dāng)前批處理由上一個GO命令后的所有語句組成。 GO命令和T-SQL語句不能在同一行中,但在GO命令行中可包含注釋。
4、,1、 T-SQL 語言基礎(chǔ),3、注釋 注釋是程序代碼中不執(zhí)行的文本字符串。在SQL Server中,可以使用兩種類型的注釋字符。 “-”用于單行注釋。 “/* */”用于多行注釋,1、 T-SQL 語言基礎(chǔ),4、輸出語句 PRINT語句。PRINT語句把用戶定義的消息返回客戶端,其基本語句格式如下所示: PRINT ,2、 變量和運算符,1、變量 SQL Server中的變量分為局部變量和全局變量,其中全局變量是指由系統(tǒng)定義和維護,名稱以字符開始的變量。局部變量是指名稱以一個字符開始,由用戶自己定義和賦值的變量。,2、 變量和運算符,局部變量 聲明變量:T-SQL中使用DECLARE語句聲明
5、變量,并在聲明后將變量的值初始化為NULL。在一個DECLARE語句中可以同時聲明多個局部變量,它們相互之間用逗號分隔。DECLARE語句的基本語句格式如下: DECLARE 變量名 數(shù)據(jù)類型(長度) ,n ,2、 變量和運算符,局部變量必須以開頭以區(qū)別字段名變量。 變量名必須符合標(biāo)識符的構(gòu)成規(guī)則。 變量的數(shù)據(jù)類型可以是系統(tǒng)類型,也可以是用戶自定義類型,但不允許是text、ntext、image類型。 系統(tǒng)固定長度的數(shù)據(jù)類型不需要指定長度。,2、 變量和運算符,變量賦值 用SET、SELECT給局部變量賦值 語法格式:SET 局部變量=表達(dá)式 SELECT 局部變量=表達(dá)式 ,n SET只能給
6、一個變量賦值,而SELECT可以給多個變量賦值。 兩種格式可以通用,建議首選使用SET,而不推薦使用SELECT語句。,2、 變量和運算符,表達(dá)式中可以包含SELECT語句子查詢,但只能是集合函數(shù)返回的單值。且必須用圓括號括起來。 SELECT也可以直接使用查詢的單值結(jié)果給局部變量賦值。 如: SELECT 局部變量=表達(dá)式或字段名 FROM 表名 WHERE 條件,2、 變量和運算符,【任務(wù)】使用birthday存儲出生日期,實用age存儲年齡,實用name存儲姓名。同時為所聲明的birthday變量賦值“1999-4-14”(使用set語句);然后將Student表中的學(xué)生的最大年齡賦值給
7、變量age(使用Select語句)。,2、 變量和運算符,Declare birthday datetime Declare age int, name char(8) Set birthday = 1994-4-14 Use databasename Select age=max(age) from student Print -變量的輸出結(jié)果- Print birthday的值 Print birthday Print 最大年齡 Print age Print name,2、 變量和運算符,局部變量的作用域是在一個批處理、一個存儲過程或一個觸發(fā)器內(nèi),其生命周期從定義開始到它遇到的第一個GO
8、語句或者到存儲過程、觸發(fā)器的結(jié)尾結(jié)束,即局部變量只在當(dāng)前的批處理、存儲過程、觸發(fā)器中有效。 如果在批處理、存儲過程、觸發(fā)器中使用其他批處理、存儲過程、觸發(fā)器定義的變量,則系統(tǒng)出現(xiàn)錯誤并提示“必須聲明變量”。,2、 變量和運算符,全局變量 全局變量是由系統(tǒng)提供的有確定值的變量,用戶不能自己定義全局變量,也不能用SET語句來修改全局變量的值。 系統(tǒng)全局變量都是以開頭的,全局變量實際上是一些特殊的不需要參數(shù)、也不需要加括號調(diào)用的函數(shù),可直接返回特定的值。例如: error:其值為最后一次執(zhí)行錯誤的SQL語句產(chǎn)生的錯誤代碼 max_connections:其值為SQL Server允許多用戶同時連接的
9、最大數(shù) connections:SQL Server最近一次啟動后已連接或嘗試連接的次數(shù) version :本地SQL Server服務(wù)器的版本信息 cursor_rows:已打開游標(biāo)中當(dāng)前存在的記錄行數(shù) FETCH_STATUS得到游標(biāo)的當(dāng)前狀態(tài),3、 T-SQL流程控制語句,流程控制語句是控制程序執(zhí)行的命令,比如條件控制語句、無條件控制語句、循環(huán)語句等,可以實現(xiàn)程序的結(jié)構(gòu)性和邏輯性,以完成比較復(fù)雜的操作。 1、順序控制語句BEGINEND語句塊 BEGIN 語句1 語句2 END 不論多少個語句,放在BEGINEND中間就構(gòu)成一個獨立的語句塊,被系統(tǒng)當(dāng)作一個整體單元來處理。 條件的某個分支
10、或循環(huán)體語句中,如果要執(zhí)行兩個以上的復(fù)合語句,則必須將它們放在BEGINEND中間。,3、 T-SQL流程控制語句,2、分支控制語句IF/ELSE條件語句 語法格式: IF 邏輯條件表達(dá)式 語句塊1 ELSE 語句塊2 IF語句執(zhí)行時先判斷邏輯條件表達(dá)式的值(只能取TRUE或FLASE),若為真則執(zhí)行語句塊1,為假則執(zhí)行語句塊2,沒有ELSE則直接執(zhí)行后繼語句。 條件表達(dá)式中可以包含SELECT子查詢,但必須用圓括號括起來。 語句塊1、語句塊2可以是單個SQL語句,如果有兩個以上語句必須放在BEGINEND語句塊中。,3、 T-SQL流程控制語句,【任務(wù)2-1】查找姓名為“劉津津”的學(xué)生的學(xué)生
11、姓名,如果查找到該學(xué)生,顯示其姓名和年齡,否則顯示“查無此人”。 Use databasename Declare name varchar(50),age int If exists (select * from student where Sname=劉津津) Begin Select name=Sname,age=Sage from student where Sname =劉津津 Print -劉津津的聯(lián)系信息- Print Print 姓名:+name Print 年齡:+ age End Else Print 查無此人!,3、 T-SQL流程控制語句,3、WHILE循環(huán)語句 WHI
12、LE 邏輯條件表達(dá)式 BEGIN 循環(huán)體語句系列 BREAK CONTINUE END 執(zhí)行過程:先計算判斷條件表達(dá)式的值 若條件為真則執(zhí)行BEGIN END之間的循環(huán)體語句系列,執(zhí)行到END時返回到WHILE再次判斷條件表達(dá)式的值。 若值為假(條件不成立)則直接跳過BEGIN END不執(zhí)行循環(huán)。 若在執(zhí)行循環(huán)體時遇到BREAK語句,則無條件跳出BEGIN END。 若在執(zhí)行循環(huán)體時遇到CONTINUE語句,則結(jié)束本輪循環(huán),不再執(zhí)行之后的循環(huán)體語句,返回到WHILE再次判斷條件表達(dá)式的值。,3、 T-SQL流程控制語句,例:計算1+2+3+100的和。 DECLARE i Int, sum I
13、nt SELECT i=1, sum =0 WHILE i=100 SELECT sum=sum+i, i=i+1 PRINT sum 注意:循環(huán)體內(nèi)只有一個語句可不用BEGIN END。,3、 T-SQL流程控制語句,【任務(wù)】求1100之間能被7整除的整數(shù)之和。 Declare number smallint,sum smallint Set number=1 Set sum=0 While number=100 Begin If number%7=0 Begin Set sum=sum+number Print number End Set number=number + 1 End Pr
14、int 1到100之間能被7整除的整數(shù)和為+str(sum),3、 T-SQL流程控制語句,例:利用While循環(huán)求1100的偶數(shù)和。 Declare number int,sum int Set number=2 Set sum=0 While number=100 Begin If number%2=0 Begin Set sum=sum+number End Set number=number+1 End Print 1到100之間偶數(shù)之和為+str(sum),3、 T-SQL流程控制語句,4、錯誤處理語句 T-SQL語句組可以包含在TRY塊中。如果TRY塊內(nèi)不發(fā)生錯誤,則會將控制傳遞給
15、CATCH塊中包含的另一個語句組。 Begin try End try Begin catch End catch,3、 T-SQL流程控制語句,【任務(wù)2】使用TRY-CATCH捕捉SQL語句執(zhí)行過程中的異常。 Begin try Select 1/0 End try Begin catch Select Error_number() as 錯誤號, Error_severity() as 錯誤等級, Error_state() as 錯誤狀態(tài), Error_procedure() as 錯誤過程, Error_line() as 錯誤行, Error_message() as 錯誤信息 En
16、d catch go,3、 T-SQL流程控制語句,5、其他流程控制語句。 Return語句。Return語句用于無條件地終止一個查詢、存儲過程或者批處理,此時位于Return語句之后的程序?qū)⒉粫粓?zhí)行。 Goto語句。Goto語句將執(zhí)行流更改到標(biāo)簽處。跳過goto后面的T-SQL語句,并從標(biāo)簽位置繼續(xù)處理。Goto語句和標(biāo)簽可在過程、批處理或語句塊中的任何位置使用,goto語句可嵌套使用。,3、 T-SQL流程控制語句,WAITFOR暫停語句 語句格式: WAITFOR DELAY 時間 | TIME 時間 語句功能:使程序暫停指定的時間后再繼續(xù)執(zhí)行。 DELAY指定暫停的時間長短相對時間。
17、 TIME指定暫停到什么時間再重新執(zhí)行程序絕對時間。 時間參數(shù)必須是datetime類型的時間部分,格式為“hh:mm:ss”,不能含有日期部分。,3、 T-SQL流程控制語句,【任務(wù)】在5分鐘之后對Student表進行查詢,在23:00時對Course表進行查詢。 Use webshop Go Begin Waitfor delay 00:05 Select * from Student Waitfor time 23:00 Select * from Course End 執(zhí)行Waitfor語句時,事務(wù)正在執(zhí)行,其他請求不能在同一事務(wù)下運行。 不能對Waitfor語句打開游標(biāo),也不能對Wa
18、itfor語句定義視圖。,3、 T-SQL流程控制語句,6、CASE函數(shù) CASE表達(dá)式可以根據(jù)不同的條件返回不同的值,CASE不是獨立的語句,只用于SQL語句中允許使用表達(dá)式的位置。,3、 T-SQL流程控制語句,(1)簡單CASE END表達(dá)式 CASE 測試表達(dá)式 WHEN 常量值1 THEN 結(jié)果表達(dá)式1 WHEN 常量值2 THEN 結(jié)果表達(dá)式2 n ELSE 結(jié)果表達(dá)式n END 功能:根據(jù)測試表達(dá)式的值得到一個對應(yīng)值。 執(zhí)行過程:先計算測試表達(dá)式的值,將測試表達(dá)式的值按順序依次與WHEN指定的各個常量值進行比較; 如果找到了一個相等常量值,則整個CASE表達(dá)式取相應(yīng)THEN指定的
19、結(jié)果表達(dá)式的值,之后不再比較,跳出CASE END; 如果找不到相等的常量值,則取ELSE指定的結(jié)果表達(dá)式n; 如果找不到相等的常量值也沒有使用ELSE,則返回NULL。,3、 T-SQL流程控制語句,(2)搜索CASE END表達(dá)式 CASE WHEN 條件表達(dá)式1 THEN 結(jié)果表達(dá)式1 WHEN條件表達(dá)式2 THEN 結(jié)果表達(dá)式2 n ELSE 結(jié)果表達(dá)式n END 功能:根據(jù)某個條件得到一個對應(yīng)值。 注意:搜索CASE表達(dá)式與簡單CASE表達(dá)式的語法區(qū)別是CASE后沒有測試表達(dá)式,WHEN指定的不是常量值而是條件表達(dá)式。 執(zhí)行過程: 按順序依次判斷WHEN指定條件表達(dá)式的值,遇到第一個
20、為真的條件表達(dá)式,則整個CASE表達(dá)式取對應(yīng)THEN指定的結(jié)果表達(dá)式的值,之后不再比較,結(jié)束并跳出CASE END。 如果找不到為真的條件表達(dá)式,則取ELSE指定的結(jié)果表達(dá)式n。 如果找不到為真的條件表達(dá)式也沒有使用ELSE,則返回NULL。,4、常用函數(shù),1、配置函數(shù),4、常用函數(shù),2、數(shù)據(jù)轉(zhuǎn)換函數(shù),4、常用函數(shù),【任務(wù)2-7】將學(xué)生年齡以字符顯示(使用CAST函數(shù)(使用CONVERT函數(shù))。 Use databasename Go Select Sname as 商品名稱,年齡+cast(Sage as varchar(30))as 學(xué)生年齡From Student,4、常用函數(shù),字符串函
21、數(shù),4、常用函數(shù),4、常用函數(shù),4、常用函數(shù),4、常用函數(shù),4、常用函數(shù),【任務(wù)】有一字符串“Hunan Railway Professional College”,要對其進行如下操作:去掉其左邊和右邊空格;將該字符串全部轉(zhuǎn)換為大寫;了解真?zhèn)€字符串的長度;提取左邊6個字符;提取“Hunan”字串。,4、常用函數(shù),Declare temp varchar(50) Set temp =Hunan Railway Professional College Print 去掉空格后+Rtrim(Ltrim(temp) Print 轉(zhuǎn)換為大寫+UPPER(TEMP) Print 字符串長度+Cast(Len(temp)as char(4)) Print 取左個字符+Left(temp,6) Print 截取子串后+Substring(temp,2,5) Print way第一次出現(xiàn)位置+convert (char(4),patindex(%way%,temp)),4、常用函數(shù),4、日期和時間函數(shù),4、常用函數(shù),DateAdd ( I , N , D )將一個日期加上一段期間后的日期。 I :設(shè)定
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分季度財務(wù)預(yù)算明細(xì)表
- 農(nóng)村農(nóng)業(yè)項目資金使用協(xié)議
- 基礎(chǔ)工作流程簡明教程與指南
- 員工辦公電腦使用說明書
- 理發(fā)師學(xué)徒專用合同
- 《數(shù)學(xué)函數(shù)圖像理解與問題解決》
- 企業(yè)戰(zhàn)略聯(lián)盟合作能力提升效果評估預(yù)案
- 汽車股份轉(zhuǎn)讓合同
- 心理咨詢行業(yè)咨詢服務(wù)效果保證合同
- 參與競賽工作人員保密協(xié)議
- 混凝土強度評定表(自動計算)
- 人音版四年級音樂下冊全冊教學(xué)設(shè)計教案表格式
- 小學(xué)教育大學(xué)生職業(yè)生涯與規(guī)劃
- 八大危險作業(yè)檢查表
- 農(nóng)業(yè)物聯(lián)網(wǎng)技術(shù)的培訓(xùn)
- 研究中藥在老年醫(yī)學(xué)中的應(yīng)用
- 成事的時間管理
- 靜脈輸液治療與護理規(guī)范
- 心臟康復(fù)評估量表-完整版
- “五育融合”背景下小學(xué)美術(shù)課堂的實踐路徑構(gòu)建
- 第4章無人機-氣象
評論
0/150
提交評論