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