九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

SQL第3章Transact-SQL語(yǔ)言.ppt

  • 資源ID:13561023       資源大?。?span id="24d9guoke414" class="font-tahoma">546.31KB        全文頁(yè)數(shù):48頁(yè)
  • 資源格式: PPT        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請(qǐng)知曉。

SQL第3章Transact-SQL語(yǔ)言.ppt

第3章 Transact-SQL程序設(shè)計(jì),3.1 SQL 語(yǔ)言簡(jiǎn)介 3.2 數(shù)據(jù)類型 3.3 局部變量與全局變量 3.4 運(yùn)算符及優(yōu)先級(jí) 3.5 函數(shù) 3.6 簡(jiǎn)單的SELECT 語(yǔ)句 3.7 批處理與流程控制語(yǔ)句,返回目錄,2,3.1 SQL 語(yǔ)言簡(jiǎn)介,SQL (Structure Query Language) 語(yǔ)言是一種在關(guān)系型數(shù)據(jù)庫(kù)中定義、查詢、操縱和控制數(shù)據(jù)的標(biāo)準(zhǔn)語(yǔ)句。 大多數(shù)據(jù)庫(kù)廠商都在SQL-92標(biāo)準(zhǔn)的基礎(chǔ)上對(duì)SQL又進(jìn)行了一定的擴(kuò)充,產(chǎn)生了事務(wù)化的SQL語(yǔ)言,即Transact SQL語(yǔ)言,簡(jiǎn)稱T-SQL語(yǔ)言。,3,語(yǔ)言簡(jiǎn)介,SQL 語(yǔ)言是一種面向集合的數(shù)據(jù)庫(kù)語(yǔ)言,其主要特點(diǎn)是: 類似于英語(yǔ),直觀、簡(jiǎn)單易學(xué); SQL語(yǔ)言只是提出要“干什么”,“怎么辦”則由DBMS來(lái)完成。 SQL語(yǔ)句分為四類:數(shù)據(jù)查詢語(yǔ)句、數(shù)據(jù)操縱語(yǔ)句、數(shù)據(jù)定義語(yǔ)句和數(shù)據(jù)控制語(yǔ)句; SQL語(yǔ)句既可以獨(dú)立,也可以嵌入到另外一種語(yǔ)句中使用的語(yǔ)句,即具有自含型和縮主型兩種特征。自含型特征可以用于所有用戶,縮主型適合于應(yīng)用程序員開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。,4,語(yǔ)言簡(jiǎn)介,數(shù)據(jù)操作語(yǔ)句 select、 insert 、 delete 、 update 數(shù)據(jù)定義語(yǔ)句 create table 、 drop table 、 alter table create view 、 drop view create index 、drop index create procedure 、 alter procedure 、 drop procedure create trigger 、 alter trigger、 drop trigger 數(shù)據(jù)訪問控制 grant 、 revoke 事務(wù)控制語(yǔ)句 begin transaction/commit 、 rollback 、 set transaction 編程語(yǔ)句 declare 、 open 、fetch、 close、execute,5,數(shù)據(jù)庫(kù)管理員和應(yīng)用系統(tǒng)開發(fā)人員用SQL語(yǔ)言可以做以下事情: 創(chuàng)建主鍵、外鍵、約束、規(guī)則、觸發(fā)器、事務(wù),用以實(shí)現(xiàn)數(shù)據(jù)完整性; 查詢、更新、刪除數(shù)據(jù)庫(kù)中的信息; 對(duì)各種數(shù)據(jù)庫(kù)對(duì)象設(shè)置不同的權(quán)限、實(shí)現(xiàn)數(shù)據(jù)庫(kù)的安全性; 進(jìn)行分布式數(shù)據(jù)處理,實(shí)現(xiàn)數(shù)據(jù)庫(kù)間的數(shù)據(jù)復(fù)制、傳遞和執(zhí)行分布式查詢; 可以創(chuàng)建批處理、存儲(chǔ)過程、視圖,方便應(yīng)用程序訪問數(shù)據(jù)庫(kù)中的數(shù)據(jù); 實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù),從聯(lián)機(jī)事務(wù)處理系統(tǒng)中提取數(shù)據(jù),對(duì)數(shù)據(jù)匯總進(jìn)行決策支持分析; 其他功能。,本章首頁(yè),6,3.2 數(shù)據(jù)類型,數(shù)據(jù)類型是指數(shù)據(jù)所代表的信息的類型。每一種語(yǔ)言都定義了自己的數(shù)據(jù)類型。 SQL Server 2000中定義了25種數(shù)據(jù)類型,同時(shí)允許用戶自己定義數(shù)據(jù)類型。 系統(tǒng)定義的數(shù)據(jù)類型有: binary(n) 、varbinary(n)、char(n)、varchar(n)、nchar(n)、nvarchar(n)、datetime、smalldatetime、decimalp(,s)、numericp(,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):固定長(zhǎng)度的n個(gè)字節(jié)二進(jìn)制數(shù)據(jù)。n必須是1到8000。存儲(chǔ)空間大小為n+4字節(jié)。 varbinary(n):n個(gè)字節(jié)可變長(zhǎng)二進(jìn)制數(shù)據(jù)。n必須從1到8000。存儲(chǔ)空間大小為實(shí)際數(shù)據(jù)長(zhǎng)度+4個(gè)字節(jié),而不是n個(gè)字節(jié)。 image:可變長(zhǎng)度的二進(jìn)制,其最大長(zhǎng)度為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:從-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.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)括起來(lái)由字母、數(shù)字、和符號(hào)組合而成的數(shù)據(jù),在內(nèi)存中占用一個(gè)字節(jié)。例Nanjing、3.23、&*op都是合法的字符數(shù)據(jù)。字符數(shù)據(jù)類型有char、varchar和text三種。 char:固定長(zhǎng)度的非unicode字符數(shù)據(jù),最大長(zhǎng)度為8000個(gè)字符; varchar:可變長(zhǎng)度的非unicode 字符數(shù)據(jù),最大長(zhǎng)度為8000個(gè)字符; text:可變長(zhǎng)度的非unicode 字符數(shù)據(jù),最大長(zhǎng)度為231-1個(gè)字符; 如果沒有在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定n,則默認(rèn)長(zhǎng)度為1。,10,3.2.4 unicode 數(shù)據(jù)類型 對(duì)于用單個(gè)字節(jié)編碼每個(gè)字符的數(shù)據(jù)類型,存在的問題就是此數(shù)據(jù)類型只能表示256個(gè)不同的字符。象漢字、日文或韓國(guó)文字這樣具有數(shù)千個(gè)字符的字母表就不可能處理了。 unicode標(biāo)準(zhǔn)每個(gè)字符用兩個(gè)字節(jié)來(lái)編碼,所以在系統(tǒng)中使用unicode數(shù)據(jù)類型,就可以解決大字母表的字符問題了。 unicode數(shù)據(jù)類型包括nchar、nvarchar和ntext。 nchar:固定長(zhǎng)度的unicode 數(shù)據(jù),最大長(zhǎng)度為4000個(gè)字符。 nvarchar:可變長(zhǎng)度的unicode數(shù)據(jù),其最大長(zhǎng)度為4000字符。 ntext:可孌長(zhǎng)度的unicoce數(shù)據(jù),其最大長(zhǎng)度為230-1個(gè)字符。 當(dāng)列的長(zhǎng)度固定不變時(shí),使用nchar數(shù)據(jù)類型;當(dāng)列的長(zhǎ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é),精確到分鐘。 設(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之間,精確到貨幣單位的千分之十,money數(shù)據(jù)類型要求個(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ù)庫(kù)范圍內(nèi),timestamp是唯一的,每次更新行時(shí)進(jìn)行更新。 uniqueidentifer:全局唯一標(biāo)識(shí)符(GUID),以十六進(jìn)制數(shù)字表示一個(gè)全局惟一的標(biāo)識(shí)。,13,3.2.8 用戶自定義數(shù)據(jù)類型 在SQL Server中,用戶可以根據(jù)需要自定義數(shù)據(jù)類型。用戶可以用SQL語(yǔ)言或企業(yè)管理器來(lái)自定義數(shù)據(jù)類型。 自定義數(shù)據(jù)類型定義后,與系統(tǒng)數(shù)據(jù)類型一樣使用。 創(chuàng)建自定義數(shù)據(jù)類型的好處: 利用自定義數(shù)據(jù)類型可使不同表不重復(fù)出現(xiàn)的各列數(shù)據(jù)具有相同的特性。 1.創(chuàng)建用戶自定義數(shù)據(jù)類型 ()使用SQL 語(yǔ)句創(chuàng)建 使用系統(tǒng)存儲(chǔ)過程sp_addtype創(chuàng)建,語(yǔ)法如下: sp_addtype type_name ,phystype(length)|(precision,scale),null | not null | identity,14,其中: type_name:是用戶定義的數(shù)據(jù)類型的名字。 Phystype:是用戶自定義數(shù)據(jù)類型所基于的系統(tǒng)數(shù)據(jù)類型,可以包括長(zhǎng)度、精度、標(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,char(6),not null (2)使用企業(yè)管理器創(chuàng)建自定義數(shù)據(jù)類型 進(jìn)入企業(yè)管理器進(jìn)入JWGL數(shù)據(jù)庫(kù)右擊“用戶自定義數(shù)據(jù)類型”點(diǎn)擊“新建用戶自定義數(shù)據(jù)類型” 后出現(xiàn)“用戶自定義數(shù)據(jù)類型”窗口輸入要定義的數(shù)據(jù)名稱,選擇數(shù)據(jù)類型,輸入數(shù)據(jù)長(zhǎng)度,確定是否允許為空點(diǎn)擊“確定”。,16,2.查看用戶自定義數(shù)據(jù)類型 可以用系統(tǒng)存儲(chǔ)過程sp_help或企業(yè)管理器來(lái)查看用戶定義的數(shù)據(jù)類型的特征。語(yǔ)法格式: exec sp_help 自定義數(shù)據(jù)類型名稱 3.重命名用戶自定義數(shù)據(jù)類型 使用過程sp_rename 可以很方便地重新命名一個(gè)用戶自定義數(shù)據(jù)類型。語(yǔ)法格式: exec sp_rename 舊名稱 , 新名稱 4.刪除用戶定義數(shù)據(jù)類型 使用過程sp_droptype 來(lái)刪除一個(gè)已經(jīng)定義且未被使用的用戶自定義數(shù)據(jù)類型。語(yǔ)法格式: exec sp_droptype 自定義數(shù)據(jù)類型名 必須注意不能刪除正在被表或其他數(shù)據(jù)庫(kù)使用的用戶自定義數(shù)據(jù)類型。,本章首頁(yè),17,3.3 局部變量與全局變量,從變量的作用范圍來(lái)區(qū)分,SQL Server提供兩種形式的變量:局部變量和全局變量。 1. 局部變量 局部變量一般在批處理中被聲明、定義、賦值和引用,批處理結(jié)束后,局部變量就消失了。 利用局部變量還可以保存程序執(zhí)行過程中的中間數(shù)據(jù)值,保存由存儲(chǔ)過程返回的數(shù)據(jù)值等。 (1)局部變量的定義 必須先用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è)可變長(zhǎng)字符型局部變量并賦值。 DECLARE 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) 如果被賦值的長(zhǎng)度超過DECLAER語(yǔ)句中聲明的長(zhǎng)度,將此值賦值給局部變量時(shí),超過的部分將被截去。如上例,局部變量 local_variable_char定義的長(zhǎng)度為9,而給其賦的值是“Welcom to Nanjing”,最后局部變量 local_variable_char的值為“Welcom to”。 2) 也可以用SELECT語(yǔ)句從表中查詢出的結(jié)果給局部變量賦值,但要保證查詢出的值的惟一性,否則不能保證給局部變量賦值的準(zhǔn)確性。 3) 在定義局部變量時(shí)容易發(fā)生數(shù)據(jù)類型不匹配的錯(cuò)誤。即:使用DECLARE語(yǔ)句定義的局部變量與賦給局部變量的值的數(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ì)數(shù)據(jù)。 在使用全局變量時(shí)應(yīng)該注意以下幾點(diǎn): 全局變量是在服務(wù)器級(jí)定義的。 SQL Server提供的全局變量分為兩類: 1) 與SQL Server 連接有關(guān)的全局變量。如:rowcount表示受最近一個(gè)語(yǔ)句影響的行數(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 以來(lái)連接或試圖連接的次數(shù)。 rowcount:返回上一條T-SQL語(yǔ)句影響到的數(shù)據(jù)行數(shù)。,21,error:返回上一條T-SQL語(yǔ)句執(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語(yǔ)句可以顯示局部變量和全局變量。語(yǔ)句形式為: 顯示局部變量:SELECT variable_name 顯示全局變量:SELECT variable_name,本章首頁(yè),22,3.4 運(yùn)算符,3.4.1 算術(shù)運(yùn)算符 算術(shù)運(yùn)算符包括加(+)、減()、乘(*)、除(/)和取模(%)(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)算符用來(lái)對(duì)整型數(shù)據(jù)或者二進(jìn)制數(shù)據(jù)(image數(shù)據(jù)類型除外)之間執(zhí)行位操作。要求在位運(yùn)算符左右兩側(cè)的操作數(shù)不能同時(shí)是二進(jìn)制數(shù)據(jù)。 例 select 2,2, 23,2|4,2&4(由同學(xué)自己去思考),23,3.4 運(yùn)算符,3.4.4 比較運(yùn)算符 比較運(yùn)算符包括:等于(=)、大于(>)、大于或等于(>=)、小于(或!=)、不小于(!)。 3.4.5 邏輯運(yùn)算符 邏輯運(yùn)算符包括與(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 (或) = (賦值),本章首頁(yè),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(),本章首頁(yè),26,3.6 簡(jiǎn)單的SELECT 語(yǔ)句,select語(yǔ)句是數(shù)據(jù)SQL中最重要的語(yǔ)句,其功能強(qiáng)大,使用靈活。 SELECT語(yǔ)句有豐富的子句,其最簡(jiǎn)單的用法是: 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,本章首頁(yè),27,3.7 批處理和 流程控制語(yǔ)句,通常,服務(wù)器端的程序使用SQL語(yǔ)句來(lái)編寫,一般而言,一個(gè)服務(wù)器端的程序是由以下一些成分組成: 批; 注釋; 程序中使用的變量; 改變批中語(yǔ)句的執(zhí)行順序的控制語(yǔ)句; 錯(cuò)誤和消息的處理。 3.7.1 批和腳本 1.批(batch) 兩個(gè)GO之間的SQL語(yǔ)句作為一個(gè)批處理。在一個(gè)批處理中可以包含一條或多條Transact-SQL語(yǔ)句,成為一個(gè)語(yǔ)句組。這樣的語(yǔ)句組從應(yīng)用程序一次性地發(fā)送到SQL Server服務(wù)器進(jìn)行執(zhí)行。SQL Server服務(wù)器將批處理編譯成一個(gè)可執(zhí)行單元,稱為執(zhí)行計(jì)劃。這樣處理可以節(jié)省系統(tǒng)開銷。,28,使用批時(shí)有如下限制: 1) 并不是所有語(yǔ)句都可以和其他語(yǔ)句在一個(gè)組合成批。下列語(yǔ)句不能組合在同一個(gè)批中: create procedure create rule create defaul create trigger create view 2)規(guī)則和缺省不能在同一個(gè)批中既綁定到列又被使用。 3)CHECK約束不能在同一個(gè)批中既定義又使用。 4)在同一個(gè)批中不能刪除對(duì)象又重新它。 5)用SET語(yǔ)句改變的選項(xiàng)在批結(jié)束時(shí)生效。 6)在同一個(gè)批中不能改變一個(gè)表再立即引用其新列。 另外當(dāng)一外含有多個(gè)批的SQL腳本提交執(zhí)行時(shí)發(fā)生錯(cuò)誤,SQL服務(wù)器顯示出的錯(cuò)誤行提示是錯(cuò)誤語(yǔ)句所在批中的行號(hào),而不是該語(yǔ)句在整個(gè)SQL腳本中的行號(hào)。 2. 腳本 腳本是一系列順序提交的批。,29,3.7.2 流程控制語(yǔ)句 流程控制語(yǔ)言是Transact - SQL對(duì)ANSI-92 SQL標(biāo)準(zhǔn)的擴(kuò)充。它可以控制SQL語(yǔ)句執(zhí)行的順序,在存儲(chǔ)過程、觸發(fā)器和批中很有用。具體包括: IF. . . ELSE 條件執(zhí)行命令; CASE語(yǔ)句 多條件分支選擇語(yǔ)句; GOTO語(yǔ)句 無(wú)條件轉(zhuǎn)移語(yǔ)句; BEGIN . . . END 將一組SQL語(yǔ)句作為一個(gè)語(yǔ)句塊; WHILE 循環(huán)執(zhí)行相同的語(yǔ)句; RETURN 無(wú)條件返回; PRINT 在屏幕上顯示信息; RAISERROR 將錯(cuò)誤信息顯示在屏幕上,同時(shí)也可以記錄在NT日志中; WAITFOR 等待語(yǔ)句。,3.7.2 流程控制語(yǔ)句,30,1. RETURN RETURN的作用是無(wú)條件退出所在的批、存儲(chǔ)過程和觸發(fā)器。退出時(shí),可以返回狀態(tài)信息。在RETURN語(yǔ)句后面的任何語(yǔ)句不被執(zhí)行。 RETURN語(yǔ)句的語(yǔ)法形式: RETURN integer_expression 其中,integer_expression 是一個(gè)表示過程返回的狀態(tài)值。系統(tǒng)保留0為成功。小于0為有錯(cuò)誤。,31,2. RAISERROR和PRINT PRINT語(yǔ)句 PRINT語(yǔ)句的作用是在屏幕上顯示用戶信息。PRINT語(yǔ)句的語(yǔ)法形式如下: PRINT string | local_variable | local_variable 其中,string代表一個(gè)不超過255字節(jié)的字符串。local_variable 代表一個(gè)局部變量,該局部變量必須是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語(yǔ)句 RAISERROR語(yǔ)句的作用是將錯(cuò)誤信息顯示在屏幕上,同時(shí)也可以記錄在NT日志中。RAISERROR 語(yǔ)句的語(yǔ)法形式: RAISERROR error_number msg_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語(yǔ)句有三種形式:簡(jiǎn)單型CASE語(yǔ)句、搜索型CASE語(yǔ)句、CASE關(guān)系函數(shù)。本書只介紹簡(jiǎn)單型CASE語(yǔ)句和搜索型CASE語(yǔ)句。 (1)簡(jiǎn)單型CASE語(yǔ)句 簡(jiǎn)單型CASE語(yǔ)句的語(yǔ)法形式: CASE expression WHEN expression THEN result ,.n ELSE result END 其中: expression :可以是常量、列名、函數(shù)、算術(shù)運(yùn)算符等。 簡(jiǎn)單型CASE語(yǔ)句是根據(jù)表達(dá)式expression 的值與WHEN后面的表達(dá)式逐一比較,如果兩者相等,返回THEN后面的表達(dá)式result的值,否則返回ELSE后面表達(dá)式result的值。,34,【例3-15】將PUBS庫(kù)中表titles里的 pub_id號(hào)為“0736”和“1839”記錄顯示出來(lái),其余的用“OTHER”顯示。 use pubs go select title,pub_id= case pub_id when 0736 then 0736 when 1389 then 1389 else OTHER end from titles,35,(2)搜索型CASE語(yǔ)句 搜索型CASE語(yǔ)句的語(yǔ)法形式: CASE WHEN Boolean_expression THEN result ,.n ELSE result END 其中: Boolean_expression :CASE語(yǔ)句要判斷的邏輯表達(dá)式。 搜索型CASE語(yǔ)句是判斷邏輯表達(dá)式Boolean_expression為真,則返回THEN后面表達(dá)式result的值,然后判斷下一個(gè)邏輯表達(dá)式,如果所有邏輯表達(dá)式都為假,則返回ELSE后面表達(dá)式result的值。,36,【例3-16】將PUBS庫(kù)中表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è)以上的SQL語(yǔ)句作為一組對(duì)待時(shí),可以使用BEGIN和END將它們括起來(lái)形成一個(gè)SQL語(yǔ)句塊,以達(dá)到一起執(zhí)行的目的。 BEGIN. . . END語(yǔ)句的語(yǔ)法形式: BEGIN Sql_statement END Sql_statement:是要執(zhí)行的任何合法的SQL語(yǔ)句或語(yǔ)句組,需要用戶加以注意的是它必須包含在一個(gè)單獨(dú)的批中。,38,5. IF. . . ELSE IF. . . ELSE語(yǔ)句的語(yǔ)法形式: IF Boolean_expression Sql_statement ELSE IF Boolean_expression Sql_statement 其中: Boolean_ expression:是布爾表達(dá)式,其值是TRUE或FALSE。 Sql_statement:是要執(zhí)行的SQL語(yǔ)句。這既可以是單個(gè)SQL語(yǔ)句,也可以是一組SQL語(yǔ)句。如果在IF或ELSE語(yǔ)句后面有多條SQL語(yǔ)句,必須把它們放在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 teacher go,40,6. WHILE 結(jié)構(gòu) WHILE語(yǔ)句的作用是為重復(fù)執(zhí)行某一語(yǔ)句或語(yǔ)句塊設(shè)置條件。當(dāng)指定條件為TRUE時(shí),執(zhí)行這些語(yǔ)句,直到為FALSE為止。 WHILE語(yǔ)句的語(yǔ)法形式: WHILE boolean- expression Sql_statement BREAK Sql_statement CONTINUE Sql_statement ,41,其中: boolean- expression:是布爾表達(dá)式,其值是TRUE或FALSE。 Sql_statement:是要執(zhí)行的SQL語(yǔ)句。既可以是單個(gè)SQL語(yǔ)句,也可以是一組SQL語(yǔ)句。如果在WHILE語(yǔ)句后面有多條SQL語(yǔ)句,必須把它們放在BEGIN . . . END塊中。 BREAK:是退出所在的循環(huán)。 CONTINUE:是使循環(huán)跳過CONTINUE之后的語(yǔ)句重新開始。,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,position,1) as asccode, char(ascii(substring( string,position,1) as ascchar set position= position+1 end,43,7. GOTO語(yǔ)句 使用GOTO語(yǔ)句可以使SQL語(yǔ)句的執(zhí)行流程無(wú)條件地轉(zhuǎn)移到指定的標(biāo)號(hào)位置。GOTO語(yǔ)句和標(biāo)號(hào)可以用在語(yǔ)句塊、批處理和存儲(chǔ)過程中,標(biāo)號(hào)的命名要符合標(biāo)識(shí)符命名規(guī)則。GOTO語(yǔ)句經(jīng)常用在WHILE和IF語(yǔ)句中以跳出循環(huán)或分支處理。 GO語(yǔ)句的語(yǔ)法形式: Label: GOTO label,44,【例3-19】使用IF語(yǔ)句求1到10之間的累加和并輸出結(jié)果 declare 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語(yǔ)句 使用WAITFOR語(yǔ)句可以在某一個(gè)時(shí)刻或某一個(gè)時(shí)間間隔后執(zhí)行SQL語(yǔ)句或語(yǔ)句組。 WAITFOR語(yǔ)句語(yǔ)法形式: 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.注釋語(yǔ)句 注釋語(yǔ)句是起說明代碼含義,增加腳本的可讀性,是不執(zhí)行的,有兩種用法: (1)/*/ 該方法可以注釋多行。 (2)- -(兩個(gè)減號(hào)) 用于一行的注釋。,本章首頁(yè),

注意事項(xiàng)

本文(SQL第3章Transact-SQL語(yǔ)言.ppt)為本站會(huì)員(sh****n)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!