SQL_Server_2008基礎(chǔ)教程_(7)_第1頁
SQL_Server_2008基礎(chǔ)教程_(7)_第2頁
SQL_Server_2008基礎(chǔ)教程_(7)_第3頁
SQL_Server_2008基礎(chǔ)教程_(7)_第4頁
SQL_Server_2008基礎(chǔ)教程_(7)_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2021年12月15日第1頁第第7章章 操縱數(shù)據(jù)操縱數(shù)據(jù)本章概述 本章要點本章內(nèi)容2021年12月15日第2頁本章概述本章概述l如何向表中插入數(shù)據(jù)呢?如何查看或瀏覽表中的如何向表中插入數(shù)據(jù)呢?如何查看或瀏覽表中的數(shù)據(jù)呢?如何修改表中的數(shù)據(jù)呢?這些都涉及到數(shù)據(jù)呢?如何修改表中的數(shù)據(jù)呢?這些都涉及到對表的操縱。表創(chuàng)建之后,就可以對表執(zhí)行各種對表的操縱。表創(chuàng)建之后,就可以對表執(zhí)行各種操縱了。操縱表實際上就是操縱數(shù)據(jù)。用戶可以操縱了。操縱表實際上就是操縱數(shù)據(jù)。用戶可以根據(jù)需要向表中添加數(shù)據(jù)或更新表中已有的數(shù)據(jù),根據(jù)需要向表中添加數(shù)據(jù)或更新表中已有的數(shù)據(jù),甚至可以刪除表中不再使用的數(shù)據(jù)。在更多情況甚至可

2、以刪除表中不再使用的數(shù)據(jù)。在更多情況下,用戶需要檢索表中的數(shù)據(jù)。如果需要的數(shù)據(jù)下,用戶需要檢索表中的數(shù)據(jù)。如果需要的數(shù)據(jù)在一個表中,檢索操作就比較簡單。如果需要的在一個表中,檢索操作就比較簡單。如果需要的數(shù)據(jù)分散在多個不同的表中,就需要執(zhí)行復(fù)雜的數(shù)據(jù)分散在多個不同的表中,就需要執(zhí)行復(fù)雜的檢索操作。本章將全面研究操縱數(shù)據(jù)的內(nèi)容。檢索操作。本章將全面研究操縱數(shù)據(jù)的內(nèi)容。2021年12月15日第3頁本章要點本章要點l操縱數(shù)據(jù)需要解決的問題操縱數(shù)據(jù)需要解決的問題l使用使用INSERT語句插入數(shù)據(jù)語句插入數(shù)據(jù)l使用使用UPDATE語句更新數(shù)據(jù)語句更新數(shù)據(jù)l使用使用DELETE語句刪除數(shù)據(jù)語句刪除數(shù)據(jù)l使

3、用使用SELECT語句檢索數(shù)據(jù)語句檢索數(shù)據(jù)l理解分組、子查詢、連接、集合運算、理解分組、子查詢、連接、集合運算、CTE等檢等檢索特點索特點l理解數(shù)據(jù)加密的方式和特點理解數(shù)據(jù)加密的方式和特點2021年12月15日第4頁本章內(nèi)容本章內(nèi)容7.1 概述概述7.2 插入數(shù)據(jù)插入數(shù)據(jù)7.3 更更 新新 數(shù)數(shù) 據(jù)據(jù)7.4 刪刪 除除 數(shù)數(shù) 據(jù)據(jù)7.5 檢索操作概述檢索操作概述7.6 使用使用SELECT子句檢索數(shù)據(jù)子句檢索數(shù)據(jù)7.7 排排 序序7.8 使用使用WHERE子句選擇數(shù)據(jù)子句選擇數(shù)據(jù)7.9 聚聚 合合 技技 術(shù)術(shù)7.10 分分 組組 技技 術(shù)術(shù)7.11 連連 接接 技技 術(shù)術(shù)7.12 子查詢技術(shù)子

4、查詢技術(shù)7.13 集合運算技術(shù)集合運算技術(shù)7.14 公用表表達式公用表表達式7.15 PIVOT和和UNPIVOT7.16 加密表中數(shù)據(jù)加密表中數(shù)據(jù)7.17 本本 章章 小小 結(jié)結(jié)7.1 概述概述l下面,通過一個具體示例,研究表創(chuàng)建之下面,通過一個具體示例,研究表創(chuàng)建之后用戶面臨的操縱數(shù)據(jù)問題和解決這些操后用戶面臨的操縱數(shù)據(jù)問題和解決這些操縱數(shù)據(jù)問題的思路。縱數(shù)據(jù)問題的思路。l按照圖按照圖7-1所示創(chuàng)建所示創(chuàng)建books表,該表用于存表,該表用于存儲圖書的書號、書名、出版社名稱、圖書儲圖書的書號、書名、出版社名稱、圖書頁數(shù)、圖書價格以及出版日期等信息。頁數(shù)、圖書價格以及出版日期等信息。2021

