《SQLServer第5章T-SQL語言.ppt》由會員分享,可在線閱讀,更多相關(guān)《SQLServer第5章T-SQL語言.ppt(71頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第5章 T-SQL語言,第5章 T-SQL語言,(1) 數(shù)據(jù)定義語言(DDL),(2) 數(shù)據(jù)操縱語言(DML),第5章 T-SQL語言,(3) 數(shù)據(jù)控制語言(DCL),5.1 常量、變量與數(shù)據(jù)類型,5.1.1 常 量,1.字符串常量,5.1.1 常 量,2. 整型常量,3. 實型常量,5.1.1 常 量,4. 日期時間常量,5.1.2 數(shù)據(jù)類型,1. 系統(tǒng)數(shù)據(jù)類型,2. 用戶自定義數(shù)據(jù)類型,5.1.2 數(shù) 據(jù) 類 型,1) 利用企業(yè)管理器定義,5.1.2 數(shù) 據(jù) 類 型,2) 利用命令定義數(shù)據(jù)類型,語法格式: 此語句后半部中,各類型名稱均需加單引號。,3. 自定義數(shù)據(jù)類型的刪除 1)用企業(yè)管理
2、器刪除自定義數(shù)據(jù)類型,5.1.2 數(shù) 據(jù) 類 型,2) 利用命令刪除自定據(jù)類型,【例】:刪除library_card_num類型的語句為:,4. 利用自定義類型定義字段,5.1.2 數(shù) 據(jù) 類 型,5.1.3 變 量,1. 變 量,1) 標(biāo)識符,(1) 常規(guī)標(biāo)識符,(2) 分隔標(biāo)識符,2) 變量的分類,(1) 全局變量,(2) 局部變量,以ASCII字母、Unicode字母、下劃線 (_)、@或#開頭,可后續(xù)一個或若干個ASCII字符、Unicode字符、下劃線 (_)、美元符號($)、@或#,但不能全為下劃線(_)、@或#。,5.1.3 變 量,2. 局部變量的使用 1) 局部變量的定義與賦
3、值 (1) 局部變量的定義,(2) 局部變量的賦值,【例】:創(chuàng)建局部變量@var1、@var2,并賦值,然后輸出變量的值。,5.1.3 變 量,【例】:創(chuàng)建一個名為sex的局部變量,并在 SELECT 語句中使用該局部變量查找表XS中所有男同學(xué)的借書證號、姓名。,【例】:查詢用于給 @var1 賦值。在 XS 表中ID_number不存在,因此子查詢不返回值,并將變量@var1設(shè)為 NULL。,5.1.3 變 量,2)局部游標(biāo)變量的定義與賦值 (1) 局部游標(biāo)變量的定義,5.1.3 變 量,(3) 游標(biāo)變量的使用步驟,【例】 : 使用游標(biāo)變量,5.2 運算符與表達(dá)式,1.算術(shù)運算符,【例】:
4、求 讀者的年齡,2.位運算符,5.2 運算符與表達(dá)式,【例】: 在maste數(shù)據(jù)庫中,建立表bitop,并插入一行,然后將a字段和 b字段上的值進行位運算。,5.2 運算符與表達(dá)式,5.2 運算符與表達(dá)式,3. 比較運算符,【例】:查詢指定借書證號的學(xué)生在XS表中的信息。,5.2 運算符與表達(dá)式,4. 邏輯運算符,5.2 運算符與表達(dá)式,1) ANY、SOME、ALL、IN的使用,【例】:查詢借書數(shù)量最多的讀者借書證號、姓名及借書數(shù)量,5.2 運算符與表達(dá)式,【例】:查詢借書數(shù)量多于王娟借書數(shù)量的讀者借書證 號、姓名、借書數(shù)量。,5.2 運算符與表達(dá)式,2) BETWEEN的使用,【例】:查詢
5、借書數(shù)量不在 5~10本之間的借書證號、姓名及借書量,5.2 運算符與表達(dá)式,【例】:查詢借書數(shù)量在 5~10本之間的借書證號、姓名及借書量,5.2 運算符與表達(dá)式,3) LIKE 的 使 用,5.2 運算符與表達(dá)式,【例】:查詢書名以“計算機”開頭的書籍的有關(guān)信息,【例】:在如下的存儲過程定義中,讀者的借書證號作 為入口參數(shù),然后使用模式匹配查找某個學(xué)生借的全部 書籍。,5.2 運算符與表達(dá)式,5.2 運算符與表達(dá)式,4)EXISTS與NOT EXISTS的使用,【例】:查詢所有當(dāng)前借了書的讀者借書證號、姓名。,5.2 運算符與表達(dá)式,5. 字符串聯(lián)接運算符,【例】:多個字符串的聯(lián)接。,6.
6、 一元運算,7. 賦值運算符,指給局部變量賦值的SET和SELECT語句中使用的“=”。,5.2 運算符與表達(dá)式,8. 運算符的優(yōu)先順序,5.3 流程控制語句,5.3 流程控制語句,1、批處理:一個或多個相關(guān)SQL語句的集合,以GO為其結(jié)束標(biāo)志。系統(tǒng)的程序發(fā)送和編譯以批處理為一程序執(zhí)行單元。如果其中任何一條語句出現(xiàn)語法錯誤,則整個批處理不能執(zhí)行;而若個別語句只是執(zhí)行錯誤(如違反約束),則該語句不能執(zhí)行,其它語句仍正常執(zhí)行。2、腳本:一個包含一個或多個批處理的程序文件(后綴為.sql)。我們可將創(chuàng)建、維護和使用數(shù)據(jù)庫的有關(guān)操作步驟-含有一個或多個批處理代碼的模塊存儲為一個磁盤文件(文本格式)。腳
7、本可在查詢分析器中輸入、編輯、保存或打開,并可通過islqw實用程序執(zhí)行;亦可在DOS命令行中通過isql或osql實用程序來執(zhí)行。 3、語句塊:以BEGIN…END作為一個結(jié)構(gòu),其中所包含的所有語句均將被視為一個獨立的語句塊,被系統(tǒng)當(dāng)作一個整體單元來加以處理。,5.3.1 IF...ELSE語句,5.3.1 IF...ELSE語句,【例】:如果“數(shù)據(jù)庫原理”這一書籍的價格高于平均價格,則顯示: “數(shù)據(jù)庫原理的價格高于平均價格”,否則顯示 “數(shù)據(jù)庫原理的價格低于平均價格”。,5.3.2 GOTO、 WHILE、BREAK、CONTINUE語句,2. WHILE循環(huán)語句,1.
8、GOTO語句,5.3.2 GOTO、 WHILE、BREAK、CONTINUE語句,【例】:顯示字符串"China"中每個字符的 ASCII 值和字符。,5.3.3 RETURN語句,【例】:創(chuàng)建存儲過程checkcount,根據(jù)書籍的ISBN檢查其庫存量,若庫存量>0,返回狀態(tài)代碼 1,否則返回狀態(tài)代碼 2。,5.3.3 RETURN語句,5.3.4 WAITFOR語句,【例】:語句設(shè)定在早上八點執(zhí)行存儲過程 ‘Manager’。,【例】:延時20秒后執(zhí)行waitfor delay ’00:00:20’,5.4 系統(tǒng)內(nèi)置函數(shù),SQL Server包含如下幾類標(biāo)量函數(shù):,1. 數(shù)學(xué)函數(shù),5.4
9、 系統(tǒng)內(nèi)置函數(shù),【例】:下面程序返回給定角的 ACOS 值。,【例】:下面程序通過 RAND 函數(shù)產(chǎn)生隨機值。,5.4 系統(tǒng)內(nèi)置函數(shù),2. 字符串處理函數(shù),【例】:返回書名最左邊的 10 個字符。,5.4 系統(tǒng)內(nèi)置函數(shù),【例】:使用 LTRIM 字符刪 除字符變量中的起始空格,【例】:用 REPLACE實 現(xiàn)字符串的替換,5.4 系統(tǒng)內(nèi)置函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),【例】:下面程序用于查詢ISBN號7-111-06359-7書籍的書名和庫存量,3. 系統(tǒng)函數(shù),CASE 函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),【例】:使用 CASE 函數(shù)對讀者按性別分類。,5.4 系統(tǒng)內(nèi)置函數(shù),2) CAST 和
10、CONVERT函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),【例】:下程序?qū)z索庫存量為30~50的ISBN、書名, 并將庫存量轉(zhuǎn)換為 char(20)。,5.4 系統(tǒng)內(nèi)置函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),3) COALESCE函數(shù),4. 日期時間函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),【例】:編寫程序根據(jù)讀者的出生時間,計算其年齡。,,5. 游標(biāo)函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),5.4 系統(tǒng)內(nèi)置函數(shù),【例】:用 @@FETCH_STATUS 控制在一個 WHILE 循環(huán)中的游標(biāo)活動,5.4 系統(tǒng)內(nèi)置函數(shù),6. 元數(shù)據(jù)函數(shù),5.5 用戶定義函數(shù),根據(jù)用戶定義函數(shù)返回值的類型,可將用戶定
11、義函數(shù)分為如下三類:,5.5.1 系統(tǒng)表sysobjects,5.5.2 用戶函數(shù)的定義與調(diào)用,5.5.2 用戶函數(shù)的定義與調(diào)用,函數(shù)與其引用對象(如數(shù)據(jù)庫表)的綁定關(guān)系只有在發(fā)生以下兩 種情況之一時才被解除:,5.5.2 用戶函數(shù)的定義與調(diào)用,【例】:定義一函數(shù),按性別計算當(dāng)前所有讀者的平均年齡。,5.5.2 用戶函數(shù)的定義與調(diào)用,5.5.2 用戶函數(shù)的定義與調(diào)用,2) 標(biāo)量函數(shù)的調(diào)用,(1) 在SELECT語句中調(diào)用,5.5.2 用戶函數(shù)的定義與調(diào)用,(2) 利用EXEC語句執(zhí)行,【例】:利用EXEC調(diào)用用戶定義函數(shù)aver_age。,2. 內(nèi)嵌表值函數(shù),5.5.2 用戶函數(shù)的定義與調(diào)用,
12、5.5.2 用戶函數(shù)的定義與調(diào)用,【例】:對于XSBOOK數(shù)據(jù)庫,若需要定義查詢讀者借閱歷史的 內(nèi)嵌表值函數(shù),如何實現(xiàn)?,5.5.2 用戶函數(shù)的定義與調(diào)用,5.5.2 用戶函數(shù)的定義與調(diào)用,2) 內(nèi)嵌表值函數(shù)的調(diào)用,【例】:調(diào)用fn_query()函 數(shù),查詢借書證號為“10000001”讀者的借閱歷史,3. 多語句表值函數(shù),5.5.2 用戶函數(shù)的定義與調(diào)用,【例】:在XSBOOK數(shù)據(jù)庫中創(chuàng)建返回table的函數(shù)book_readers,通過以ISBN號為實參,調(diào)用該函數(shù),查詢該書的名稱,當(dāng)前借閱該書的所有讀者的借書證號、姓名及索書號。,5.5.2 用戶函數(shù)的定義與調(diào)用,5.5.2 用戶函數(shù)的定義與調(diào)用,4. 用戶函數(shù)的建立,1) 利用查詢分析器創(chuàng)建用戶定義函數(shù),2) 利用企業(yè)管理器創(chuàng)建用戶定義函數(shù),5.5.3 用戶函數(shù)的刪除,5.6 綜合應(yīng)用訓(xùn)練,