SQL第3章Transact-SQL語言.ppt
《SQL第3章Transact-SQL語言.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《SQL第3章Transact-SQL語言.ppt(48頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第3章 Transact-SQL程序設(shè)計(jì),3.1 SQL 語言簡介 3.2 數(shù)據(jù)類型 3.3 局部變量與全局變量 3.4 運(yùn)算符及優(yōu)先級(jí) 3.5 函數(shù) 3.6 簡單的SELECT 語句 3.7 批處理與流程控制語句,返回目錄,2,3.1 SQL 語言簡介,SQL (Structure Query Language) 語言是一種在關(guān)系型數(shù)據(jù)庫中定義、查詢、操縱和控制數(shù)據(jù)的標(biāo)準(zhǔn)語句。 大多數(shù)據(jù)庫廠商都在SQL-92標(biāo)準(zhǔn)的基礎(chǔ)上對(duì)SQL又進(jìn)行了一定的擴(kuò)充,產(chǎn)生了事務(wù)化的SQL語言,即Transact SQL語言,簡稱T-SQL語言。,3,語言簡介,SQL 語言是一種面向集合的數(shù)據(jù)庫語言,其主要特點(diǎn)
2、是: 類似于英語,直觀、簡單易學(xué); SQL語言只是提出要“干什么”,“怎么辦”則由DBMS來完成。 SQL語句分為四類:數(shù)據(jù)查詢語句、數(shù)據(jù)操縱語句、數(shù)據(jù)定義語句和數(shù)據(jù)控制語句; SQL語句既可以獨(dú)立,也可以嵌入到另外一種語句中使用的語句,即具有自含型和縮主型兩種特征。自含型特征可以用于所有用戶,縮主型適合于應(yīng)用程序員開發(fā)數(shù)據(jù)庫應(yīng)用程序。,4,語言簡介,數(shù)據(jù)操作語句 select、 insert 、 delete 、 update 數(shù)據(jù)定義語句 create table 、 drop table 、 alter table create view 、 drop view create index
3、 、drop index create procedure 、 alter procedure 、 drop procedure create trigger 、 alter trigger、 drop trigger 數(shù)據(jù)訪問控制 grant 、 revoke 事務(wù)控制語句 begin transaction/commit 、 rollback 、 set transaction 編程語句 declare 、 open 、fetch、 close、execute,5,數(shù)據(jù)庫管理員和應(yīng)用系統(tǒng)開發(fā)人員用SQL語言可以做以下事情: 創(chuàng)建主鍵、外鍵、約束、規(guī)則、觸發(fā)器、事務(wù),用以實(shí)現(xiàn)數(shù)據(jù)完整性; 查
4、詢、更新、刪除數(shù)據(jù)庫中的信息; 對(duì)各種數(shù)據(jù)庫對(duì)象設(shè)置不同的權(quán)限、實(shí)現(xiàn)數(shù)據(jù)庫的安全性; 進(jìn)行分布式數(shù)據(jù)處理,實(shí)現(xiàn)數(shù)據(jù)庫間的數(shù)據(jù)復(fù)制、傳遞和執(zhí)行分布式查詢; 可以創(chuàng)建批處理、存儲(chǔ)過程、視圖,方便應(yīng)用程序訪問數(shù)據(jù)庫中的數(shù)據(jù); 實(shí)現(xiàn)數(shù)據(jù)倉庫,從聯(lián)機(jī)事務(wù)處理系統(tǒng)中提取數(shù)據(jù),對(duì)數(shù)據(jù)匯總進(jìn)行決策支持分析; 其他功能。,本章首頁,6,3.2 數(shù)據(jù)類型,數(shù)據(jù)類型是指數(shù)據(jù)所代表的信息的類型。每一種語言都定義了自己的數(shù)據(jù)類型。 SQL Server 2000中定義了25種數(shù)據(jù)類型,同時(shí)允許用戶自己定義數(shù)據(jù)類型。 系統(tǒng)定義的數(shù)據(jù)類型有: binary[(n)] 、varbinary[(n)]、char[(n)]、va
5、rchar[(n)]、nchar[(n)]、nvarchar[(n)]、datetime、smalldatetime、decimal[p(,s)]、numeric[p(,s)]、float[(n)]、real、int 、smallint、tinyint 、money、smallymoney、 bit、cursor、sysname、timestamp、uniqueidentifier、 text、image 和ntext;,7,3.2.1 二進(jìn)制數(shù)據(jù)類型 二進(jìn)制數(shù)據(jù)類型包括三種:binary 、varbinary和image。 binary [(n)]:固定長度的n個(gè)字節(jié)二進(jìn)制數(shù)據(jù)。n必須是1到
6、8000。存儲(chǔ)空間大小為n+4字節(jié)。 varbinary[(n)]:n個(gè)字節(jié)可變長二進(jìn)制數(shù)據(jù)。n必須從1到8000。存儲(chǔ)空間大小為實(shí)際數(shù)據(jù)長度+4個(gè)字節(jié),而不是n個(gè)字節(jié)。 image:可變長度的二進(jìn)制,其最大長度為231-1個(gè)字節(jié)。 3.2.2 數(shù)字?jǐn)?shù)據(jù)類型 數(shù)字?jǐn)?shù)據(jù)類型包括精確數(shù)字、近似數(shù)字兩種。精確數(shù)字又分為精確整數(shù)和精確小數(shù)。 1.精確整數(shù) 精確整數(shù)數(shù)據(jù)類型有四種,它們是bigint 、int、smallint、tinyint。 bigint:從-263到263-1的整型數(shù)據(jù)。存儲(chǔ)大小為8個(gè)字節(jié)。 int:從-231到231-1的整型數(shù)據(jù)。存儲(chǔ)大小為4個(gè)字節(jié)。,8,smallint:從-
7、215到215-1的整數(shù)數(shù)據(jù)。存儲(chǔ)大小為2個(gè)字節(jié)。 tinyint:從0到255的整數(shù)數(shù)據(jù)。存儲(chǔ)大小為1個(gè)字節(jié)。 bigint 的存儲(chǔ)范圍大大于int 的存儲(chǔ)范圍,int 的存儲(chǔ)范圍大于Smallint 的存儲(chǔ)范圍,Smallint的存儲(chǔ)范圍大于tinyint的存儲(chǔ)范圍。 2.精確小數(shù) 精確小數(shù)數(shù)據(jù)類型有兩種:它們是decimal和numeric。 decimal :帶定點(diǎn)精度和小數(shù)位數(shù)的numeric數(shù)據(jù)類型,從-1038+1到1038-1。 numeric:功能上等同decimal。 3.近似數(shù)字 近似小數(shù)數(shù)據(jù)類型有兩種:float 和 real 。 float:從-1.79E+308到1
8、.79E+308的浮點(diǎn)精度數(shù)字。 real:從-3.04E+38到3.04E+38的浮點(diǎn)精度數(shù)字。,9,3.2.3 字符數(shù)據(jù)類型 字符數(shù)據(jù)是用一對(duì)單引號(hào)括起來由字母、數(shù)字、和符號(hào)組合而成的數(shù)據(jù),在內(nèi)存中占用一個(gè)字節(jié)。例’Nanjing’、’3.23’、’&*op’都是合法的字符數(shù)據(jù)。字符數(shù)據(jù)類型有char、varchar和text三種。 char:固定長度的非unicode字符數(shù)據(jù),最大長度為8000個(gè)字符; varchar:可變長度的非unicode 字符數(shù)據(jù),最大長度為8000個(gè)字符; text:可變長度的非unicode 字符數(shù)據(jù),最大長度為231-1個(gè)字符; 如果沒有在數(shù)據(jù)定義或變量聲
9、明語句中指定n,則默認(rèn)長度為1。,10,3.2.4 unicode 數(shù)據(jù)類型 對(duì)于用單個(gè)字節(jié)編碼每個(gè)字符的數(shù)據(jù)類型,存在的問題就是此數(shù)據(jù)類型只能表示256個(gè)不同的字符。象漢字、日文或韓國文字這樣具有數(shù)千個(gè)字符的字母表就不可能處理了。 unicode標(biāo)準(zhǔn)每個(gè)字符用兩個(gè)字節(jié)來編碼,所以在系統(tǒng)中使用unicode數(shù)據(jù)類型,就可以解決大字母表的字符問題了。 unicode數(shù)據(jù)類型包括nchar、nvarchar和ntext。 nchar:固定長度的unicode 數(shù)據(jù),最大長度為4000個(gè)字符。 nvarchar:可變長度的unicode數(shù)據(jù),其最大長度為4000字符。 ntext:可孌長度的unic
10、oce數(shù)據(jù),其最大長度為230-1個(gè)字符。 當(dāng)列的長度固定不變時(shí),使用nchar數(shù)據(jù)類型;當(dāng)列的長度變化時(shí),使用nvarchar數(shù)據(jù)類型;如果需要存儲(chǔ)的字符數(shù)多于4000個(gè)時(shí),應(yīng)使用ntext數(shù)據(jù)類型存儲(chǔ)。,11,3.2.5 日期和時(shí)間數(shù)據(jù)類型 日期和時(shí)間數(shù)據(jù)類型包括datetime 和smalldatetime兩種數(shù)據(jù)類型。 datetime:存儲(chǔ)從1753年1月1日到9999年12月31日的日期和時(shí)間數(shù)據(jù),每一個(gè)值要求8個(gè)字節(jié),精確到百分之三秒(或3.33毫秒)。 smalldatime:存儲(chǔ)從1900年1月1日到2079年12月31日的日期和時(shí)間數(shù)據(jù),每一個(gè)值要求4個(gè)字節(jié),精確到分鐘。
11、設(shè)置日期格式的命令如下: set dateformat {format |@format_var} 其中,format | @format 是日期的格式。有效參數(shù)包括MDY、DMY、YMD、YDM、MYD、DYM。默認(rèn)格式為MDY。 [例3-1] 設(shè)置日期格式 set dateformat mdy go declare @datevar datetime set @datevar =‘06/03/2006 select @datevar,12,3.2.6 貨幣數(shù)據(jù)類型 貨幣數(shù)據(jù)類型表示貨幣數(shù)量,貨幣數(shù)據(jù)類型包括money和smallmoney。 money: 貨幣數(shù)值介于-263與263-1
12、之間,精確到貨幣單位的千分之十,money數(shù)據(jù)類型要求8個(gè)存儲(chǔ)字節(jié)。 smallmoney:貨幣數(shù)值介于-214748.3648與+214748.3647之間,精確到貨幣單位的千分之十,smallmoney數(shù)據(jù)類型要求4個(gè)存儲(chǔ)字節(jié)。 3.2.7特殊數(shù)據(jù)類型 在SQL中特殊的數(shù)據(jù)類型有三種:bit、timestamp和uniqueidentifier。 bit:由1和0組成,使用bit數(shù)據(jù)類型可以表示真、假或on、off,不能對(duì)bit的列使用索引。 timestamp:以二進(jìn)制格式表示SQL Server活動(dòng)的先后順序。在數(shù)據(jù)庫范圍內(nèi),timestamp是唯一的,每次更新行時(shí)進(jìn)行更新。 uniq
13、ueidentifer:全局唯一標(biāo)識(shí)符(GUID),以十六進(jìn)制數(shù)字表示一個(gè)全局惟一的標(biāo)識(shí)。,13,3.2.8 用戶自定義數(shù)據(jù)類型 在SQL Server中,用戶可以根據(jù)需要自定義數(shù)據(jù)類型。用戶可以用SQL語言或企業(yè)管理器來自定義數(shù)據(jù)類型。 自定義數(shù)據(jù)類型定義后,與系統(tǒng)數(shù)據(jù)類型一樣使用。 創(chuàng)建自定義數(shù)據(jù)類型的好處: 利用自定義數(shù)據(jù)類型可使不同表不重復(fù)出現(xiàn)的各列數(shù)據(jù)具有相同的特性。 1.創(chuàng)建用戶自定義數(shù)據(jù)類型 (1)使用SQL 語句創(chuàng)建 使用系統(tǒng)存儲(chǔ)過程sp_addtype創(chuàng)建,語法如下: sp_addtype type_name ,phystype[(length)|([precision,sc
14、ale]),null | not null | identity],14,,其中: type_name:是用戶定義的數(shù)據(jù)類型的名字。 Phystype:是用戶自定義數(shù)據(jù)類型所基于的系統(tǒng)數(shù)據(jù)類型,可以包括長度、精度、標(biāo)度。 null | not null | identity :用戶自定義數(shù)據(jù)類型的性質(zhì),分別為允許空值、不允許為空值、具有標(biāo)識(shí)列性質(zhì)。如果不指定列的性質(zhì),默認(rèn)為not null 。,15,[例3-2] 創(chuàng)建兩個(gè)自定義數(shù)據(jù)類型 use jwgl go exec sp_addtype a0 ,varchar(15),null exec sp_addtype postalcode,‘ch
15、ar(6)’,‘not null’ (2)使用企業(yè)管理器創(chuàng)建自定義數(shù)據(jù)類型 進(jìn)入企業(yè)管理器?進(jìn)入JWGL數(shù)據(jù)庫?右擊“用戶自定義數(shù)據(jù)類型”?點(diǎn)擊“新建用戶自定義數(shù)據(jù)類型” ?后出現(xiàn)“用戶自定義數(shù)據(jù)類型”窗口?輸入要定義的數(shù)據(jù)名稱,選擇數(shù)據(jù)類型,輸入數(shù)據(jù)長度,確定是否允許為空?點(diǎn)擊“確定”。,16,2.查看用戶自定義數(shù)據(jù)類型 可以用系統(tǒng)存儲(chǔ)過程sp_help或企業(yè)管理器來查看用戶定義的數(shù)據(jù)類型的特征。語法格式: exec sp_help 自定義數(shù)據(jù)類型名稱 3.重命名用戶自定義數(shù)據(jù)類型 使用過程sp_rename 可以很方便地重新命名一個(gè)用戶自定義數(shù)據(jù)類型。語法格式: exec s
16、p_rename 舊名稱 , 新名稱 4.刪除用戶定義數(shù)據(jù)類型 使用過程sp_droptype 來刪除一個(gè)已經(jīng)定義且未被使用的用戶自定義數(shù)據(jù)類型。語法格式: exec sp_droptype 自定義數(shù)據(jù)類型名 必須注意不能刪除正在被表或其他數(shù)據(jù)庫使用的用戶自定義數(shù)據(jù)類型。,本章首頁,17,3.3 局部變量與全局變量,從變量的作用范圍來區(qū)分,SQL Server提供兩種形式的變量:局部變量和全局變量。 1. 局部變量 局部變量一般在批處理中被聲明、定義、賦值和引用,批處理結(jié)束后,局部變量就消失了。 利用局部變量還可以保存程序執(zhí)行過程中的中間數(shù)據(jù)值,保存由存儲(chǔ)過程返回的數(shù)據(jù)值等。 (1)局部變
17、量的定義 必須先用DECLARE命令定義后才可以使用。 DECLAER {@local_variable data_type} [,…n] (2) 局部變量的賦值方法 SET { @local_variable = expression } 或者 SELECT { @local_variable = expression } [ ,...n ],18,expression:與局部定義的數(shù)據(jù)類型相匹配的表達(dá)式。 賦值前變量默認(rèn)值為 NULL。 (3) 局部變量的顯示 select @variable_name [例3-3] 定義一個(gè)整型局部變量和一個(gè)可變長字符型局部變量并賦值。 DEC
18、LARE @local_variable_int int,@local_variable_char nvarchar(9) SELECT @local_variable_int=40 SET @local_variable_char = Welcom to Nanjing SELECT @local_variable_int SELECT @local_variable_char GO,19,注意: 1) 如果被賦值的長度超過DECLAER語句中聲明的長度,將此值賦值給局部變量時(shí),超過的部分將被截去。如上例,局部變量 @local_variable_char定義的長度為9,而給其賦的值是“We
19、lcom to Nanjing”,最后局部變量 @local_variable_char的值為“Welcom to”。 2) 也可以用SELECT語句從表中查詢出的結(jié)果給局部變量賦值,但要保證查詢出的值的惟一性,否則不能保證給局部變量賦值的準(zhǔn)確性。 3) 在定義局部變量時(shí)容易發(fā)生數(shù)據(jù)類型不匹配的錯(cuò)誤。即:使用DECLARE語句定義的局部變量與賦給局部變量的值的數(shù)據(jù)類型不匹配。如果發(fā)生這種情況,SQL Server總是試圖隱式地將被賦的值的數(shù)據(jù)類型轉(zhuǎn)化為局部變量的數(shù)據(jù)類型。,20,2. 全局變量 全局變量在整個(gè)SQL Server系統(tǒng)內(nèi)使用。存儲(chǔ)的通常是一些SQL Server的配置設(shè)定值和統(tǒng)計(jì)
20、數(shù)據(jù)。 在使用全局變量時(shí)應(yīng)該注意以下幾點(diǎn): 全局變量是在服務(wù)器級(jí)定義的。 SQL Server提供的全局變量分為兩類: 1) 與SQL Server 連接有關(guān)的全局變量。如:@@rowcount表示受最近一個(gè)語句影響的行數(shù)。 2) 關(guān)于系統(tǒng)內(nèi)部信息有關(guān)的全局變量。如:@@version表示SQL Server的版本號(hào)。 全局變量反映的是服務(wù)器當(dāng)前的狀態(tài),SQL Server 2000提供了30多個(gè)全局變量,下面介紹幾個(gè)常用的全局變量: @@connections:返回自上次啟動(dòng)SQL Server? 以來連接或試圖連接的次數(shù)。 @@rowcount:返回上一條T-SQL語句影響到的數(shù)據(jù)行數(shù)。,
21、21,@@error:返回上一條T-SQL語句執(zhí)行后的錯(cuò)誤號(hào)。 @@procid:返回當(dāng)前存儲(chǔ)過程的ID標(biāo)識(shí)。 @@remserver:返回登錄記錄中遠(yuǎn)程服務(wù)器的名字。 @@spid:返回當(dāng)前服務(wù)器進(jìn)程的ID標(biāo)識(shí)。 @@version:返回當(dāng)前SQLServer服務(wù)器的版本。 3. 局部變量與全局變量的顯示 使用SELECT語句可以顯示局部變量和全局變量。語句形式為: 顯示局部變量:SELECT @variable_name 顯示全局變量:SELECT @@variable_name,本章首頁,22,3.4 運(yùn)算符,3.4.1 算術(shù)運(yùn)算符 算術(shù)運(yùn)算符包括加(+)、減(-)、乘(*)、除(/)
22、和取模(%)(select 10%4,4%10) 3.4.2 賦值運(yùn)算符 Transact-SQL中只有一個(gè)賦值運(yùn)算符,即等號(hào)(=) 3.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ù)。 例 select 2,~2, 2^3,2|4,2&4(由同學(xué)自己去思考),23,3.4 運(yùn)算符,3.4.4 比較運(yùn)算符 比較運(yùn)算符包括:等于(=)、大于(>)、大于或等于(>=)、小于(或!=)、不小于(!)。 3.4.5 邏輯運(yùn)算符 邏輯運(yùn)
23、算符包括與(AND)、或(OR)和非(NOT)等運(yùn)算符。 關(guān)系運(yùn)算和邏輯運(yùn)算返回布爾值,值為TRUE或FALSE。這種值不能參于運(yùn)算及輸出. 例 select 5>3 (是錯(cuò)誤的,由同學(xué)去完成) 3.4.6 字符串連接運(yùn)算符 (+) 字符串運(yùn)算符加號(hào)(+)將兩個(gè)以上的字符串(不作任何處理、直接)相聯(lián)。 例如 北京2008 + + 奧運(yùn)會(huì) 連接后結(jié)果為 北京2008 奧運(yùn)會(huì),24,3.4.7 運(yùn)算符的優(yōu)先級(jí) () (括號(hào)) ~ (按位取反) 正、負(fù)、 乘、除、取模:*、/、%(取模) 加、連接符、減 比較符:=, >, =, NOT (非) AND (與) OR (或) = (賦值),本章
24、首頁,3.4 運(yùn)算符,25,3.5 函數(shù),輸出函數(shù)值要用select 命令 3.5.1 數(shù)學(xué)函數(shù) P52 3.5.2 字符串函數(shù) P53 3.5.3 轉(zhuǎn)換函數(shù) P55 CAST ( expression AS data_type ) CONVERT (data_type[(length)], expression [,style]) 3.5.4 日期和時(shí)間函數(shù) P56 3.5.5 系統(tǒng)函數(shù) P58 3.5.6 集合函數(shù) P58 count()、avg()、max()、min(),本章首頁,26,3.6 簡單的SELECT 語句,select語句是數(shù)據(jù)SQL中最重要的語句,其功能強(qiáng)大,使用
25、靈活。 SELECT語句有豐富的子句,其最簡單的用法是: select from where 列名表可以用 星號(hào)(*)、表達(dá)式、列表、變量等,其中 * 表示表中所有的列項(xiàng)。 例1 select au_lname,au_fname,phone,city ,state from authors 例2 select au_lname,au_fname,phone,city ,state from authors where state =‘CA’,本章首頁,27,3.7 批處理和 流程控制語句,通常,服務(wù)器端的程序使用SQL語句來編寫,一般而言,一個(gè)服務(wù)器端的程序是由以下一些成分組成: 批; 注
26、釋; 程序中使用的變量; 改變批中語句的執(zhí)行順序的控制語句; 錯(cuò)誤和消息的處理。 3.7.1 批和腳本 1.批(batch) 兩個(gè)GO之間的SQL語句作為一個(gè)批處理。在一個(gè)批處理中可以包含一條或多條Transact-SQL語句,成為一個(gè)語句組。這樣的語句組從應(yīng)用程序一次性地發(fā)送到SQL Server服務(wù)器進(jìn)行執(zhí)行。SQL Server服務(wù)器將批處理編譯成一個(gè)可執(zhí)行單元,稱為執(zhí)行計(jì)劃。這樣處理可以節(jié)省系統(tǒng)開銷。,28,使用批時(shí)有如下限制: 1) 并不是所有語句都可以和其他語句在一個(gè)組合成批。下列語句不能組合在同一個(gè)批中: create procedure create rule crea
27、te defaul create trigger create view 2)規(guī)則和缺省不能在同一個(gè)批中既綁定到列又被使用。 3)CHECK約束不能在同一個(gè)批中既定義又使用。 4)在同一個(gè)批中不能刪除對(duì)象又重新它。 5)用SET語句改變的選項(xiàng)在批結(jié)束時(shí)生效。 6)在同一個(gè)批中不能改變一個(gè)表再立即引用其新列。 另外當(dāng)一外含有多個(gè)批的SQL腳本提交執(zhí)行時(shí)發(fā)生錯(cuò)誤,SQL服務(wù)器顯示出的錯(cuò)誤行提示是錯(cuò)誤語句所在批中的行號(hào),而不是該語句在整個(gè)SQL腳本中的行號(hào)。 2. 腳本 腳本是一系列順序提交的批。,29,3.7.2 流程控制語句 流程控制語言是Transact - SQL對(duì)ANSI-92
28、 SQL標(biāo)準(zhǔn)的擴(kuò)充。它可以控制SQL語句執(zhí)行的順序,在存儲(chǔ)過程、觸發(fā)器和批中很有用。具體包括: IF. . . ELSE 條件執(zhí)行命令; CASE語句 多條件分支選擇語句; GOTO語句 無條件轉(zhuǎn)移語句; BEGIN . . . END 將一組SQL語句作為一個(gè)語句塊; WHILE 循環(huán)執(zhí)行相同的語句; RETURN 無條件返回; PRINT 在屏幕上顯示信息; RAISERROR 將錯(cuò)誤信息顯示在屏幕上,同時(shí)也可以記錄在NT日志中; WAITFOR 等待語句。,3.7.2 流程控制語句,30,1. RETURN RETURN的作用是無條件退出所在的批、存儲(chǔ)過程和觸發(fā)器。退出時(shí),可以返回狀態(tài)信
29、息。在RETURN語句后面的任何語句不被執(zhí)行。 RETURN語句的語法形式: RETURN [integer_expression] 其中,integer_expression 是一個(gè)表示過程返回的狀態(tài)值。系統(tǒng)保留0為成功。小于0為有錯(cuò)誤。,,31,2. RAISERROR和PRINT ⑴ PRINT語句 PRINT語句的作用是在屏幕上顯示用戶信息。PRINT語句的語法形式如下: PRINT {‘string’ | @local_variable |@@ local_variable } 其中,string代表一個(gè)不超過255字節(jié)的字符串。@local_variable 代表一個(gè)局部變量,該局
30、部變量必須是CHAR或VARCHAR類型。@@ local_variable代表能被轉(zhuǎn)化為char或varchar 類型的全局變量。 【例3-14】將 GETDATE 函數(shù)的結(jié)果轉(zhuǎn)換為 varchar 數(shù)據(jù)類型,并將其與 PRINT 要返回的文本“本信息打印的時(shí)間是”。 PRINT 本信息打印的時(shí)間是 + RTRIM(CONVERT(varchar(30), GETDATE())) + .,32,⑵ RAISERROR語句 RAISERROR語句的作用是將錯(cuò)誤信息顯示在屏幕上,同時(shí)也可以記錄在NT日志中。RAISERROR 語句的語法形式: RAISERROR error_number {ms
31、g_id | msg_str},SEVERITY, STATE [ , argument1 [ , . . . n]] 其中: ? error_number:是指錯(cuò)誤號(hào)。 ? msg_id | msg_str:是指錯(cuò)誤信息。 ? SEVERITY:是指錯(cuò)誤的嚴(yán)重級(jí)別。 ? STATE:是指發(fā)生錯(cuò)誤時(shí)的狀態(tài)信息。,33,3. CASE 表達(dá)式 在Microsoft SQL Server 2005中CASE語句有三種形式:簡單型CASE語句、搜索型CASE語句、CASE關(guān)系函數(shù)。本書只介紹簡單型CASE語句和搜索型CASE語句。 (1)簡單型CASE語句 簡單型CASE語句的語法形式: CASE
32、expression {WHEN expression THEN result} [,...n] [ELSE result ] END 其中: ? expression :可以是常量、列名、函數(shù)、算術(shù)運(yùn)算符等。 簡單型CASE語句是根據(jù)表達(dá)式expression 的值與WHEN后面的表達(dá)式逐一比較,,如果兩者相等,返回THEN后面的表達(dá)式result的值,否則返回ELSE后面表達(dá)式result的值。,34,【例3-15】將PUBS庫中表titles里的 pub_id號(hào)為“0736”和“1839”記錄顯示出來,其余的用“OTHER”顯示。 use pubs go select title,pub
33、_id= case pub_id when ‘0736’ then 0736 when ‘1389’ then 1389 else OTHER end from titles,35,(2)搜索型CASE語句 搜索型CASE語句的語法形式: CASE WHEN Boolean_expression THEN result} [,...n] [ELSE result ] END 其中: ? Boolean_expression :CASE語句要判斷的邏輯表達(dá)式。 搜索型CASE語句是判斷邏輯表達(dá)式Boolean_expression為真,則返回THEN后面表達(dá)式result的值,然后判斷下一
34、個(gè)邏輯表達(dá)式,如果所有邏輯表達(dá)式都為假,則返回ELSE后面表達(dá)式result的值。,36,【例3-16】將PUBS庫中表titles里的price大于10的記錄對(duì)應(yīng)的price_level顯示“HIGH”,price小于10的記錄對(duì)應(yīng)的price_level顯示“LOW”,其余的顯示“EQ10”。 use pubs go select title,price level= case when price > 10 then HIGH when price < 10 then LOW else EQ10 end from titles,37,4. BEGIN. . . END 當(dāng)需要將一個(gè)
35、以上的SQL語句作為一組對(duì)待時(shí),可以使用BEGIN和END將它們括起來形成一個(gè)SQL語句塊,以達(dá)到一起執(zhí)行的目的。 BEGIN. . . END語句的語法形式: BEGIN Sql_statement END ? Sql_statement:是要執(zhí)行的任何合法的SQL語句或語句組,需要用戶加以注意的是它必須包含在一個(gè)單獨(dú)的批中。,38,5. IF. . . ELSE IF. . . ELSE語句的語法形式: IF Boolean_expression Sql_statement [ELSE [IF Boolean_expression] Sql_statement ] 其中: ? Boo
36、lean_ expression:是布爾表達(dá)式,其值是TRUE或FALSE。 ? Sql_statement:是要執(zhí)行的SQL語句。這既可以是單個(gè)SQL語句,也可以是一組SQL語句。如果在IF或ELSE語句后面有多條SQL語句,必須把它們放在BEGIN . . . END塊中。,39,【例3-17】定義一個(gè)整形變量,如賦值為1,顯示“I am a student”,否則顯示“I am a teacher”。 declare @a int select @a=2 if @a=1 begin print I am print a student end else print I am a
37、teacher go,40,6. WHILE 結(jié)構(gòu) WHILE語句的作用是為重復(fù)執(zhí)行某一語句或語句塊設(shè)置條件。當(dāng)指定條件為TRUE時(shí),執(zhí)行這些語句,直到為FALSE為止。 WHILE語句的語法形式: WHILE boolean- expression Sql_statement [BREAK ] { Sql_statement } [CONTINUE ] { Sql_statement },41,其中: ? boolean- expression:是布爾表達(dá)式,其值是TRUE或FALSE。 ? Sql_statement:是要執(zhí)行的SQL語句。既可以是單個(gè)SQL語句,也可以是一組SQL語
38、句。如果在WHILE語句后面有多條SQL語句,必須把它們放在BEGIN . . . END塊中。 ? BREAK:是退出所在的循環(huán)。 ? CONTINUE:是使循環(huán)跳過CONTINUE之后的語句重新開始。,42,【例3-18】輸出字符串“School” 中每一個(gè)字符的ASCII值和字符。 declare @position int,@string char(6) set @position =1 set @string =School while @position<=datalength(@string) begin select ascii(substring( @string,@posi
39、tion,1)) as asccode, char(ascii(substring( @string,@position,1))) as ascchar set @position= @position+1 end,43,7. GOTO語句 使用GOTO語句可以使SQL語句的執(zhí)行流程無條件地轉(zhuǎn)移到指定的標(biāo)號(hào)位置。GOTO語句和標(biāo)號(hào)可以用在語句塊、批處理和存儲(chǔ)過程中,標(biāo)號(hào)的命名要符合標(biāo)識(shí)符命名規(guī)則。GOTO語句經(jīng)常用在WHILE和IF語句中以跳出循環(huán)或分支處理。 GO語句的語法形式: Label: …… GOTO label,44,【例3-19】使用IF語句求1到10之間的累加和并輸出結(jié)果 d
40、eclare @sum int,@count int select @sum=0,@count=1 label: select @sum=@sum+@count select @count=@count+ 1 if @count<=10 goto label select @sum,@count,45,8. WAITFOR語句 使用WAITFOR語句可以在某一個(gè)時(shí)刻或某一個(gè)時(shí)間間隔后執(zhí)行SQL語句或語句組。 WAITFOR語句語法形式: WAITFOR {DELAY ‘time’|TIME ‘time’} 其中: DELAY 指定時(shí)間間隔,TIME指定在某一個(gè)時(shí)刻。TIME參數(shù)的數(shù)據(jù)類型為datetime,格式為‘hh:mm:ss’。,46,【例3-20】設(shè)置在9:00進(jìn)行一次查詢操作。 use pubs go begin waitfor time 9:00 select * from titles end,47,【例3-21】設(shè)置在5分鐘后進(jìn)行一次查詢操作。 use pubs go begin waitfor delay 00:05 select * from titles end,48,9.注釋語句 注釋語句是起說明代碼含義,增加腳本的可讀性,是不執(zhí)行的,有兩種用法: (1)/*……*/ 該方法可以注釋多行。 (2)- -(兩個(gè)減號(hào)) 用于一行的注釋。,本章首頁,
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案