5、年12月15日第5頁創(chuàng)建創(chuàng)建books表表2021年12月15日第6頁表創(chuàng)建之后表創(chuàng)建之后l表創(chuàng)建之后,表只是一個空表。如何向表表創(chuàng)建之后,表只是一個空表。如何向表中添加數(shù)據(jù)呢?如果表中已有數(shù)據(jù)了,但中添加數(shù)據(jù)呢?如果表中已有數(shù)據(jù)了,但是數(shù)據(jù)不合適或不正確,那么如何更新這是數(shù)據(jù)不合適或不正確,那么如何更新這些數(shù)據(jù)呢?如果表中的數(shù)據(jù)不再需要了,些數(shù)據(jù)呢?如果表中的數(shù)據(jù)不再需要了,那么如何刪除這些過時的數(shù)據(jù)呢?如何按那么如何刪除這些過時的數(shù)據(jù)呢?如何按照用戶需要,將表中的數(shù)據(jù)檢索出來呢?照用戶需要,將表中的數(shù)據(jù)檢索出來呢?這些問題都是數(shù)據(jù)操縱問題。用戶可以使這些問題都是數(shù)據(jù)操縱問題。用戶可以使用用

6、INSERT、UPDATE、DELETE、SELECT等語句來解決這些數(shù)據(jù)操縱問題。等語句來解決這些數(shù)據(jù)操縱問題。2021年12月15日第7頁7.2 插入數(shù)據(jù)插入數(shù)據(jù)l表創(chuàng)建之后往往只是一個空表,因此向表表創(chuàng)建之后往往只是一個空表,因此向表中插入數(shù)據(jù)是在表結(jié)構(gòu)創(chuàng)建之后,首先需中插入數(shù)據(jù)是在表結(jié)構(gòu)創(chuàng)建之后,首先需要執(zhí)行的操作。要執(zhí)行的操作。l向表中插入數(shù)據(jù),應(yīng)該使用向表中插入數(shù)據(jù),應(yīng)該使用INSERT語句。語句。該語句包括了兩個子句,即該語句包括了兩個子句,即INSERT子句和子句和VALUES子句。子句。INSERT子句指定要插入數(shù)子句指定要插入數(shù)據(jù)的表名或視圖名稱,它可以包含表或視據(jù)的表名或

7、視圖名稱,它可以包含表或視圖中列的列表。圖中列的列表。VALUES子句指定將要插子句指定將要插入的數(shù)據(jù)。入的數(shù)據(jù)。2021年12月15日第8頁INSERT語句語句l INSERT語句的基本語法形式語句的基本語法形式lINSERT INTO table_or_view_name (column_list) lVALUES (expression)2021年12月15日第9頁一般的插入數(shù)據(jù)示例一般的插入數(shù)據(jù)示例2021年12月15日第10頁向表中插入空值向表中插入空值2021年12月15日第11頁向表中插入部分列的數(shù)據(jù)向表中插入部分列的數(shù)據(jù)2021年12月15日第12頁使用使用DEFAULT VA

8、LUES子句子句2021年12月15日第13頁使用使用INSERTSELECT形式形式2021年12月15日第14頁使用使用SELECTINTO語句語句2021年12月15日第15頁包含了圖書數(shù)據(jù)的文本文件包含了圖書數(shù)據(jù)的文本文件2021年12月15日第16頁使用使用BULK INSERT語句語句2021年12月15日第17頁7.3 更新數(shù)據(jù)更新數(shù)據(jù)l可以使用可以使用UPDATE語句更新表中已經(jīng)存在語句更新表中已經(jīng)存在的數(shù)據(jù)。的數(shù)據(jù)。UPDATE語句既可以一次更新一語句既可以一次更新一行數(shù)據(jù),也可以一次更新許多行,甚至可行數(shù)據(jù),也可以一次更新許多行,甚至可以一次更新表中的全部數(shù)據(jù)行。以一次更新

