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