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

數(shù)據(jù)庫教學(xué)資料第6章t-sql語言基礎(chǔ)

  • 資源ID:25676588       資源大小:3.37MB        全文頁數(shù):78頁
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

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

數(shù)據(jù)庫教學(xué)資料第6章t-sql語言基礎(chǔ)

第 6章 T-SQL語 言 概 述主 講 教 師 : 衛(wèi) 琳 6.1 T-SQL語 言 概 述6.1.1 T-SQL語 言 的 發(fā) 展 過 程 和 特 點(diǎn)6.1.2 T-SQL語 言 的 分 類數(shù) 據(jù) 定 義 語 言 (DDL)數(shù) 據(jù) 操 縱 語 言 (DML)數(shù) 據(jù) 控 制 語 言 (DCL) 語 句 功 能create 創(chuàng) 建 數(shù) 據(jù) 庫 或 數(shù) 據(jù) 庫 對 象alter 修 改 數(shù) 據(jù) 庫 或 數(shù) 據(jù) 庫 對 象drop 刪 除 數(shù) 據(jù) 庫 或 數(shù) 據(jù) 庫 對 象語 句 功 能select 從 表 或 視 圖 中 檢 索 數(shù) 據(jù)insert 將 數(shù) 據(jù) 插 入 到 表 或 視 圖 中update 修 改 表 或 視 圖 中 的 數(shù) 據(jù)delete 從 表 或 視 圖 中 刪 除 數(shù) 據(jù) 語 句 功 能grant 授 予 權(quán) 限r(nóng)evoke 收 回 權(quán) 限drop 禁 止 從 其 他 角 色 中 繼 承 許 可 權(quán) 限D(zhuǎn)DLDMLDCL 6.1.3 T-SQL法 約 定1.注 釋“ ”: 單 行 注 釋 ( 從 雙 連 字 符 到 行 尾 的 內(nèi) 容 )/*/: 多 行 注 釋 ( 對 /*/ 之 間 所 有 內(nèi) 容 )2.系 統(tǒng) 保 留 字不 要 使 用 保 留 關(guān) 鍵 字 作 為 對 象 名 稱 或 標(biāo) 識 符 /*創(chuàng) 建 名 為 example的 數(shù) 據(jù) 庫 , 并 存 放 在 “e:sql”目 錄 中 */CREATE DATABASE exampleON (name=example, -設(shè) 置 數(shù) 據(jù) 庫 文 件 名 稱 filename=e:sqlexample.mdf, -設(shè) 置 文 件 存 放 位 置 size=10, -指 定 文 件 大 小 maxsize=50) -指 定 文 件 的 最 大 容 量LOG ON -指 定 日 志 文 件(name=examplog, -指 定 日 志 文 件 名 稱 filename=e:sqlexample.ldf, -指 定 日 志 文 件 存 放 位 置 size=5mb, maxsize=25mb, filegrowth=5mb)go 6.2 附 加 的 語 言 元 素6.1.2 標(biāo) 識 符1. 標(biāo) 識 符 格 式( 1) 標(biāo) 識 符 的 首 字 符 必 須 是 下 列 字 符 之 一 。l 統(tǒng) 一 碼 ( Unicode) 2.0標(biāo) 準(zhǔn) 中 所 定 義 的 字 母 , 包 括 拉 丁 字 母 a-z和 A-Z,以 及 來 自 其 他 語 言 的 字 符 。l 下 劃 線 “ _”、 符 號 “ ”或 者 數(shù) 字 符 號 “ #”。( 2) 標(biāo) 識 符 的 后 續(xù) 字 符 可 以 是 以 下 3種 。l 統(tǒng) 一 碼 ( Unicode) 2.0標(biāo) 準(zhǔn) 中 所 定 義 的 字 母 。 l 來 自 拉 丁 字 母 或 其 他 國 家 /地 區(qū) 腳 本 的 十 進(jìn) 制 數(shù) 字 。l “ ”符 號 、 美 元 符 號 “ $”、 數(shù) 字 符 號 “ #”或 下 劃 線 “ _”。( 3) 標(biāo) 識 符 不 允 許 是 Transact-SQL的 保 留 字 。( 4) 不 允 許 嵌 入 空 格 或 其 他 特 殊 字 符 。 6.1.2 標(biāo) 識 符2 標(biāo) 識 符 分 類SQL Server將 標(biāo) 識 符 分 為 以 下 兩 種 類 型 :l 常 規(guī) 標(biāo) 識 符 : 符 合 標(biāo) 識 符 的 格 式 規(guī) 則 。l 分 隔 標(biāo) 識 符 : 包 含 在 雙 引 號 (“”)或 者 方 括 號 ( )內(nèi) 的 標(biāo) 識 符 。該 標(biāo) 識 符 可 以 不 符 合 標(biāo) 識 符 的 格 式 規(guī) 則 , 如 MR GZGLXT、MR和 GZGLXT之 間 含 有 空 格 , 但 因 為 使 用 了 方 括 號 , 所 以 視 為 分 隔標(biāo) 識 符 。 注 意 : 常 規(guī) 標(biāo) 識 符 和 分 隔 標(biāo) 識 符 包 含 的 字 符 數(shù) 必 須 在 1 128之 間 , 對 于 本 地 臨 時(shí) 表 , 標(biāo) 識 符 最 多 可 以 有 116個(gè) 字 符 。 6.2.2 常 量(1)字 符 型 常 量lASCII字 符 串 常 量 : 用 單 引 號 括 起 來 , 由 ASCII字 符 組 成 。 如 果 在 字 符 常 量 中 已 經(jīng) 包 含 了 一 個(gè) 單 引 號 , 那 么 可 以 使用 兩 個(gè) 單 引 號 表 示 這 個(gè) 帶 單 引 號 的 字 符 。 lUnicode字 符 串 常 量 的 格 式 與 ASCII字 符 串 常 量 相 似 , 但 它前 面 有 一 個(gè) 前 綴 N, 而 且 N前 綴 必 須 是 大 寫 的 。 如 : NSQL Server、 N張 三 、 N計(jì) 算 機(jī) 科 學(xué) 與 技術(shù) 。 6.2.2 常 量(2) 數(shù) 值 型 常 量數(shù) 值 型 常 量 包 含 整 型 常 量 和 實(shí) 數(shù) 型 常 量 。l整 型 常 量 (Integer)用 來 表 示 整 數(shù) 。 可 細(xì) 分 為 二 進(jìn) 制 整型 常 量 、 十 六 進(jìn) 制 整 型 常 量 和 十 進(jìn) 制 整 型 常 量 。 二 進(jìn) 制整 型 常 量 以 數(shù) 字 0或 1表 示 ; 十 六 進(jìn) 制 整 型 常 量 由 前 綴 0 x后 跟 十 六 進(jìn) 制 數(shù) 組 成 ; 十 進(jìn) 制 整 型 常 量 即 不 帶 小 數(shù) 點(diǎn) 的十 進(jìn) 制 數(shù) ;l實(shí) 數(shù) 型 常 量 用 來 表 示 帶 小 數(shù) 部 分 的 數(shù) , 有 定 點(diǎn) 數(shù) 和 浮點(diǎn) 數(shù) 兩 種 表 示 方 式 , 其 中 浮 點(diǎn) 數(shù) 使 用 科 學(xué) 記 數(shù) 法 來 表 示 。如 : 0.3E-5。 (3) 日 期 時(shí) 間 型 常 量 (datetime)日 期 時(shí) 間 型 常 量 使 用 特 定 格 式 的 字 符 日 期 值 來 表 示 ,并 且 用 單 引 號 括 起 來 。 如 2009年 4月 1日 可 以 用 以 下方 式 表 示 : April 1, 2009、 04/01/2009或 20090401。(4) 貨 幣 型 常 量 (money)貨 幣 型 常 量 以 前 綴 “ $”作 為 標(biāo) 識 。 如 $123.45。 6.2.2 變 量( 1) 變 量 名 稱在 SQL Server 2008系 統(tǒng) 中 , 變 量 的 命 名 規(guī) 則 如 下 :l第 一 個(gè) 字 符 必 須 是 字 母 、 數(shù) 字 、 下 畫 線 或 符 號 。 需 要 注 意 的 是 , 符 號 “ ”開 頭 的 變 量 表 示 局 部 變 量 、 符 號 “ ”開 頭 的 變 量 表 示 全 局 變 量 。l變 量 名 不 能 是 T-SQL語 言 的 系 統(tǒng) 保 留 字 (如 IF、 ELSE、 CONTINUE等 ), 包 括大 寫 和 小 寫 形 式 。l變 量 名 中 不 允 許 出 現(xiàn) 空 格 或 其 他 特 殊 字 符 。根 據(jù) 以 上 規(guī) 則 , 下 列 變 量 名 都 是 合 法 的 : a2、 abc、 student_3和 average。變 量 在 使 用 中 需 要 先 聲 明 再 使 用 , 聲 明 變 量 用 DECLARE語 句 , 其 語 法 格 式 如 下 :DECLARE 變 量 名 稱 變 量 的 數(shù) 據(jù) 類 型 , n說 明 :為 表 示 局 部 變 量 , 變 量 名 稱 的 第 一 個(gè) 字 符 必 須 是 所 有 變 量 在 聲 明 后 均 設(shè) 置 初 值 為 NULL 6.2.2 變 量( 2) 變 量 賦 值有 兩 種 為 變 量 賦 值 的 方 式 : 使 用 SET語 句 直 接 為 變 量 賦 值 和 使 用 SELECT語 句 選 擇 表 中 的 值 來 為 變 量 賦 值 。語 法 格 式 如 下 :l格 式 1: 使 用 SET語 句 賦 值SET 變 量 名 稱 =表 達(dá) 式l格 式 2: 使 用 SELECT語 句 賦 值SELECT 變 量 名 稱 =表 達(dá) 式 , n說 明 : 表 達(dá) 式 可 以 是 任 何 有 效 的 SQL表 達(dá) 式 ;一 個(gè) SELECT語 句 可 以 給 多 個(gè) 變 量 賦 值 , 而 一 個(gè) SET語 句 一 次 只 能 給 一 個(gè)變 量 賦 值 。 例 : 用 賦 值 語 句 分 別 定 義 兩 個(gè) 整 型 變 量 x和 y。 使 x的 值 為 20,y的 值 為 5, 計(jì) 算 并 顯 示 x, y, 3x +4y, xy, 和 x /y的 值 。declare x int,y intset x=20set y=5select x,y,3*x+4*y,x*y,x/y例 : 創(chuàng) 建 兩 個(gè) 局 部 變 量 , 并 賦 值 , 然 后 輸 出 變 量 的 值 。declare var1 char(4),var2 char(20)set var1=中 國 set var2=var1+是 一 個(gè) 偉 大 的 國 家 select var1,var2go 示 例 : 創(chuàng) 建 一 個(gè) 名 為 sex的 局 部 變 量 , 并 在 select語 句 中使 用 該 局 部 變 量 查 找 表 student中 所 有 女 同 學(xué) 的 信 息 。use xscj2005declare xb char(2)set xb=女 select * from studentwhere ssex=xb 例 : 使 用 查 詢 給 變 量 賦 值 。use XSCJ2005godeclare xm varchar(8)set xm =(select sname from student where sno=2008056103)select xmGouse XSCJ2005godeclare xm varchar(8)select xm =sname from studentselect xmGo說 明 : 如 果 返 回 多 個(gè) 值 , 將 返 回 的 最 后 一 個(gè) 值 賦 給 變 量 例 :use XSCJ2005godeclare xm varchar(8)select xm=劉 豐 select xm=sname from studentwhere sno=123456789select xm as namego說 明 : 如 果 select語 句 沒 有 返 回 行 , 變 量 將 保 留 當(dāng) 前 值 6.3 運(yùn) 算 符 和 表 達(dá) 式SQL Server 2008提 供 以 下 幾 類 運(yùn) 算 符 : 算 術(shù) 運(yùn) 算 符 、 關(guān) 系 運(yùn) 算 符 、邏 輯 運(yùn) 算 符 、 字 符 運(yùn) 算 符 和 位 運(yùn) 算 符 。6.3.1 算 術(shù) 運(yùn) 算 符算 術(shù) 運(yùn) 算 符 對 兩 個(gè) 表 達(dá) 式 執(zhí) 行 數(shù) 學(xué) 運(yùn) 算 。算 術(shù) 運(yùn) 算 符 說 明+ 加 法 運(yùn) 算 - 減 法 運(yùn) 算* 乘 法 運(yùn) 算/ 除 法 運(yùn) 算 , 如 果 兩 個(gè) 表 達(dá) 式 都 是 整 數(shù) , 則 結(jié) 果 是 整 數(shù) , 小 數(shù)部 分 被 截 斷%(求 模 ) 求 模 (求 余 )運(yùn) 算 , 返 回 兩 數(shù) 相 除 后 的 余 數(shù)算 術(shù) 運(yùn) 算 符 例 【 6-3】 : 計(jì) 算 6/5、 6.0/5.0、 5/6、 5.0/6.0與 6%5的 值 。select 6/5,6.0/5.0,0,5.0/6.0,6%5select 14/5,6.0/5.0,0,5.0/6.0,6%5select 6.0/5,6.0/5.0,0,5.0/6.0,6%5通 過 執(zhí) 行 語 句 我 們 注 意 到 : 6/5的 結(jié) 果 為 1, 而 6.0/5.0的 結(jié) 果 為 1.200000, 兩 者運(yùn) 算 結(jié) 果 并 不 相 同 。 原 因 在 于 當(dāng) 兩 個(gè) 具 有 相 同 數(shù) 據(jù) 類 型 的 數(shù) 進(jìn) 行 算 術(shù) 運(yùn) 算 時(shí) ,運(yùn) 算 結(jié) 果 依 然 是 當(dāng) 前 的 數(shù) 據(jù) 類 型 。 但 是 , 當(dāng) 兩 個(gè) 不 同 數(shù) 據(jù) 類 型 的 數(shù) 進(jìn) 行 算 術(shù) 運(yùn) 算 時(shí) , 數(shù) 據(jù) 類 型 優(yōu) 先 級 規(guī) 則 指 定 將 優(yōu) 先 級 較 低 的 數(shù) 據(jù) 類 型 轉(zhuǎn) 換 為 優(yōu) 先 級 較 高 的數(shù) 據(jù) 類 型 。 這 樣 能 夠 在 最 大 程 度 上 保 護(hù) 運(yùn) 算 結(jié) 果 的 正 確 性 和 合 理 性 。 同 樣 , 5/6與 5.0/6.0的 運(yùn) 算 結(jié) 果 也 不 相 同 。 6.3.2 關(guān) 系 運(yùn) 算 符關(guān)系運(yùn)算符說 明實(shí) 例= 相 等 姓 名 =”王 華 ” 大 于 成 績 85 小 于 年 齡 = 大 于 等 于 成 績 =60= 小 于 等 于 工 資 =2000、 != 不 等 于 所 屬 院 系 英 語 系 ! 不 小 于 學(xué) 分 ! 不 大 于 成 績 !=100 說 明 :l兩 個(gè) 數(shù) 值 型 數(shù) 據(jù) 比 較 時(shí) , 按 照 值 的 大 小 直 接 比 較 ;l兩 個(gè) 日 期 時(shí) 間 型 數(shù) 據(jù) 比 較 時(shí) , 按 照 年 、 月 、 日 的 先 后 順 序 比 較 ;l兩 個(gè) 字 符 型 數(shù) 據(jù) 比 較 時(shí) , 英 文 字 母 按 照 ASCII碼 值 大 小 比 較 , 漢 字 按 照 拼 音 先 后順 序 比 較 。 use XSCJgodeclare student char(6)set student=001111if(student0)select * from xs where 學(xué) 號 =student 6.3.3 邏 輯 運(yùn) 算 符運(yùn) 算 符運(yùn) 算 規(guī) 則AND 與 運(yùn) 算 , 兩 個(gè) 操 作 數(shù) 均 為 TRUE時(shí) , 結(jié) 果 才 為 TRUEOR 或 運(yùn) 算 , 若 兩 個(gè) 操 作 數(shù) 中 任 何 一 個(gè) 為 TRUE, 則 結(jié) 果 為 TRUENOT 非 運(yùn) 算 , 單 目 運(yùn) 算 , 結(jié) 果 值 取 反ALL 每 個(gè) 操 作 數(shù) 值 都 為 TRUE時(shí) , 結(jié) 果 為 TRUEANY 多 個(gè) 操 作 數(shù) 中 只 要 有 一 個(gè) 為 TRUE, 結(jié) 果 為 TRUEBETWEEN 若 操 作 數(shù) 在 指 定 的 范 圍 內(nèi) , 則 運(yùn) 算 結(jié) 果 為 TRUEEXISTS 若 子 查 詢 包 含 一 些 行 , 則 運(yùn) 算 結(jié) 果 為 TRUE IN 若 操 作 數(shù) 值 等 于 表 達(dá) 式 列 表 中 的 一 個(gè) , 則 結(jié) 果 為 TRUELIKE 若 操 作 數(shù) 與 某 種 模 式 相 匹 配 , 則 結(jié) 果 為 TRUESOME 若 在 一 系 列 操 作 數(shù) 中 , 有 些 值 為 TRUE, 則 結(jié) 果 為 TRUE 例 : 查 詢 成 績 高 于 李 明 最 高 成 績 的 學(xué) 生 姓 名 、 課 程 名 和 成 績select sname,cname,gradefrom student join sc join courseon o=oon student.sno=sc.snoand gradeall(select grade from student join sc join course on o=o on student.sno=sc.sno and sname=李 明 ) 1)any,all 例 : 查 詢 成 績 高 于 李 明 最 低 成 績 的 學(xué) 生 姓 名 、 課 程 名 和 成 績select sname,cname,gradefrom student join sc join courseon o=oon student.sno=sc.snoand gradeany(select grade from student join sc join course on o=o on student.sno=sc.sno and sname=李 明 ) 2) .Between例 : 查 詢 91及 92年 出 生 的 學(xué) 生 信 息select * from studentwhere sbirth between 1991-1-1 and 1992-12-31例 : 查 詢 不 是 91、 92年 出 生 的 學(xué) 生 信 息select * from studentwhere sbirth not between 1991-1-1 and 1992-12-31 查 詢 姓 王 或 姓 劉 的 學(xué) 生 信 息select * from studentwhere sname like 王 劉 %查 詢 不 姓 王 也 不 姓 劉 的 學(xué) 生 信 息select * from studentwhere sname like 王 劉 %通 配 符 說 明% 代 表 0個(gè) 或 多 個(gè) 字 符_ 代 表 單 個(gè) 字 符 指 定 范 圍 ( 如 : a-f、 0-9或 集 合 abcdef中 的 任 何 單 個(gè) 字 符 指 定 不 屬 于 范 圍 ( 如 : a-f、 0-9或 集 合 abcdef中 的 任 何單 個(gè) 字 符3) .Like 查 詢 所 有 選 課 的 學(xué) 生 信 息select * from studentwhere exists(select * from sc where sno=student.sno)查 詢 沒 有 選 課 的 學(xué) 生 信 息select * from studentwhere not exists(select * from sc where sno=student.sno)4. exists 6.3.4 字 符 運(yùn) 算 符 字 符 運(yùn) 算 符 只 有 一 個(gè) “ +”, 又 稱 為 字 符 串 串 聯(lián) 運(yùn) 算 符 。字 符 串 之 間 通 過 “ +”實(shí) 現(xiàn) 字 符 串 的 連 接 。select 8899+7788select 8899+7788select 8899+7788說 明 : 當(dāng) 數(shù) 據(jù) 類 型 不 相 同時(shí) , 轉(zhuǎn) 換 成 優(yōu) 先 級 別 高 的 。 6.3.5 位 運(yùn) 算 符 位 運(yùn) 算 符 在 兩 個(gè) 表 達(dá) 式 之 間 實(shí) 現(xiàn) 按 位 操 作 , 這 兩 個(gè) 表 達(dá) 式 應(yīng) 該 為整 型 數(shù) 據(jù) 類 型 或 與 整 型 兼 容 的 數(shù) 據(jù) 類 型 ( 如 字 符 型 等 , 但 不 能 是image類 型 )運(yùn) 算 符運(yùn) 算 法 則&(位 與 運(yùn) 算 ) 兩 個(gè) 參 與 運(yùn) 算 的 位 值 均 為 1時(shí) , 結(jié) 果 位 為 1, 否 則 為 0|(位 或 運(yùn) 算 ) 兩 個(gè) 參 與 運(yùn) 算 的 位 中 只 要 有 一 位 值 為 1, 結(jié) 果 就 為 1, 否 則 為 0(位 異 或 運(yùn) 算 ) 兩 個(gè) 參 與 運(yùn) 算 的 位 中 只 有 一 個(gè) 的 值 為 1時(shí) (不 可 以 兩 個(gè) 值 都為 1), 結(jié) 果 為 1; 只 有 當(dāng) 兩 個(gè) 參 與 運(yùn) 算 的 位 值 都 為 0或 都 為 1時(shí) , 結(jié) 果 才 為 0 6.3.5 位 運(yùn) 算 符示 例 :select 128&129,128|129,128129運(yùn) 算 符運(yùn) 算 法 則&(位 與 運(yùn) 算 ) 兩 個(gè) 參 與 運(yùn) 算 的 位 值 均 為 1時(shí) , 結(jié) 果 位 為 1, 否 則 為 0|(位 或 運(yùn) 算 ) 兩 個(gè) 參 與 運(yùn) 算 的 位 中 只 要 有 一 位 值 為 1, 結(jié) 果 就 為 1, 否 則為 0(位 異 或 運(yùn) 算 ) 兩 個(gè) 參 與 運(yùn) 算 的 位 中 只 有 一 個(gè) 的 值 為 1時(shí) (不 可 以 兩 個(gè) 值 都為 1), 結(jié) 果 為 1; 只 有 當(dāng) 兩 個(gè) 參 與 運(yùn) 算 的 位 值 都 為 0或 都 為 1時(shí) , 結(jié) 果 才 為 0128:129: 1000 00001000 0001 或 | 1000 0001128:129: 1000 00001000 0001與 &| 1000 0000 128:129: 1000 00001000 0001異 或 0000 0001 優(yōu) 先 級運(yùn) 算 符1 一 目 運(yùn) 算 : +(正 )、 -(負(fù) )、 (按 位 取 反 )2 *(乘 )、 /(除 )、 %(取 模 )3 +(加 )、 +(字 符 串 連 接 )、 -(減 )4 =、 、 =、 =、 、 !=、 !、 !yprint x大 于 yelse print x小 于 或 等 于 y6.4 流 程 控 制 語 句6.4.2 IF ELSE語 句IF 條 件 表 達(dá) 式語 句 體 1ELSE語 句 體 2 例 : 輸 入 一 個(gè) 坐 標(biāo) 值 , 判 斷 其 在 哪 一 個(gè) 象限declare x int,y intset x=8set y=-3if x0if y0print xy位 于 第 一 象 限 else print xy位 于 第 四 象 限 else if y0print xy位 于 第 二 象 限 else print xy位 于 第 三 象 限 IF.ELSE語 句 例 【 6-6】 : 設(shè) 定 變 量 score, 根 據(jù) score的 值判 斷 成 績 是 否 合 格 , 并 輸 出 結(jié) 論 。declare score int,a nchar(10)set score=55if score=60set a=N成 績 合 格 else set a=N成 績 不 合 格 select a 1.簡 單 case語 句l計(jì) 算 input_expression, 然 后 按 指 定 順 序 對 每 個(gè) when子 句 的input_expression when_expression進(jìn) 行 計(jì) 算 。l返 回 第 一 個(gè) 取 值 為 true的 input_expression= when_expression的result_expression.l如 果 沒 有 取 值 為 true的 input_expression= when_expression, 則 當(dāng) 指定 else子 句 時(shí) , sql server將 返 回 else_result_expression; 若 沒 有 指 定else子 句 時(shí) , 則 返 回 null值 。2.Case 搜 索 語 句l按 指 定 順 序 為 每 個(gè) when子 句 的 Boolean_expression求 值 。l返 回 第 一 個(gè) 取 值 為 true的 Boolean_expression的 result_expression。l如 果 沒 有 取 值 為 true的 Boolean_expression, 則 當(dāng) 指 定 else子 句 時(shí) , sql server將 返 回 else_result_expression; 若 沒 有 指 定 else子 句 時(shí) , 則返 回 null值 。 6.4.3 case 語 句 -簡 單 Case語 句 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其 他 END -Case搜 索 語 句 CASE WHEN sex = 1 THEN 男 WHEN sex = 2 THEN 女 ELSE 其 他 END 簡 單 Case語 句 只 返 回 第 一 個(gè) 符 合 條 件 的 值 , 剩 下 的 Case部 分 將 會被 自 動 忽 略 。 -比 如 說 , 下 面 這 段 SQL, 你 永 遠(yuǎn) 無 法 得 到 “第 二 類 ”這 個(gè) 結(jié) 果 CASE WHEN col_1 IN ( a, b) THEN 第 一 類 WHEN col_1 IN (a) THEN 第 二 類 ELSE其 他 END select sno,cno,grade,case when grade=90 then 優(yōu) 秀 when grade=80 then 良 好 when grade=70 then 中 等 when grade=60 then 及 格 when grade60 then 不 及 格 end as 成 績 等 級from sc1.簡 單 Case 語 句 6.4.3 case 語 句2.Case 搜 索 語 句例 6-7:create table temp(score int not null)insert into temp values(60)insert into temp values(30)insert into temp values(90)insert into temp values(106)insert into temp values(87) select score,等 級 =case when score=60 and score=80 and score=90 and score=0 and 成 績 =60 and 成 績 =70 and 成 績 =80 and 成 績 =90 and 成 績 =100 then 優(yōu) 秀 end from scgo select * from v 6.4.4 goto語 句無 條 件 轉(zhuǎn) 移 語 句 , 使 用 goto語 句 可 以 將 執(zhí) 行 流 程 轉(zhuǎn) 移 到 標(biāo) 簽 指定 的 位 置 。 為 了 與 前 面 的 版 本 兼 容 , SQL SERVER 2008 支 持 goto語 句 ,但 由 于 該 語 句 破 壞 了 語 句 的 結(jié) 構(gòu) , 容 易 引 發(fā) 不 易 發(fā) 現(xiàn) 的 問 題 , 所 以 應(yīng) 該盡 量 減 少 或 避 免 使 用 。declare x intset x=1loving: print xselect x=x+1while x=3goto loving說 明 : 標(biāo) 號 是 GOTO目 標(biāo) , 它 不 僅 僅 標(biāo) 識 了 跳 轉(zhuǎn) 目 標(biāo) , 標(biāo) 號 不 隔 離 其 前 后 語 句 。執(zhí) 行 標(biāo) 號 前 面 語 句 的 用 戶 跳 過 標(biāo) 號 并 執(zhí)行 標(biāo) 號 后 的 語 句 。 除 非 標(biāo) 號 前 面 的 語 句本 身 是 控 制 流 語 句 ( return) , 這 種 情 況才 發(fā) 生 。 declare pjf floatif (select COUNT(*)from scwhere sno=2007056101)=0goto labelelse begin select pjf=AVG(grade)from scwhere sno=2007056101print pjfendlabel: print 無 學(xué) 生 或 此 學(xué) 生 沒 有 選 課 ! 示 例 : 輸 出 2007056101號 學(xué) 生 平 均 成 績 , 若 此 學(xué) 生 沒 有 選 課 ,則 顯 示 相 應(yīng) 提 示 信 息 , 用 goto完 成 。 說 明 : 標(biāo) 號 是 GOTO目 標(biāo) , 它 不 僅 僅 標(biāo) 識 了 跳 轉(zhuǎn) 目 標(biāo) ,標(biāo) 號 不 隔 離 其 前 后 語 句 。 執(zhí) 行 標(biāo) 號 前 面 語 句 的 用 戶 跳過 標(biāo) 號 并 執(zhí) 行 標(biāo) 號 后 的 語 句 。 除 非 標(biāo) 號 前 面 的 語 句 本身 是 控 制 流 語 句 ( return) , 這 種 情 況 才 發(fā) 生 。 6.4.5 whilebreak和 continue 語 句1.while 語 句declare s int,num intselect s=0,num=1while num=100begin set s=s+numset num=num+1endprint 1+2+3+.+100=+convert(char,s)go declare x intset x=1while x=3begin print xselect x=x+1end 6.4.5 whilebreak和 continue 語 句2.break 語 句 break 語 句 一 般 用 在 while循 環(huán) 或 if .else語 句 中 , 用 于 退 出 本 層 循 環(huán) 。例 : 求 1100之 間 的 累 加 和 , 當(dāng) 和 超 過 1000時(shí) 停 止 累 加 , 顯 示 累 加 和 以 及 累加 到 的 位 置 。declare i int,s intset i=1set s=0while i=1000 breakset i=i+1endselect s as s,i as i 6.4.5 whilebreak和 continue 語 句3.continue 語 句continue 命 令 可 以 讓 程 序 跳 過 continue命 令 之 后 的 語 句 ,回 到 while循 環(huán) 的 第 一 行 命 令 。 Break則 讓 程 序 完 全 跳 出 循環(huán) , 結(jié) 束 while命 令 的 執(zhí) 行 。例 : 求 110之 間 的 偶 數(shù) 和 , 并 用 continue控 制 語 句 的 輸 出 。declare x int,sum intset x=1set sum=0 while x0print 遇 到 return之 前 returnprint 遇 到 return之 后 SQL SERVER2005新 增 功 能 try.catch語 句Bgein try語 句 語 句 塊 End tryBegin catch語 句 語 句 塊 End catch 類 似 C+的 異 常 處 理 , 當(dāng) 執(zhí) 行 try語 句 塊 中 的 代 碼 出現(xiàn) 錯(cuò) 誤 時(shí) , 系 統(tǒng) 將 把 控 制 傳 遞 到 catch語 句 塊 進(jìn) 行 處 理 。 begin trycreate database testend trybegin catchprint test數(shù) 據(jù) 庫 已 存 在 drop database testprint 原 有 的 test數(shù) 據(jù) 庫 已 刪 除 create database testprint test數(shù) 據(jù) 庫 再 次 成 功 創(chuàng) 建 end catch 6.5 函 數(shù)6.5.1 數(shù) 學(xué) 函 數(shù)數(shù) 學(xué) 函 數(shù)功 能ABS(數(shù) 值 表 達(dá) 式 ) 絕 對 值 函 數(shù) , 返 回 數(shù) 值 表 達(dá) 式 的 絕 對 值A(chǔ)COS(實(shí) 型 表 達(dá) 式 ) 反 余 弦 函 數(shù) , 返 回 一 個(gè) 余 弦 值 對 應(yīng) 的 角 度 。 角 度 以 弧 度 表 示 ,實(shí) 型 表 達(dá) 式 取 值 范 圍 從 -11, 若 參 數(shù) 超 過 此 范 圍 , 函 數(shù) 返 回NULL并 報(bào) 告 錯(cuò) 誤COS(數(shù) 值 表 達(dá) 式 ) 正 弦 函 數(shù) , 返 回 表 達(dá) 式 中 以 弧 度 表 示 的 指 定 角 的 余 弦 值EXP(數(shù) 值 表 達(dá) 式 ) 指 數(shù) 函 數(shù) , 返 回 表 達(dá) 式 的 指 數(shù) 值LOG(數(shù) 值 表 達(dá) 式 ) 自 然 對 數(shù) 函 數(shù) , 返 回 表 達(dá) 式 的 自 然 對 數(shù) 值 PI() 圓 周 率 函 數(shù) , 返 回 14位 小 數(shù) 的 圓 周 率 常 量 值RAND() 隨 機(jī) 函 數(shù) , 隨 機(jī) 返 回 01之 間 的 float數(shù) 值SIGN(數(shù) 值 表 達(dá) 式 ) 符 號 函 數(shù) , 返 回 表 達(dá) 式 的 正 號 、 零 或 負(fù) 號SIN(數(shù) 值 表 達(dá) 式 ) 正 弦 函 數(shù) , 返 回 表 達(dá) 式 中 以 弧 度 表 示 的 指 定 角 的 正 弦 值SQRT(數(shù) 值 表 達(dá) 式 ) 平 方 根 函 數(shù) , 返 回 表 達(dá) 式 的 平 方 根TAN(數(shù) 值 表 達(dá) 式 ) 正 切 函 數(shù) , 返 回 指 定 表 達(dá) 式 中 以 弧 度 表 示 的 指 定 角 的 正 切 值 例 【 6-8】 : 使 用 常 用 數(shù) 學(xué) 函 數(shù) 計(jì) 算 -1的 絕 對 值 , e的 10次 方 , 5的自 然 對 數(shù) , 半 徑 為 3的 圓 的 面 積 和 49的 平 方 根 。SELECT N-1絕 對 值 =ABS(-1),Ne的 10次 方 =EXP(10),N5的 自 然 對 數(shù) =LOG(5),N半 徑 為 3的 圓 的 面 積 =PI()*3*3,N49的 平 方 根 =SQRT(49) 6.5.2 字 符 串 函 數(shù)字符串函數(shù)功 能ASCII(字 符 表 達(dá) 式 ) ASCII函 數(shù) , 返 回 字 符 串 表 達(dá) 式 中 最 左 端 字 符 的 ASCII碼 值CHAR(整 型 表 達(dá) 式 ) ASCII碼 轉(zhuǎn) 換 函 數(shù) , 參 數(shù) 為 介 于 0255之 間 的 整 數(shù) , 返 回 整 數(shù)的 ASCII碼LEFT(字 符 表 達(dá) 式 , n) 左 子 串 函 數(shù) , 返 回 從 字 符 串 左 邊 開 始 的 n個(gè) 字 符LEN(字 符 表 達(dá) 式 ) 字 符 串 長 度 函 數(shù) , 返 回 字 符 串 表 達(dá) 式 中 字 符 的 個(gè) 數(shù)LOWER(字 符 表 達(dá) 式 ) 小 寫 字 母 函 數(shù) , 將 大 寫 字 母 轉(zhuǎn) 換 為 小 寫 字 母 , 返 回 表 達(dá) 式 的小 寫 字 母 表 示LTRIM(字 符 表 達(dá) 式 ) 刪 除 前 導(dǎo) 空 格 函 數(shù) , 返 回 刪 除 了 前 導(dǎo) 空 格 的 字 符 表 達(dá) 式REPLACE(字 符 表 達(dá) 式 1, 字 符 表 達(dá) 式 2, 字 符 表 達(dá)式 3) 字 符 替 換 函 數(shù) , 用 第 三 個(gè) 表 達(dá) 式 替 換 第 一 個(gè) 字 符 串 表 達(dá) 式 中包 含 的 所 有 第 二 個(gè) 字 符 表 達(dá) 式 , 并 返 回 替 換 后 的 表 達(dá) 式RIGHT(字 符 表 達(dá) 式 , n) 右 子 串 函 數(shù) , 返 回 從 字 符 串 右 邊 開 始 的 n個(gè) 字 符RTRIM(字 符 表 達(dá) 式 ) 刪 除 尾 隨 空 格 函 數(shù) , 返 回 刪 除 所 有 尾 隨 空 格 的 字 符 表 達(dá) 式STR(數(shù) 值 表 達(dá) 式 , 長度 n , 小 數(shù) 位 ) 數(shù) 字 向 字 符 轉(zhuǎn) 換 函 數(shù) , 返 回 由 數(shù) 字 轉(zhuǎn) 換 過 來 的 字 符 串 , 長 度用 于 指 定 總 長 度 , 包 括 小 數(shù) 點(diǎn) , 小 數(shù) 位 指 小 數(shù) 點(diǎn) 右 邊 的 位 數(shù)UPPER(字 符 表 達(dá) 式 ) 大 寫 字 母 函 數(shù) , 返 回 指 定 表 達(dá) 式 的 大 寫 字 母 表 示 例 【 6-9】 : 使 用 常 用 字 符 串 函 數(shù) 計(jì) 算 A的 ASCII碼 , SQL Server的 前 3個(gè) 字符 , 數(shù) 據(jù) 庫 原 理 字 符 串 的 長 度 , 將 China轉(zhuǎn) 換 為 大 寫 字 母 , 將 英 語 四 級 改 為 英 語 六 級 。T-SQL語 句 如 下 :SELECT NA的 ASCII=ASCII(A), NSQL Server的 前 3個(gè) 字 符 =LEFT(SQL Server,3), N數(shù) 據(jù) 庫 原 理 的 長 度 =LEN(N數(shù) 據(jù) 庫 原 理 ), N將 China轉(zhuǎn) 換 為 大 寫 字 母 =UPPER(China), N將 英 語 四 級 改 為 英 語 六 級 =REPLACE(N英 語 四 級 ,N四 ,N六 )declare s varchar(50)set s=北 京 ,歡 迎 您 !select right(s,4)+left(s,2)將 北 京 ,歡 迎 您 !變 成 歡 迎 您 ! 北 京 select ASCII(loving) /*返 回 最 左 端 字 符 的 ascii碼 值 Len用 于 返 回 指 定 字 符 串 的 字 符 ( 而 不 是 字 節(jié) ) 個(gè) 數(shù) 。select LEN(loving)select len(2011.10.01)select LEN (李 小 蔥 生 日 快 樂 ! ) declare s varchar(50)set s=2001年 月 歡 慶 北 京 申 奧 成 功 -變 成 北 京 年 月 申 奧 成 功 select substring(s,11,2)+LEFT(s,8)+RIGHT(s,4) select replicate(loving,3)select REPLACE(SQL SERVER,ER,loving)Replace函 數(shù) 將 字 符 串 中 的 子 字 符 串 替 換 為 指 定 字 符 串Replicate函 數(shù) 用 于 指 定 的 次 數(shù) 重 復(fù) 字 符 串 表 達(dá) 式select ASCII(loving)ascii函 數(shù) 返 回 最 左 端 字 符 的 ascii代 碼 值 。純 數(shù) 字 的 字 符 串 可 以 不 用 單 引 號 , 而 其 他 字 符 表 達(dá) 式 必 需用 ,否 則 出 錯(cuò) 。 子 串 替 換 函 數(shù)格 式 : STUFF( 字 符 表 達(dá) 式 1, 起 始 位 置 , 長 度 , 字 符 表 達(dá) 式 2)功 能 : 用 “ 字 符 表 達(dá) 式 2”的 值 替 換 “ 字 符 表 達(dá) 式 1”中 由 “ 起 始位 置 ” 和 “ 長 度 ” 指 明 的 一 個(gè) 子 串 。select STUFF(計(jì) 算 機(jī) 等 級 考 試 ,4,2,專 業(yè) )select STUFF(計(jì) 算 機(jī) 等 級 考 試 ,6,0,二 級 ) select charindex(l,I like football) 搜 索 的 起 始 位 置 是 1select charindex(l,I like football,4) 搜 索 的 起 始 位 置 是 4select charindex(l,I like football,15) 搜 索 的 起 始 位 置 是 15Charindex函 數(shù) 返 回 字 符 串 指 定 表 達(dá) 式 的 起 始 位 置 。 6.5.3 日 期 和 時(shí) 間 函 數(shù)日期和時(shí)間函數(shù)描 述DAY(日 期 時(shí) 間 型 數(shù) 據(jù) ) 返 回 指 定 日 期 的 “ 天 ” 部 分 的 整 數(shù)GETDATE(日 期 時(shí) 間 型數(shù) 據(jù) ) 以 標(biāo) 準(zhǔn) 格 式 返 回 本 地 服 務(wù) 器 的 DATETIME值DATEADD(時(shí) 間 間 隔 ,數(shù) 值 表 達(dá) 式 , 日 期 ) 為 DATETIME值 添 加 間 隔 。 時(shí) 間 間 隔 項(xiàng) 決 定 時(shí) 間 間 隔的 單 位 , 可 取 Year、 Day of year(一 年 的 日 數(shù) )、Quarter、 Month、 Day、 Week、 Weekday(一 周 的 日數(shù) )、 Hour、 Minute、 Second、 Millisecond。 數(shù) 值 表達(dá) 式 為 加 上 或 者 減 去 的 時(shí) 間 間 隔 DATEDIFF(時(shí) 間 間 隔 ,日 期 1, 日 期 2) 計(jì) 算 兩 個(gè) DATETIME值 之 間 指 定 的 日 期 部 分 的 差 , 返回 數(shù) 值 型 數(shù) 據(jù) 。 時(shí) 間 間 隔 項(xiàng) 決 定 時(shí) 間 間 隔 的 單 位 , 取值 與 DATEADD中 的 時(shí) 間 間 隔 項(xiàng) 相 同MONTH(日 期 時(shí) 間 型 數(shù)據(jù) ) 返 回 指 定 日 期 的 “ 月 ” 部 分 的 整 數(shù)YEAR(日 期 時(shí) 間 型 數(shù) 據(jù) ) 返 回 指 定 日 期 的 “ 年 ” 部 分 的 整 數(shù) ConvertCONVERT() 函 數(shù) 是 把 日 期 轉(zhuǎn) 換 為 新 數(shù) 據(jù) 類 型 的 通 用 函 數(shù) 。CONVERT() 函 數(shù) 可 以 用 不 同 的 格 式 顯 示 日 期 /時(shí) 間 數(shù) 據(jù) 。例 如 : convert(char(4),year(date1) 例 【 6-10】 : 使 用 日 期 和 時(shí) 間 函 數(shù) 顯 示 當(dāng) 前 日 期 , 在 當(dāng) 前日 期 后 10天 的 日 期 , 當(dāng) 前 日 期 與 2011年 1月 1日 相 隔 的 天 數(shù) 。T-SQL語 句 如 下 :SELECT N顯 示 當(dāng) 前 系 統(tǒng) 日 期 =GETDATE(),N在 當(dāng) 前 日 期 后 10天 的 日 期=DATEADD(day,10,GETDATE(),N當(dāng) 前 日 期 與 2011年 1月 1日 相 隔 的 天 數(shù)=DATEDIFF(DAY,GETDATE(),2011-01-01) 補(bǔ)充:數(shù)據(jù)類型轉(zhuǎn)換函數(shù)數(shù) 據(jù) 類 型 轉(zhuǎn) 換 函 數(shù) 可 以 將 某 一 種 類 型 的 數(shù) 據(jù) 轉(zhuǎn) 換 成 另 一 種 類型 的 數(shù) 據(jù) 。1)數(shù)值轉(zhuǎn)換為字符函數(shù)格 式 : STR(數(shù) 值 表 達(dá) 式 , 長 度 , 小 數(shù) 位 數(shù) )功 能 : 將 數(shù) 值 表 達(dá) 式 的 值 轉(zhuǎn) 換 為 字 符 串 , 轉(zhuǎn) 換 時(shí) 自 動 四 舍 五入 。 默 認(rèn) 長 度 為 10, 若 不 指 定 小 數(shù) 位 則 保 留 到 整 數(shù) 位 , 如 果 長度 小 于 數(shù) 值 表 達(dá) 式 值 的 整 數(shù) 位 數(shù) , 則 返 回 一 串 *號 。理 想 長 度 =整 數(shù) +小 數(shù) 點(diǎn) +小 數(shù)要 求 長 度 理 想 長 度 : 加 前 導(dǎo) 符整 數(shù) 長 度 要 求 長 度 理 想 長 度 : 保 留 整 數(shù) 部 分 , 調(diào) 整 小 數(shù) 部分 。要 求 長 度 para2set max=para1else set max=para2return(max)end1.標(biāo) 量 函 數(shù) use xscj2005gocreate function a(no char(10) returns tableas return (select student.學(xué) 號 ,姓 名 ,課 程 名 ,成 績from student,sc,coursewhere student.學(xué) 號 =sc.學(xué) 號 and sc.課 程 號 =course.課 程 號 and student.學(xué) 號 =no)goselect * from a(2008056102)2.內(nèi) 嵌 表 值 函 數(shù) : 只 能 通 過 select語 句 調(diào) 用 , 在 調(diào) 用 時(shí) 可 以 省 略 函 數(shù) 的所 有 者 use xscj2005gocreate function b(no char(10) returns score table(sno char(10), sname varchar(8), cname varchar(30), grade tinyint)as begin insert scoreselect student.學(xué) 號 ,姓 名 ,課 程 名 ,成 績from student,sc,coursewhere student.學(xué) 號 =sc.學(xué) 號 and sc.課 程 號 =course.課 程 號 and student.學(xué) 號 =no returnendgoselect * from b(2008056103) 3.多 語 句 表 值 函 數(shù) : print dbo.maxf(12,38.6)select N最 大 數(shù) 為 :+convert(varchar(10),dbo.maxf(2.8,15676.9)declare m realexec m=dbo.maxf 12.8,789.6select m as 最 大 數(shù) 為 declare m realexec m=dbo.maxf para1=789.6,para2=12.8select m as 最 大 數(shù) 為 4.自 定 義 函 數(shù) 的 調(diào) 用調(diào) 用 標(biāo) 量 函 數(shù) , 必 順 提 供 至 少 由 兩 部 分 組 成 的 名 稱 ( 所 有者 .函 數(shù) 名 ) , 可 用 print, select, exec語 句 調(diào) 用 內(nèi) 嵌 表 值 函 數(shù) 和 多 語 句 表 值 函 數(shù) 都 返 回 表 , 二 者 不 同 之處 在 于 :內(nèi) 嵌 表 值 函 數(shù) 沒 有 函 數(shù) 體 , 返 回 的 表 是 單 個(gè) select語 句 的 結(jié) 果 集 。多 語 句 表 值 函 數(shù) 在 begin.end 定 義 的 函 數(shù) 主 體 包 含 T-SQL語 句 ,這 些 語 句 可 生 成 行 并 將 行 插 入 表 中 , 最 后 返 回 表 。

注意事項(xiàng)

本文(數(shù)據(jù)庫教學(xué)資料第6章t-sql語言基礎(chǔ))為本站會員(san****019)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

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




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

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

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


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