9、表中的全部數(shù)據(jù)行。l在在UPDATE語句中,使用語句中,使用WHERE子句指定子句指定要更新的數(shù)據(jù)行滿足的基本條件,使用要更新的數(shù)據(jù)行滿足的基本條件,使用SET子句給出新的數(shù)據(jù)。新數(shù)據(jù)既可以是子句給出新的數(shù)據(jù)。新數(shù)據(jù)既可以是常量,也可以是指定的表達式。常量,也可以是指定的表達式。2021年12月15日第18頁UPDATE語句語句lUPDATE語句的基本語法形式如下:語句的基本語法形式如下:lUPDATE table_or_view_name lSET column_name = expression, lWHERE search_condition 2021年12月15日第19頁books表中

10、的表中的3行數(shù)據(jù)行數(shù)據(jù)2021年12月15日第20頁更新更新books表中指定的數(shù)據(jù)表中指定的數(shù)據(jù)2021年12月15日第21頁更新表中所有的圖書價格數(shù)據(jù)更新表中所有的圖書價格數(shù)據(jù)2021年12月15日第22頁在在UPDATE語句中使用語句中使用FROM子子句句2021年12月15日第23頁7.4 刪除數(shù)據(jù)刪除數(shù)據(jù)l當表中的數(shù)據(jù)不再需要時,可以刪除。一般情況當表中的數(shù)據(jù)不再需要時,可以刪除。一般情況下,可以使用下,可以使用DELETE語句刪除數(shù)據(jù)。語句刪除數(shù)據(jù)。DELETE語句可以從一個表中刪除一行或多行數(shù)據(jù)。語句可以從一個表中刪除一行或多行數(shù)據(jù)。l刪除數(shù)據(jù)的刪除數(shù)據(jù)的DELEE語句的基本語法

11、形式如下:語句的基本語法形式如下:lDELETE lFROM table_or_name lWHERE search_condition 2021年12月15日第24頁刪除表中的數(shù)據(jù)刪除表中的數(shù)據(jù)2021年12月15日第25頁TRUNCATE TABLE語句語句l在刪除表中的全部數(shù)據(jù)時,還可以使用在刪除表中的全部數(shù)據(jù)時,還可以使用TRUNCATE TABLE語句。語句。lTRUNCATE TABLE語句和語句和DELETE語句都可以將表中的語句都可以將表中的全部數(shù)據(jù)刪除,但是,兩種語句又有不同的特點。一般情全部數(shù)據(jù)刪除,但是,兩種語句又有不同的特點。一般情況下,當用戶使用況下,當用戶使用DEL

12、ETE語句刪除數(shù)據(jù)時,被刪除的數(shù)語句刪除數(shù)據(jù)時,被刪除的數(shù)據(jù)記錄在日志中。當使用據(jù)記錄在日志中。當使用TRUNCATE TABLE語句刪除表語句刪除表中的數(shù)據(jù)時,系統(tǒng)立即釋放表中數(shù)據(jù)和索引所占的空間,中的數(shù)據(jù)時,系統(tǒng)立即釋放表中數(shù)據(jù)和索引所占的空間,并不把這種數(shù)據(jù)的變化記錄在日志中。因此,使用并不把這種數(shù)據(jù)的變化記錄在日志中。因此,使用TRUNCATE TABLE books語句刪除數(shù)據(jù)的速度快于使語句刪除數(shù)據(jù)的速度快于使用用DELETE FROM books 語句刪除表中數(shù)據(jù)的速度。語句刪除表中數(shù)據(jù)的速度。2021年12月15日第26頁7.5 檢索操作概述檢索操作概述l檢索表中數(shù)據(jù)可以使用檢

13、索表中數(shù)據(jù)可以使用SELECT語句。在語句。在SELECT語句中,語句中,有有3個基本的組成部分:個基本的組成部分:SELECT子句、子句、FROM子句和子句和WHERE子句。子句。SELECT子句用于指定將要檢索的列名稱,子句用于指定將要檢索的列名稱,F(xiàn)ROM子句指定將要檢索的對象,子句指定將要檢索的對象,WHERE子句則用于指子句則用于指定數(shù)據(jù)應(yīng)該滿足的條件。定數(shù)據(jù)應(yīng)該滿足的條件。l在一般的檢索操作中,在一般的檢索操作中,SELECT子句和子句和FROM子句是必不子句是必不可少的。只有當可少的。只有當SELECT子句中僅包括常量、變量或算術(shù)子句中僅包括常量、變量或算術(shù)表達式表達式(沒有列名

14、沒有列名)時,時,F(xiàn)ROM子句才可以省略。子句才可以省略。WHERE子句是可選的。如果沒有使用子句是可選的。如果沒有使用WHERE子句,表示檢索所子句,表示檢索所有的數(shù)據(jù)。有的數(shù)據(jù)。2021年12月15日第27頁最基本的檢索語句最基本的檢索語句(網(wǎng)格顯示形式網(wǎng)格顯示形式)2021年12月15日第28頁7.6 使用使用SELECT子句檢索數(shù)據(jù)子句檢索數(shù)據(jù)l在在SELECT語句中,可以在語句中,可以在SELECT子句中子句中選擇指定的數(shù)據(jù)列、使用文字串、改變列選擇指定的數(shù)據(jù)列、使用文字串、改變列標題、執(zhí)行數(shù)據(jù)運算、使用標題、執(zhí)行數(shù)據(jù)運算、使用ALL關(guān)鍵字、關(guān)鍵字、使用使用DISTINCT關(guān)鍵字等。

15、關(guān)鍵字等。2021年12月15日第29頁選擇指定的數(shù)據(jù)列選擇指定的數(shù)據(jù)列l(wèi)選擇指定的數(shù)據(jù)列是指可以在選擇指定的數(shù)據(jù)列是指可以在SELECT子句中指子句中指定將要檢索的列名稱。定將要檢索的列名稱。l選擇指定的列名稱要注意以下幾點:第一,這些選擇指定的列名稱要注意以下幾點:第一,這些列名稱應(yīng)該與表中定義的列名稱一致,否則就可列名稱應(yīng)該與表中定義的列名稱一致,否則就可能出錯或者得到意想不到的結(jié)果;第二,列名稱能出錯或者得到意想不到的結(jié)果;第二,列名稱之間的順序既可以與表中定義的列順序相同,也之間的順序既可以與表中定義的列順序相同,也可以不相同;第三,可以不相同;第三,SELECT語句的檢索結(jié)果只語句

16、的檢索結(jié)果只是影響數(shù)據(jù)的顯示,對表中存儲的數(shù)據(jù)沒有任何是影響數(shù)據(jù)的顯示,對表中存儲的數(shù)據(jù)沒有任何影響。影響。2021年12月15日第30頁檢索指定的數(shù)據(jù)列檢索指定的數(shù)據(jù)列2021年12月15日第31頁使用文字串使用文字串l通常,直接閱讀通常,直接閱讀SELECT語句的檢索結(jié)果,語句的檢索結(jié)果,是一件頭疼的事情,因為顯示出來的數(shù)據(jù),是一件頭疼的事情,因為顯示出來的數(shù)據(jù),是一些不連貫的、閱讀性不強的信息。為是一些不連貫的、閱讀性不強的信息。為了提高了提高SELECT語句檢索結(jié)果的可讀性,語句檢索結(jié)果的可讀性,可以通過在可以通過在SELECT關(guān)鍵字后面增加文字關(guān)鍵字后面增加文字串。通常情況下,使用單

17、引號將文字串引串。通常情況下,使用單引號將文字串引起來。起來。2021年12月15日第32頁使用簡單的文字串使用簡單的文字串2021年12月15日第33頁使用包含了單引號和雙引號的文使用包含了單引號和雙引號的文字串字串2021年12月15日第34頁改變列標題改變列標題l在默認情況下,數(shù)據(jù)檢索結(jié)果中所顯示出在默認情況下,數(shù)據(jù)檢索結(jié)果中所顯示出來的列標題就是在定義表時使用的列名稱。來的列標題就是在定義表時使用的列名稱。但是,在檢索過程中可以根據(jù)用戶的需要但是,在檢索過程中可以根據(jù)用戶的需要改變顯示的列標題。改變顯示的列標題。l實際上,改變列標題也就是為指定的列定實際上,改變列標題也就是為指定的列定

18、義一個別名。義一個別名。l改變列標題有兩種方法,一種方法是使用改變列標題有兩種方法,一種方法是使用等號等號(=),另一種方法是使用,另一種方法是使用AS關(guān)鍵字。關(guān)鍵字。2021年12月15日第35頁改變列標題改變列標題2021年12月15日第36頁數(shù)據(jù)運算數(shù)據(jù)運算l數(shù)據(jù)運算是指對檢索的數(shù)據(jù)進行各種運算。數(shù)據(jù)運算是指對檢索的數(shù)據(jù)進行各種運算。也就是說,可以在也就是說,可以在SELECT關(guān)鍵字后面列關(guān)鍵字后面列出的列項中使用各種運算符和函數(shù)。出的列項中使用各種運算符和函數(shù)。l這些運算符和函數(shù)包括算術(shù)運算符、數(shù)學(xué)這些運算符和函數(shù)包括算術(shù)運算符、數(shù)學(xué)函數(shù)、字符串函數(shù)、日期和時間函數(shù)、系函數(shù)、字符串函數(shù)

19、、日期和時間函數(shù)、系統(tǒng)函數(shù)等。統(tǒng)函數(shù)等。2021年12月15日第37頁使用算術(shù)運算符使用算術(shù)運算符2021年12月15日第38頁使用數(shù)學(xué)函數(shù)使用數(shù)學(xué)函數(shù)2021年12月15日第39頁使用字符串函數(shù)使用字符串函數(shù)2021年12月15日第40頁使用使用ALL和和DISTINCT關(guān)鍵字關(guān)鍵字l在在SELECT語句中,可以在語句中,可以在SELECT子句中子句中通過使用通過使用ALL或或DISTINCT關(guān)鍵字控制查詢關(guān)鍵字控制查詢結(jié)果集的顯示樣式。結(jié)果集的顯示樣式。ALL關(guān)鍵字表示檢索關(guān)鍵字表示檢索所有的數(shù)據(jù),包括重復(fù)的數(shù)據(jù)行。所有的數(shù)據(jù),包括重復(fù)的數(shù)據(jù)行。DISTINCT關(guān)鍵字表示僅顯示那些不重復(fù)的

20、關(guān)鍵字表示僅顯示那些不重復(fù)的數(shù)據(jù)行,重復(fù)的數(shù)據(jù)行只顯示一次。由于數(shù)據(jù)行,重復(fù)的數(shù)據(jù)行只顯示一次。由于ALL關(guān)鍵字是默認值,所以當沒有顯式使關(guān)鍵字是默認值,所以當沒有顯式使用用ALL或或DISTINCT關(guān)鍵字時,默認使用關(guān)鍵字時,默認使用ALL關(guān)鍵字。關(guān)鍵字。2021年12月15日第41頁使用使用ALL關(guān)鍵字關(guān)鍵字2021年12月15日第42頁使用使用DISTINCT關(guān)鍵字關(guān)鍵字2021年12月15日第43頁7.7 排序排序l在使用在使用SELECT語句時,排序是一種常見語句時,排序是一種常見的操作。排序是指按照指定的列或其他表的操作。排序是指按照指定的列或其他表達式對結(jié)果集進行排列順序的方式。

21、達式對結(jié)果集進行排列順序的方式。SELECT語句中的語句中的ORDER BY子句負責(zé)完子句負責(zé)完成排序操作。在排序時,可以按照升序排成排序操作。在排序時,可以按照升序排列,也可以按照降序排列。關(guān)鍵字列,也可以按照降序排列。關(guān)鍵字ASC表表示升序,示升序,DESC表示降序,默認情況下是升表示降序,默認情況下是升序。序。2021年12月15日第44頁沒有使用沒有使用ORDER BY子句的檢索子句的檢索操作操作2021年12月15日第45頁使用一個列進行排序使用一個列進行排序2021年12月15日第46頁使用使用3個列進行排序個列進行排序2021年12月15日第47頁使用使用TOP (1) PERC

22、ENT子句子句2021年12月15日第48頁使用使用TOP (1) PERCENT WITH TIES子句子句2021年12月15日第49頁7.8 使用使用WHERE子句選擇數(shù)據(jù)子句選擇數(shù)據(jù)l在很多實際應(yīng)用情況下,只需要表中的一部分數(shù)在很多實際應(yīng)用情況下,只需要表中的一部分數(shù)據(jù)。例如,在包含有數(shù)百萬、數(shù)千萬行數(shù)據(jù)的表據(jù)。例如,在包含有數(shù)百萬、數(shù)千萬行數(shù)據(jù)的表中,可能永遠也不會執(zhí)行一個檢索表中全部數(shù)據(jù)中,可能永遠也不會執(zhí)行一個檢索表中全部數(shù)據(jù)的語句,因為在一次查詢中處理表中全部數(shù)據(jù)幾的語句,因為在一次查詢中處理表中全部數(shù)據(jù)幾乎是不現(xiàn)實的。乎是不現(xiàn)實的。l在在SELECT語句中,語句中,WHERE

23、子句指定將要搜索子句指定將要搜索的數(shù)據(jù)行的條件。也就是說,只有滿足的數(shù)據(jù)行的條件。也就是說,只有滿足WHERE子句條件的數(shù)據(jù)行才會出現(xiàn)在結(jié)果集中。這些搜子句條件的數(shù)據(jù)行才會出現(xiàn)在結(jié)果集中。這些搜索條件可以分為簡單搜索條件、模糊搜索條件和索條件可以分為簡單搜索條件、模糊搜索條件和復(fù)合搜索條件。復(fù)合搜索條件。2021年12月15日第50頁簡單搜索條件簡單搜索條件l在在WHERE子句中,簡單搜索條件是指使用子句中,簡單搜索條件是指使用比較運算符、范圍、列表、合并以及取反比較運算符、范圍、列表、合并以及取反等運算方式形成的搜索條件。等運算方式形成的搜索條件。2021年12月15日第51頁使用比較運算符

24、作為搜索條件使用比較運算符作為搜索條件2021年12月15日第52頁模糊搜索條件模糊搜索條件l在檢索字符數(shù)據(jù)時,通常提供的檢索條件在檢索字符數(shù)據(jù)時,通常提供的檢索條件不是十分準確的,例如這種搜索條件僅僅不是十分準確的,例如這種搜索條件僅僅是包含、類似某種樣式的字符。是包含、類似某種樣式的字符。l在在WHERE子句中,可以使用子句中,可以使用LIKE關(guān)鍵字關(guān)鍵字靈活地實現(xiàn)這種模糊搜索條件。靈活地實現(xiàn)這種模糊搜索條件。2021年12月15日第53頁LIKE關(guān)鍵字關(guān)鍵字lLIKE關(guān)鍵字用于檢索與特定字符串匹配的關(guān)鍵字用于檢索與特定字符串匹配的字符數(shù)據(jù)。字符數(shù)據(jù)。LIKE關(guān)鍵字后面可以跟一個列關(guān)鍵字后

25、面可以跟一個列值的一部分而不是一個完整的列值,從而值的一部分而不是一個完整的列值,從而形成形成LIKE子句。子句。LIKE子句的語法形式如下:子句的語法形式如下:lmatch_expression NOT LIKE pattern ESCAPE escape_character2021年12月15日第54頁使用使用LIKE子句子句2021年12月15日第55頁復(fù)合搜索條件復(fù)合搜索條件l在在WHERE子句中可以使用邏輯運算符把若干個子句中可以使用邏輯運算符把若干個搜索條件合并起來,組成復(fù)雜的復(fù)合搜索條件。搜索條件合并起來,組成復(fù)雜的復(fù)合搜索條件。這些邏輯運算符包括這些邏輯運算符包括AND,OR和

26、和NOT。lAND運算符表示只有在所有條件都為真時,才返運算符表示只有在所有條件都為真時,才返回真?;卣妗R運算符表示只要有一個條件為真時,就運算符表示只要有一個條件為真時,就返回真。返回真。NOT運算符取相反。當在一個運算符取相反。當在一個WHERE子句中,同時包含多個邏輯運算符時,其優(yōu)先級子句中,同時包含多個邏輯運算符時,其優(yōu)先級從高到低依次是從高到低依次是NOT、AND和和OR。2021年12月15日第56頁使用復(fù)合搜索條件使用復(fù)合搜索條件2021年12月15日第57頁7.9 聚合技術(shù)聚合技術(shù)l聚合技術(shù)是指對一組數(shù)據(jù)進行聚合運算得聚合技術(shù)是指對一組數(shù)據(jù)進行聚合運算得到聚合值的過程。在聚

27、合運算中主要是使到聚合值的過程。在聚合運算中主要是使用聚合函數(shù)。在用聚合函數(shù)。在Microsoft SQL Server 2008系統(tǒng)中,一般情況下,可以在系統(tǒng)中,一般情況下,可以在3個子句個子句中使用聚合函數(shù),即中使用聚合函數(shù),即SELECT子句、子句、COMPUTE子句和子句和HAVING子句。本節(jié)主要子句。本節(jié)主要講述如何在講述如何在SELECT子句和子句和COMPUTE子子句中使用聚合函數(shù),有關(guān)句中使用聚合函數(shù),有關(guān)HAVING子句使子句使用聚合函數(shù)的內(nèi)容在用聚合函數(shù)的內(nèi)容在7.10節(jié)介紹。節(jié)介紹。2021年12月15日第58頁SELECT子句中的聚合子句中的聚合l在在SELECT子句

28、中可以使用聚合函數(shù)進行子句中可以使用聚合函數(shù)進行運算,運算結(jié)果作為新列出現(xiàn)在結(jié)果集中。運算,運算結(jié)果作為新列出現(xiàn)在結(jié)果集中。在聚合運算的表達式中,可以包括列名、在聚合運算的表達式中,可以包括列名、常量以及由算術(shù)運算符連接起來的函數(shù)。常量以及由算術(shù)運算符連接起來的函數(shù)。2021年12月15日第59頁在在SELECT子句中使用聚合函數(shù)子句中使用聚合函數(shù)2021年12月15日第60頁COMPUTE子句中的聚合子句中的聚合l需要指出的是,在需要指出的是,在SELECT子句中出現(xiàn)聚子句中出現(xiàn)聚合函數(shù)時,結(jié)果集中的數(shù)據(jù)全是聚合值,合函數(shù)時,結(jié)果集中的數(shù)據(jù)全是聚合值,沒有明細值。這是使用沒有明細值。這是使用

29、SELECT子句計算子句計算聚合值的缺點。能否解決這種問題呢?能,聚合值的缺點。能否解決這種問題呢?能,解決方法就是使用解決方法就是使用COMPUTE子句。子句。lCOMPUTE子句使用聚合函數(shù)計算聚合值,子句使用聚合函數(shù)計算聚合值,并且可以依然保持原有的明細值,新的聚并且可以依然保持原有的明細值,新的聚合值作為特殊的列出現(xiàn)。合值作為特殊的列出現(xiàn)。2021年12月15日第61頁使用沒有使用沒有BY子句的子句的COMPUTE子句子句2021年12月15日第62頁使用有使用有BY子句的子句的COMPUTE子句子句2021年12月15日第63頁7.10 分組技術(shù)分組技術(shù)l聚合函數(shù)只能產(chǎn)生一個單一的匯

30、總數(shù)據(jù),聚合函數(shù)只能產(chǎn)生一個單一的匯總數(shù)據(jù),使用使用GROUP BY子句,則可以生成分組的子句,則可以生成分組的匯總數(shù)據(jù)。匯總數(shù)據(jù)。GROUP BY子句把數(shù)據(jù)組織起子句把數(shù)據(jù)組織起來分成組。一般情況下,可以根據(jù)表中的來分成組。一般情況下,可以根據(jù)表中的某一列進行分組,通過使用聚合函數(shù),對某一列進行分組,通過使用聚合函數(shù),對每一個組可以產(chǎn)生聚合值。如果需要過濾每一個組可以產(chǎn)生聚合值。如果需要過濾某些分組,可以使用某些分組,可以使用HAVING子句。分組子句。分組技術(shù)是指使用技術(shù)是指使用GROUP BY子句完成分組操子句完成分組操作的技術(shù)。作的技術(shù)。2021年12月15日第64頁普通分組技術(shù)普通分

31、組技術(shù)lGROUP BY子句、子句、HAVING子句和聚合函子句和聚合函數(shù)一起完成對每一個組生成一行和一個匯數(shù)一起完成對每一個組生成一行和一個匯總值。在使用總值。在使用GROUP BY子句和子句和HAVING子句的過程中,要求考慮下列一些條件。子句的過程中,要求考慮下列一些條件。2021年12月15日第65頁沒有分組條件的分組語句沒有分組條件的分組語句2021年12月15日第66頁有分組條件的分組語句有分組條件的分組語句2021年12月15日第67頁ROLLUP和和CUBE關(guān)鍵字關(guān)鍵字l在在GROUP BY子句中,可以使用子句中,可以使用ROLLUP或或CUBE關(guān)鍵字獲得附加的分組數(shù)據(jù),這些關(guān)

32、鍵字獲得附加的分組數(shù)據(jù),這些附加的分組數(shù)據(jù)是通過各組之間的組合得附加的分組數(shù)據(jù)是通過各組之間的組合得到的。使用到的。使用ROLLUP關(guān)鍵字可以得到各組關(guān)鍵字可以得到各組的單項組合,使用的單項組合,使用CUBE關(guān)鍵字可以得到各關(guān)鍵字可以得到各組之間的任意組合。在結(jié)果集中,通過組組之間的任意組合。在結(jié)果集中,通過組組合起來的組名稱是組合起來的組名稱是NULL,可以使用,可以使用GROUPING函數(shù)來判斷該組是否是經(jīng)過組函數(shù)來判斷該組是否是經(jīng)過組合得到的。合得到的。2021年12月15日第68頁簡單的分組簡單的分組2021年12月15日第69頁使用使用ROLLUP關(guān)鍵字的分組關(guān)鍵字的分組2021年1

33、2月15日第70頁使用使用CUBE關(guān)鍵字的分組關(guān)鍵字的分組2021年12月15日第71頁7.11 連接技術(shù)連接技術(shù)l實現(xiàn)從兩個或兩個以上表中檢索數(shù)據(jù)且結(jié)實現(xiàn)從兩個或兩個以上表中檢索數(shù)據(jù)且結(jié)果集中出現(xiàn)的列來自于兩個或兩個以上表果集中出現(xiàn)的列來自于兩個或兩個以上表中的檢索操作被稱為連接技術(shù),或者說連中的檢索操作被稱為連接技術(shù),或者說連接技術(shù)是指對兩個表或兩個以上表中數(shù)據(jù)接技術(shù)是指對兩個表或兩個以上表中數(shù)據(jù)執(zhí)行乘積運算的技術(shù)。在設(shè)計表時,為了執(zhí)行乘積運算的技術(shù)。在設(shè)計表時,為了提高表的設(shè)計質(zhì)量,經(jīng)常把相關(guān)數(shù)據(jù)分散提高表的設(shè)計質(zhì)量,經(jīng)常把相關(guān)數(shù)據(jù)分散到不同的表中。但是,在使用數(shù)據(jù)時,需到不同的表中。但

34、是,在使用數(shù)據(jù)時,需要把這些數(shù)據(jù)集中在一個查詢語句中。要把這些數(shù)據(jù)集中在一個查詢語句中。2021年12月15日第72頁交叉連接交叉連接2021年12月15日第73頁內(nèi)連接內(nèi)連接2021年12月15日第74頁左外連接左外連接2021年12月15日第75頁7.12 子查詢技術(shù)子查詢技術(shù)lSELECT語句可以嵌套在其他語句中,這些語句語句可以嵌套在其他語句中,這些語句包括包括SELECT、INSERT、UPDATE或或DELETE等,這些嵌套的等,這些嵌套的SELECT語句被稱為子查詢。當語句被稱為子查詢。當一個查詢依賴于另外一個查詢結(jié)果時,則可以使一個查詢依賴于另外一個查詢結(jié)果時,則可以使用子查詢

35、。在某些查詢中,查詢語句比較復(fù)雜不用子查詢。在某些查詢中,查詢語句比較復(fù)雜不容易理解,因此可以使用子查詢方式把這些復(fù)雜容易理解,因此可以使用子查詢方式把這些復(fù)雜的查詢語句分解成多個比較簡單的查詢語句形式。的查詢語句分解成多個比較簡單的查詢語句形式。使用子查詢方式完成查詢操作的技術(shù)是子查詢技使用子查詢方式完成查詢操作的技術(shù)是子查詢技術(shù)。術(shù)。2021年12月15日第76頁在在WHERE子句中使用子查詢子句中使用子查詢2021年12月15日第77頁7.13 集合運算技術(shù)集合運算技術(shù)l查詢語句的結(jié)果集往往是一個包含了多行數(shù)據(jù)的查詢語句的結(jié)果集往往是一個包含了多行數(shù)據(jù)的集合。集合之間可以進行并、差、交等

36、運算。在集合。集合之間可以進行并、差、交等運算。在Microsoft SQL Server 2008系統(tǒng)中,兩個查詢系統(tǒng)中,兩個查詢語句之間也可以進行集合運算。其中,語句之間也可以進行集合運算。其中,UNION運運算符表示并集運算,算符表示并集運算,EXCEPT運算符從左查詢中運算符從左查詢中返回右查詢中沒有找到的重復(fù)值,返回右查詢中沒有找到的重復(fù)值,INTERSECT運算符則返回左右兩個查詢語句都包含的所有非運算符則返回左右兩個查詢語句都包含的所有非重復(fù)值。需要注意的是,在集合運算時,所有查重復(fù)值。需要注意的是,在集合運算時,所有查詢語句中列的數(shù)量和順序必須相同,且數(shù)據(jù)類型詢語句中列的數(shù)量和順序必須相同,且數(shù)據(jù)類型必須兼容。必須兼容。2021年12月15日第78頁T1表和表和T2表表2021年12月15日第79頁使用使用EXCEPT運算符運算符2021年12月15日第80頁7.14 公用表表達式公用表表達式l在在Microsoft SQL Server 2008系統(tǒng)中,可系統(tǒng)中,可以使用公用表表達式以使用公用表表達式(comm

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論