九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

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

第五章 數(shù)據(jù)查詢

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

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

第五章 數(shù)據(jù)查詢

第五章第五章第五章第五章數(shù)據(jù)查詢數(shù)據(jù)查詢項目知識要點與目標項目知識要點與目標項目知識要點項目知識要點知識能力目標知識能力目標學時學時任務(wù)任務(wù)1 1 單表查詢單表查詢1 SELECT1 SELECT語句定義語句定義2 2 選擇指定的列選擇指定的列3 WHERE3 WHERE子句子句任務(wù)任務(wù)2 2 多表查詢多表查詢1 FROM1 FROM子句子句2 2 多表連接多表連接任務(wù)任務(wù)3 3 排序與分類匯總排序與分類匯總1 1 聚合函數(shù)聚合函數(shù)2 GROUP BY2 GROUP BY子句子句3 HAVING3 HAVING子句子句4 ORDER BY4 ORDER BY子句子句【典型工作任務(wù)典型工作任務(wù)】單表查詢、多表查詢、子查詢單表查詢、多表查詢、子查詢【技能要求技能要求】1 1 使用使用MySQLMySQL命令完成多功能數(shù)據(jù)命令完成多功能數(shù)據(jù)查詢;查詢;2 2 使用圖形工具完成多功能數(shù)據(jù)查使用圖形工具完成多功能數(shù)據(jù)查詢詢【知識要求知識要求】1 1 簡單查詢、分類匯總簡單查詢、分類匯總2 2 聯(lián)接和嵌套查詢聯(lián)接和嵌套查詢3 3 數(shù)據(jù)查詢的數(shù)據(jù)查詢的SQLSQL語句語句 6 6項目實訓(xùn)項目實訓(xùn)“員工管理系統(tǒng)員工管理系統(tǒng)”數(shù)據(jù)庫查詢操作數(shù)據(jù)庫查詢操作6 6單表查詢單表查詢 使用數(shù)據(jù)庫和表的主要目的是存儲數(shù)據(jù)以便在需要時進行檢使用數(shù)據(jù)庫和表的主要目的是存儲數(shù)據(jù)以便在需要時進行檢索、統(tǒng)計或組織輸出,通過索、統(tǒng)計或組織輸出,通過SQLSQL語句的查詢可以從表或視圖中迅語句的查詢可以從表或視圖中迅速方便地檢索數(shù)據(jù)。速方便地檢索數(shù)據(jù)。一、一、SELECTSELECT語句語句 語法格式:語法格式:SELECT ALL|DISTINCT 輸出列表達式輸出列表達式,.FROM 表名表名1 ,表名表名2 /*FROM子句子句*/WHERE 條件條件 /*WHERE子句子句*/GROUP BY 列名列名|表達式表達式|列編號列編號 ASC|DESC,./*GROUP BY 子句子句*/HAVING 條件條件 /*HAVING 子句子句*/ORDER BY 列名列名|表達式表達式|列編號列編號 ASC|DESC,./*ORDER BY子句子句*/LIMIT 偏移量偏移量,行數(shù)行數(shù)|行數(shù)行數(shù)OFFSET偏移量偏移量/*LIMIT子句子句*/順序嚴格地排序。例如,一個順序嚴格地排序。例如,一個HAVINGHAVING子句必須位于子句必須位于GROUP BYGROUP BY子句之后,子句之后,并位于并位于ORDER BYORDER BY子句之前。子句之前。選擇列選擇列選擇列選擇列1.1.選擇指定的列選擇指定的列使用使用SELECTSELECT語句選擇一個表中的某些列的語法格式如下語句選擇一個表中的某些列的語法格式如下:SELECT 字段列表字段列表 FROM 表名表名各列名之各列名之間要以逗號分隔。間要以逗號分隔?!纠?.15.1】查詢查詢BookstoreBookstore數(shù)據(jù)庫的數(shù)據(jù)庫的MembersMembers表中各會員的會員姓名、表中各會員的會員姓名、聯(lián)系電話和注冊時間。聯(lián)系電話和注冊時間。USE Bookstore;SELECT 會員姓名,聯(lián)系電話,注冊時間 FROM Members;說明:當在說明:當在SELECTSELECT語句指定列的位置上使用語句指定列的位置上使用*號時,表示選擇表的所號時,表示選擇表的所有列,如要顯示有列,如要顯示MembersMembers表中所有列,不必將所有字段名一一列出,使表中所有列,不必將所有字段名一一列出,使用用 SELECT*FROM Members;列別名列別名2.2.定義列別名定義列別名 當希望查詢結(jié)果中的某些列或所有列顯示時且使用自己選擇的列標題當希望查詢結(jié)果中的某些列或所有列顯示時且使用自己選擇的列標題時,可以在列名之后使用時,可以在列名之后使用ASAS子句來更改查詢結(jié)果的列別名。子句來更改查詢結(jié)果的列別名。語法格式為:語法格式為:SELECT字段列表字段列表 AS 別名別名【例例5.25.2】查詢查詢BookBook表中圖書類別為計算機的圖書書名、作者和出版表中圖書類別為計算機的圖書書名、作者和出版社,結(jié)果中各列的標題分別指定為社,結(jié)果中各列的標題分別指定為namename、autherauther和和publisherpublisher。SELECT 書名 AS name,作者 AS auther,出版社 AS publisher FROM Book WHERE 圖書類別=計算機;注意:注意:當自定義的列標題中含有空格時,必須使用引號將標題括起來。當自定義的列標題中含有空格時,必須使用引號將標題括起來。SELECT 圖書編號 AS book number,書名 AS book name,FROM Book WHERE 圖書類別=計算機;替換查詢結(jié)果中的數(shù)據(jù)替換查詢結(jié)果中的數(shù)據(jù)3.3.替換查詢結(jié)果中的數(shù)據(jù)替換查詢結(jié)果中的數(shù)據(jù)在對表進行查詢時,有時對所查詢的某些列希望得到的是一種概念在對表進行查詢時,有時對所查詢的某些列希望得到的是一種概念而不是具體的數(shù)據(jù)。例如查詢而不是具體的數(shù)據(jù)。例如查詢XSXS表的總學分,所希望知道的是學習的總表的總學分,所希望知道的是學習的總體情況,這時,就可以用等級來替換總學分的具體數(shù)字。體情況,這時,就可以用等級來替換總學分的具體數(shù)字。要替換查詢結(jié)果中的數(shù)據(jù),則要使用查詢中的要替換查詢結(jié)果中的數(shù)據(jù),則要使用查詢中的CASECASE表達式,格式為:表達式,格式為:CASE WHEN 條件條件1 THEN 表達式表達式1 WHEN 條件條件2 THEN 表達式表達式2 ELSE 表達式表達式END【例例5.35.3】查詢查詢BookBook表中圖書編號、書名和數(shù)量,對其庫存數(shù)量按表中圖書編號、書名和數(shù)量,對其庫存數(shù)量按以下規(guī)則進行替換:若數(shù)量為空值,替換為以下規(guī)則進行替換:若數(shù)量為空值,替換為“尚未進貨尚未進貨”;若數(shù)量小于;若數(shù)量小于5 5,替換為,替換為“需進貨需進貨”;若數(shù)量在;若數(shù)量在5-505-50之間,替換為之間,替換為“庫存正常庫存正常”;若總;若總學分大于學分大于5050,替換為,替換為“庫存積壓庫存積壓”。列標題更改為。列標題更改為“庫存庫存”。SELECT 圖書編號,書名,CASE WHEN 數(shù)量 IS NULL THEN 尚未進貨 WHEN 數(shù)量=5 and 數(shù)量=50 THEN 庫存正常 ELSE 庫存積壓 END AS 庫存 FROM Book;替換查詢結(jié)果舉例替換查詢結(jié)果舉例計算列值計算列值4.4.計算列值計算列值使用使用SELECTSELECT對列進行查詢時,在結(jié)果中可以輸出對列值計算后的值,對列進行查詢時,在結(jié)果中可以輸出對列值計算后的值,即即SELECTSELECT子句可使用表達式作為結(jié)果,格式為:子句可使用表達式作為結(jié)果,格式為:SELECT 表達式表達式1,表達式表達式2【例例5.45.4】對對SellSell表已發(fā)貨的記錄計算訂購金額(訂購金額表已發(fā)貨的記錄計算訂購金額(訂購金額=訂購冊訂購冊數(shù)數(shù)*訂購單價),并顯示圖書編號和訂購金額。訂購單價),并顯示圖書編號和訂購金額。SELECT 圖書編號,訂購冊數(shù)*訂購單價 AS 訂購金額 FROM Sell WHERE 是否發(fā)貨=已發(fā)貨;消除結(jié)果集中的重復(fù)行消除結(jié)果集中的重復(fù)行5.5.消除結(jié)果集中的重復(fù)行消除結(jié)果集中的重復(fù)行 對表只選擇其某些列時,可能會出現(xiàn)重復(fù)行。例如,若對對表只選擇其某些列時,可能會出現(xiàn)重復(fù)行。例如,若對XSCJXSCJ數(shù)數(shù)據(jù)庫的據(jù)庫的XSXS表只選擇專業(yè)名和總學分,則出現(xiàn)多行重復(fù)的情況。可以使表只選擇專業(yè)名和總學分,則出現(xiàn)多行重復(fù)的情況??梢允褂糜肈ISTINCTDISTINCT或或DISTINCTROWDISTINCTROW關(guān)鍵字消除結(jié)果集中的重復(fù)行,其格式是:關(guān)鍵字消除結(jié)果集中的重復(fù)行,其格式是:SELECT DISTINCT字段列表字段列表其含義是對結(jié)果集中的重復(fù)行只選擇一個,保證行的唯一性。其含義是對結(jié)果集中的重復(fù)行只選擇一個,保證行的唯一性。【例例5.55.5】對對BookBook表只選擇圖書類別和出版社,消除結(jié)果集中的表只選擇圖書類別和出版社,消除結(jié)果集中的重復(fù)行。重復(fù)行。SELECT DISTINCT 圖書類別,出版社 FROM Book;WHEREWHEREWHEREWHERE子句子句子句子句WHEREWHERE子句必須緊跟子句必須緊跟FROMFROM子句之后,在子句之后,在WHEREWHERE子句中,使用一個條件從子句中,使用一個條件從FROMFROM子句的中間結(jié)果中選取行。其基本格式為:子句的中間結(jié)果中選取行。其基本格式為:WHERE 列名列名 運算符運算符 值值操操 作作 符符描描 述述=等于等于不等于不等于 大于大于=大于等于大于等于=小于等于小于等于BETWEENBETWEEN在某個范圍內(nèi)在某個范圍內(nèi)LIKELIKE搜索某種模式搜索某種模式比較運算比較運算WHEREWHERE子句會根據(jù)條件對子句會根據(jù)條件對FROMFROM子句的中間結(jié)果中的行一行一行地進行判子句的中間結(jié)果中的行一行一行地進行判斷,當條件為斷,當條件為TRUETRUE的時候,一行就被包含到的時候,一行就被包含到WHEREWHERE子句的中間結(jié)果中。子句的中間結(jié)果中。在在SQLSQL中,返回邏輯值(中,返回邏輯值(TRUETRUE或或FALSEFALSE)的運算符或關(guān)鍵字都可稱為謂)的運算符或關(guān)鍵字都可稱為謂詞。詞。判定運算包括比較運算、模式匹配、范圍比較、空值比較和子查詢。判定運算包括比較運算、模式匹配、范圍比較、空值比較和子查詢。1.1.比較運算比較運算比較運算符用于比較(除比較運算符用于比較(除TEXTTEXT和和BLOBBLOB類型外類型外)兩個表達式值,兩個表達式值,MySQLMySQL支支持的比較運算符有:持的比較運算符有:=(等于)、(等于)、(小于)、(小于)、=(大于)、(大于)、=(大于等于)、(大于等于)、(相等或都等于空)、(相等或都等于空)、(不等于)、(不等于)、!=!=(不等于)。(不等于)。當兩個表達式值均不為空值(當兩個表達式值均不為空值(NULLNULL)時,除了)時,除了“”運算符,其他比運算符,其他比較運算返回邏輯值較運算返回邏輯值TRUETRUE(真)或(真)或FALSEFALSE(假);而當兩個表達式值中有一(假);而當兩個表達式值中有一個為空值或都為空值時,將返回個為空值或都為空值時,將返回UNKNOWNUNKNOWN?!纠?.65.6】查詢查詢BookstoreBookstore數(shù)據(jù)庫數(shù)據(jù)庫BookBook表中書名為表中書名為“網(wǎng)頁程序設(shè)計網(wǎng)頁程序設(shè)計”的記錄。的記錄。SELECT 書名,單價 FROM Book WHERE 書名=網(wǎng)頁程序設(shè)計;【例例5.75.7】查詢查詢BookBook表中單價大于表中單價大于3030的圖書情況。的圖書情況。SELECT*FROM Book WHERE 單價30;比較運算舉例比較運算舉例邏輯運算邏輯運算通過邏輯運算符(通過邏輯運算符(ANDAND、OROR、XORXOR和和NOTNOT)組成更為復(fù)雜的查詢條件。)組成更為復(fù)雜的查詢條件。邏輯運算操作的結(jié)果是邏輯運算操作的結(jié)果是“1 1”或或“0 0”,分別表示,分別表示“truetrue”或或“falsefalse”。符號符號1 1符號符號2 2說明說明示例示例說明說明notnot!非運算非運算!x!x如果x是true,那么示例的結(jié)果是false;如果x是false,那么示例的結(jié)果是true。oror|或運算或運算x|yx|y如果x或y任一是true,那么示例的結(jié)果是true,否則示例的結(jié)果是false。andand&與運算與運算x&yx&y如果x和y都是True,那么示例結(jié)果是true,否則示例的結(jié)果是false。xorxor 異或運算異或運算x yx y如果x和y不相同,那么示例結(jié)果是true,否則示例的結(jié)果是false。邏輯運算舉例邏輯運算舉例非:select not 0,not 1,not null;或:select(1 or 0),(0 or 0),(1 or null),(1 or 1),(null or null);與:select(1 and 1),(0 and 1),(3 and 1),(1 and null);異或:select(1 xor 1),(0 xor 0),(1 xor 0),(0 xor 1),(null xor 1);【例例5.85.8】查詢查詢SellSell表中已收貨且已結(jié)清的訂單情況。表中已收貨且已結(jié)清的訂單情況。SELECT 訂單號,是否收貨,是否結(jié)清 FROM Sell WHERE 是否收貨=已收貨 AND 是否結(jié)清=已結(jié)清;【例例5.95.9】查詢查詢BookBook表中清華大學出版社和北京大學出版社出版的價格大于表中清華大學出版社和北京大學出版社出版的價格大于2525元的圖書。元的圖書。SELECT 書名,出版社,單價 FROM Book WHERE (出版社=清華大學出版社 OR 出版社=北京大學出版社)AND 單價=25;或:SELECT書名,出版社,單價 FROM Book WHERE (出版社=清華大學出版社 AND 單價=25)OR (出版社=北京大學出版社 AND 單價=25);【思考題思考題】以下語句能否得到正確結(jié)果?為什么?以下語句能否得到正確結(jié)果?為什么?SELECT 書名,出版社,單價 FROM Book WHERE 出版社=清華大學出版社 OR 出版社=北京大學出版社 AND 單價=25;WHERE子句舉例子句舉例LIKELIKE運算符運算符2.2.模式匹配(模式匹配(LIKELIKE運算符)運算符)LIKELIKE運算符用于指出一個字符串是否與指定的字符串相匹配,其運算運算符用于指出一個字符串是否與指定的字符串相匹配,其運算對象可以是對象可以是charchar、varcharvarchar、texttext、datetimedatetime等類型的數(shù)據(jù),返回邏輯值等類型的數(shù)據(jù),返回邏輯值TRUETRUE或或FALSEFALSE。使用使用LIKELIKE進行模式匹配時,常使用特殊符號進行模式匹配時,常使用特殊符號_ _和和%,可進行模糊查詢。,可進行模糊查詢?!?”代表代表0 0個或多個字符,個或多個字符,“_ _”代表單個字符。由于代表單個字符。由于MySQLMySQL默認不區(qū)分默認不區(qū)分大小寫,要區(qū)分大小寫時需要更換字符集的校對規(guī)則。大小寫,要區(qū)分大小寫時需要更換字符集的校對規(guī)則。【例例5.105.10】查詢查詢MembersMembers表中姓表中姓“張張”的會員的身份證號、姓名及注的會員的身份證號、姓名及注冊時間。冊時間。SELECT 用戶號,會員姓名,注冊時間 FROM Members WHERE 會員姓名 LIKE 張%;【例例5.115.11】查詢查詢BookBook表中圖書編號倒數(shù)第二位為表中圖書編號倒數(shù)第二位為T T的圖書的圖書編號的圖書的圖書編號和書名。和書名。SELECT 圖書編號,書名 FROM Book WHERE 圖書編號 LIKE%T_;例例【5.12 5.12】查詢查詢BookBook表中書名中包含下畫線的圖書。表中書名中包含下畫線的圖書。SELECT 圖書編號,書名 FROM Book WHERE 書名 LIKE%#_%ESCAPE#;范圍比較范圍比較3.3.范圍比較范圍比較 用于范圍比較的關(guān)鍵字有兩個:用于范圍比較的關(guān)鍵字有兩個:BETWEENBETWEEN和和ININ。當要查詢的條件是某個值的范圍時,可以使用當要查詢的條件是某個值的范圍時,可以使用BETWEENBETWEEN關(guān)鍵字。關(guān)鍵字。BETWEENBETWEEN關(guān)鍵字指出查詢范圍,格式為:關(guān)鍵字指出查詢范圍,格式為:表達式表達式 NOT BETWEEN 表達式表達式1 AND 表達式表達式2當不使用當不使用NOTNOT時,若表達式時,若表達式expressionexpression的值在表達式的值在表達式expression1expression1與與expression2expression2之間(包括這兩個值),則返回之間(包括這兩個值),則返回TRUETRUE,否則返回,否則返回FALSEFALSE;使;使用用NOTNOT時,返回值剛好相反。時,返回值剛好相反。注意:注意:expression1expression1的值不能大于的值不能大于expression2expression2的值。的值?!纠?.135.13】查詢查詢BookBook表中表中20102010年出版的圖書的情況。年出版的圖書的情況。SELECT *FROM Book WHERE 出版時間 BETWEEN 2010-1-1 AND 2010-12-31;使用使用ININ關(guān)鍵字可以指定一個值表,值表中列出所有可能的值,當與值關(guān)鍵字可以指定一個值表,值表中列出所有可能的值,當與值表中的任一個匹配時,即返回表中的任一個匹配時,即返回TRUETRUE,否則返回,否則返回FALSEFALSE。使用使用ININ關(guān)鍵字指定值表的格式為:關(guān)鍵字指定值表的格式為:表達式表達式 IN(表達式表達式1,n)【例例5.145.14】查詢查詢BookBook表中表中“高等教育出版社高等教育出版社”、“北京大學出版社北京大學出版社”和和“人民郵電出版社人民郵電出版社”出版的圖書的情況。出版的圖書的情況。SELECT*FROM Book WHERE 出版社 IN(高等教育出版社,北京大學出版社,人民郵電出版社);說明:說明:ININ關(guān)鍵字最主要的作用是表達子查詢。關(guān)鍵字最主要的作用是表達子查詢。范圍比較舉例范圍比較舉例空值比較空值比較4.4.空值比較空值比較當需要判定一個表達式的值是否為空值時,使用當需要判定一個表達式的值是否為空值時,使用IS NULLIS NULL關(guān)鍵字,格關(guān)鍵字,格式為:式為:表達式表達式 IS NOT NULL當不使用當不使用NOTNOT時,若表達式時,若表達式expressionexpression的值為空值,返回的值為空值,返回TRUETRUE,否則,否則返回返回FALSEFALSE;當使用;當使用NOTNOT時,結(jié)果剛好相反。時,結(jié)果剛好相反。【例例5.155.15】查詢查詢SellSell表中尚未發(fā)貨的訂單記錄。表中尚未發(fā)貨的訂單記錄。SELECT*FROM Sell WHERE 是否發(fā)貨 IS NULL;本例即查找總學分為空的學生,結(jié)果為空。本例即查找總學分為空的學生,結(jié)果為空。MySQLMySQL有一個特殊的等于運算符有一個特殊的等于運算符“”,當兩個表達式彼此相等或都,當兩個表達式彼此相等或都等于空值時,它的值為等于空值時,它的值為TRUETRUE,其中有一個空值或都是非空值但不相等,其中有一個空值或都是非空值但不相等,這個條件就是這個條件就是FALSEFALSE。【例例5.165.16】查詢查詢SellSell表中還未收貨的訂單情況。表中還未收貨的訂單情況。SELECT*FROM Sell WHERE 是否收貨NULL;多表查詢多表查詢 前面介紹了使用前面介紹了使用SELECTSELECT子句選擇列,本小節(jié)討論子句選擇列,本小節(jié)討論SELECTSELECT查詢的對象查詢的對象(即數(shù)據(jù)源)的構(gòu)成形式。(即數(shù)據(jù)源)的構(gòu)成形式。SELECTSELECT的查詢對象由的查詢對象由FROMFROM子句指定,其格式子句指定,其格式為:為:FROM 表名表名1 AS 別名別名1 ,表名表名2 AS 別名別名2 /*查詢表查詢表*/|JOIN子句子句 /*連接表連接表*/引用一個表:引用一個表:可以用兩種方式引用一個表,第一種方式是使用可以用兩種方式引用一個表,第一種方式是使用USEUSE語句讓一個數(shù)語句讓一個數(shù)據(jù)庫成為當前數(shù)據(jù)庫,在這種情況下,如果在據(jù)庫成為當前數(shù)據(jù)庫,在這種情況下,如果在FROMFROM子句中指定表名,則子句中指定表名,則該表應(yīng)該屬于當前數(shù)據(jù)庫。第二種方式是指定的時候在表名前帶上表所該表應(yīng)該屬于當前數(shù)據(jù)庫。第二種方式是指定的時候在表名前帶上表所屬數(shù)據(jù)庫的名字。例如,假設(shè)當前數(shù)據(jù)庫是屬數(shù)據(jù)庫的名字。例如,假設(shè)當前數(shù)據(jù)庫是db1db1,現(xiàn)在要顯示數(shù)據(jù)庫,現(xiàn)在要顯示數(shù)據(jù)庫db2db2里的表里的表tbtb的內(nèi)容,使用如下語句:的內(nèi)容,使用如下語句:SELECT *FROM db2.tb;SELECT *FROM db2.tb;當然,在當然,在SELECTSELECT關(guān)鍵字后指定列名的時候也可以在列名前帶上所屬關(guān)鍵字后指定列名的時候也可以在列名前帶上所屬數(shù)據(jù)庫和表的名字,但是一般來說,如果選擇的字段在各表中是唯一的,數(shù)據(jù)庫和表的名字,但是一般來說,如果選擇的字段在各表中是唯一的,就沒有必要去特別指定。就沒有必要去特別指定。FROMFROMFROMFROM子句子句子句子句【例例5.175.17】從從MembersMembers表中檢索出所有客戶的信息,并使用表別名表中檢索出所有客戶的信息,并使用表別名UsersUsers。SELECT*FROM Members AS Users;引用多個表:引用多個表:如果要在不同表中查詢數(shù)據(jù),則必須在如果要在不同表中查詢數(shù)據(jù),則必須在FROMFROM子句中指定多個表。指子句中指定多個表。指定多個表時就要使用到連接。當不同列的數(shù)據(jù)組合到一個表中叫做表的定多個表時就要使用到連接。當不同列的數(shù)據(jù)組合到一個表中叫做表的連接。例如,在連接。例如,在XSCJXSCJ數(shù)據(jù)庫中需要查找選修了離散數(shù)學課程的學生的姓數(shù)據(jù)庫中需要查找選修了離散數(shù)學課程的學生的姓名和成績,就需要將名和成績,就需要將XSXS、KCKC和和XS_KCXS_KC三個表進行連接,才能查找到結(jié)果。三個表進行連接,才能查找到結(jié)果。【例例5.185.18】查找查找BookstoreBookstore數(shù)據(jù)庫中客戶訂購的圖書書名,訂購冊數(shù)據(jù)庫中客戶訂購的圖書書名,訂購冊數(shù)和訂購時間。數(shù)和訂購時間。SELECT Book.書名,Sell.訂購冊數(shù),Sell.訂購時間 FROM Book,Sell WHERE Book.圖書編號=Sell.圖書編號;全連接全連接當數(shù)據(jù)查詢涉及到多張表格時,要將多張表格的數(shù)據(jù)連接起來組成當數(shù)據(jù)查詢涉及到多張表格時,要將多張表格的數(shù)據(jù)連接起來組成一張表格,連接的方式有多種。一張表格,連接的方式有多種。1.1.全連接全連接全連接產(chǎn)生的新表是每個表的每行都與其他表中的每行交叉以產(chǎn)生全連接產(chǎn)生的新表是每個表的每行都與其他表中的每行交叉以產(chǎn)生所有可能的組合,列包含了所有表中出現(xiàn)的列,也就是笛卡兒積。全連所有可能的組合,列包含了所有表中出現(xiàn)的列,也就是笛卡兒積。全連接可能得到的行數(shù)為每個表中行數(shù)之積。接可能得到的行數(shù)為每個表中行數(shù)之積。如表如表A A有有3 3行,表行,表B B有有2 2行,表行,表A A和和B B全連接后得到全連接后得到6 6行(行(3x2=6)3x2=6)的表的表全連接舉例全連接舉例T1T1T2T2T3T3T4T4T5T51 1A A1 13 3M M6 6F F2 20 0N N2 2B BT1T1T2T2T3T3T4T4T5T51 1A A1 13 3M M6 6F F1 13 3M M2 2B B1 13 3M M1 1A A2 20 0N N6 6F F2 20 0N N2 2B B2 20 0M M表表A A和和B B全連接后得到如下全連接后得到如下6 6行(行(3x2=6)3x2=6)的表:的表:表表A A表表B B等值連接等值連接T1T2T3T4T51A13M2B20NFROMFROM子句各個表用逗號分隔,這樣就指定了全連接。全連接潛在地子句各個表用逗號分隔,這樣就指定了全連接。全連接潛在地產(chǎn)生數(shù)量非常大的行,因為可能得到的行數(shù)為每個表中行數(shù)之積。在這產(chǎn)生數(shù)量非常大的行,因為可能得到的行數(shù)為每個表中行數(shù)之積。在這樣的情形下,通常要使用樣的情形下,通常要使用WHEREWHERE子句設(shè)定條件來將結(jié)果集減少為易于管理子句設(shè)定條件來將結(jié)果集減少為易于管理的大小,這樣的連接即為等值連接。的大小,這樣的連接即為等值連接。若表若表A A和和B B進行等值連接(進行等值連接(T1=T3 T1=T3),則如下表所示,只有兩行。),則如下表所示,只有兩行。【例例5.195.19】查找查找BookstoreBookstore數(shù)據(jù)庫中客戶訂購的圖書書名,訂購冊數(shù)據(jù)庫中客戶訂購的圖書書名,訂購冊數(shù)和訂購時間。數(shù)和訂購時間。SELECT Book.書名,Sell.訂購冊數(shù),Sell.訂購時間 FROM Book,Sell WHERE Book.圖書編號=Sell.圖書編號;JOINJOIN連接連接2.JOIN2.JOIN連接連接 第二種方式是使用第二種方式是使用JOINJOIN關(guān)鍵字的連接,語法格式如下:關(guān)鍵字的連接,語法格式如下:表名表名1 INNER JOIN 表名表名2 ON 條件條件|USING(列名列名)(1 1)內(nèi)連接:指定了)內(nèi)連接:指定了INNER關(guān)鍵字的連接是內(nèi)連接。關(guān)鍵字的連接是內(nèi)連接?!纠?.205.20】要實現(xiàn)例要實現(xiàn)例4.234.23中的結(jié)果,可以使用以下語句:中的結(jié)果,可以使用以下語句:SELECT Book.書名,Sell.訂購冊數(shù),Sell.訂購時間 FROM Book inner join Sell ON Book.圖書編號=Sell.圖書編號;該語句根據(jù)該語句根據(jù)ONON關(guān)鍵字后面的連接條件,合并兩個表,返回滿足條件的行關(guān)鍵字后面的連接條件,合并兩個表,返回滿足條件的行。內(nèi)連接是系統(tǒng)默認的,可以省略內(nèi)連接是系統(tǒng)默認的,可以省略INNERINNER關(guān)鍵字。關(guān)鍵字。使用內(nèi)連接后,使用內(nèi)連接后,F(xiàn)ROMFROM子句中子句中ONON條件主要用來連接表,其他并不屬于條件主要用來連接表,其他并不屬于連接表的條件可以使用連接表的條件可以使用WHEREWHERE子句來指定。子句來指定?!纠?5.265.26】用用JOINJOIN關(guān)鍵字表達下列查詢:查找購買了關(guān)鍵字表達下列查詢:查找購買了“網(wǎng)頁程序網(wǎng)頁程序設(shè)計設(shè)計”圖書信息。圖書信息。SELECT 書名,訂購冊數(shù) FROM Book JOIN Sell ON Book.圖書編號=Sell.圖書編號 WHERE 書名=網(wǎng)頁程序設(shè)計 ;JOINJOIN連接舉例連接舉例【例例5.215.21】用用JOINJOIN關(guān)鍵字表達下列查詢:查找訂購數(shù)量大于關(guān)鍵字表達下列查詢:查找訂購數(shù)量大于5 5本圖書本圖書和會員姓名和訂購冊數(shù)。和會員姓名和訂購冊數(shù)。SELECT 會員姓名,訂購冊數(shù) FROM Sell JOIN Members ON Sell.用戶號=Members.用戶號 WHERE 訂購冊數(shù)5;多表連接舉例多表連接舉例內(nèi)連接還可以用于多個表的連接。內(nèi)連接還可以用于多個表的連接?!纠?.225.22】用用JOINJOIN關(guān)鍵字表達下列查詢:查找購買了關(guān)鍵字表達下列查詢:查找購買了“網(wǎng)頁程序設(shè)網(wǎng)頁程序設(shè)計計”且訂購數(shù)量大于且訂購數(shù)量大于5 5本的圖書和會員姓名和訂購冊數(shù)。本的圖書和會員姓名和訂購冊數(shù)。SELECT Book.圖書編號,會員姓名,書名,訂購冊數(shù) FROM Sell JOIN Book ON Book.圖書編號=Sell.圖書編號 JOIN Members ON Sell.身份證號=Members.身份證號 WHERE 書名=網(wǎng)頁程序設(shè)計 AND 訂購冊數(shù)5;多表連接舉例多表連接舉例作為特例,可以將一個表與它自身進行連接,稱為自連接。若要在一作為特例,可以將一個表與它自身進行連接,稱為自連接。若要在一個表中查找具有相同列值的行,則可以使用自連接。使用自連接時需為個表中查找具有相同列值的行,則可以使用自連接。使用自連接時需為表指定兩個別名,且對所有列的引用均要用別名限定。表指定兩個別名,且對所有列的引用均要用別名限定。【例例5.235.23】查找查找BookStoreBookStore數(shù)據(jù)庫中訂單不同、圖書編號相同的圖書數(shù)據(jù)庫中訂單不同、圖書編號相同的圖書的訂單號、圖書編號和訂購冊數(shù)。的訂單號、圖書編號和訂購冊數(shù)。SELECT a.訂單號,a.圖書編號,a.訂購冊數(shù) FROM Sell AS a JOIN Sell AS b ON a.圖書編號=b.圖書編號 where a.訂單號!=b.訂單號;自表連接自表連接 如果要連接的表中有列名相同,并且連接的條件就是列名相等,那如果要連接的表中有列名相同,并且連接的條件就是列名相等,那么么ONON條件也可以換成條件也可以換成USINGUSING子句。子句。USINGUSING(column_listcolumn_list)子句用于為一)子句用于為一系列的列進行命名。這些列必須同時在兩個表中存在。其中系列的列進行命名。這些列必須同時在兩個表中存在。其中column_listcolumn_list為兩表中相同的列名。為兩表中相同的列名。【例例5.245.24】查找查找MembersMembers表中所有訂購過圖書的會員姓名。表中所有訂購過圖書的會員姓名。SELECT Distinct 會員姓名 FROM Members JOIN Sell USING(用戶號);查詢的結(jié)果為查詢的結(jié)果為SellSell表中所有出現(xiàn)的身份證號對應(yīng)的會員姓名。表中所有出現(xiàn)的身份證號對應(yīng)的會員姓名。例例5.245.24的語句與下列語句等價:的語句與下列語句等價:SELECT Distinct 會員姓名 FROM Members JOIN Sell ON Members.用戶號=Sell.用戶號;USINGUSING子句子句多表查詢多表查詢對對YGGLYGGL數(shù)據(jù)庫完成多表查詢:數(shù)據(jù)庫完成多表查詢:1 1、查詢每個雇員的基本情況和薪水情況、查詢每個雇員的基本情況和薪水情況2 2、查詢、查詢“王林王林”的基本情況和所工作的部門名稱的基本情況和所工作的部門名稱3 3、查詢月收入在、查詢月收入在2000300020003000元的員工姓名和支出元的員工姓名和支出4 4、查詢研發(fā)部在、查詢研發(fā)部在19701970年以前出生的員工姓名和薪水情況年以前出生的員工姓名和薪水情況外連接外連接 指定了指定了OUTEROUTER關(guān)鍵字的連接為外連接。關(guān)鍵字的連接為外連接。外連接包括:外連接包括:左外連接(左外連接(LEFT OUTER JOINLEFT OUTER JOIN):):結(jié)果表中除了匹配行外,還包括左表有的但右表中不匹配的行,結(jié)果表中除了匹配行外,還包括左表有的但右表中不匹配的行,對于這樣的行,從右表被選擇的列設(shè)置為對于這樣的行,從右表被選擇的列設(shè)置為NULLNULL。右外連接(右外連接(RIGHT OUTER JOINRIGHT OUTER JOIN):):結(jié)果表中除了匹配行外,還包括右表有的但左表中不匹配的行,結(jié)果表中除了匹配行外,還包括右表有的但左表中不匹配的行,對于這樣的行,從左表被選擇的列設(shè)置為對于這樣的行,從左表被選擇的列設(shè)置為NULLNULL。左外連接舉例左外連接舉例T1T1T2T2T3T3T4T4T5T51 1A A1 13 3M M6 6F F2 20 0N N2 2B BT1T1T2T2T3T3T4T4T5T51 1A A1 13 3M M6 6F FNULLNULLNULLNULLNULLNULL2 2B B2 20 0N NFrom A left join B on T1=T3From A left join B on T1=T3:表表A A表表B B外連接舉例外連接舉例【例例5.255.25】查找所有圖書的圖書編號、數(shù)量及訂購了圖書的會員身查找所有圖書的圖書編號、數(shù)量及訂購了圖書的會員身份證號,若從未訂購過,也要包括其情況。份證號,若從未訂購過,也要包括其情況。SELECT Book.圖書編號,Book.數(shù)量,身份證號 FROM Book LEFT OUTER JOIN Sell ON Book.圖書編號=Sell.圖書編號;【例例5.265.26】查找訂購了圖書的會員的訂單號、圖書編號和訂購冊數(shù)查找訂購了圖書的會員的訂單號、圖書編號和訂購冊數(shù)以及所有會員的會員姓名。以及所有會員的會員姓名。SELECT 訂單號,圖書編號,訂購冊數(shù),Members.會員姓名 FROM Sell RIGHT JOIN Members ON Members.用戶號=Sell.用戶號;子查詢子查詢 在查詢條件中,可以使用另一個查詢的結(jié)果作為條件的一部分,在查詢條件中,可以使用另一個查詢的結(jié)果作為條件的一部分,例如,判定列值是否與某個查詢的結(jié)果集中的值相等,作為查詢條例如,判定列值是否與某個查詢的結(jié)果集中的值相等,作為查詢條件一部分的查詢稱為子查詢。件一部分的查詢稱為子查詢。SQLSQL標準允許標準允許SELECTSELECT多層嵌套使用,用多層嵌套使用,用來表示復(fù)雜的查詢。子查詢除了可以用在來表示復(fù)雜的查詢。子查詢除了可以用在SELECTSELECT語句中,還可以用語句中,還可以用在在INSERTINSERT、UPDATEUPDATE及及DELETEDELETE語句中。語句中。子查詢通常與子查詢通常與ININ、EXISTEXIST謂詞及比較運算符結(jié)合使用。謂詞及比較運算符結(jié)合使用。(1 1)ININ子查詢子查詢 IN IN子查詢用于進行一個給定值是否在子查詢結(jié)果集中的判斷,子查詢用于進行一個給定值是否在子查詢結(jié)果集中的判斷,格式為:格式為:expressionexpression NOT IN NOT IN (subquery)(subquery)其中,其中,subquerysubquery是子查詢。當表達式是子查詢。當表達式expressionexpression與子查詢與子查詢subquerysubquery的結(jié)果表中的某個值相等時,的結(jié)果表中的某個值相等時,ININ謂詞返回謂詞返回TRUETRUE,否則返回,否則返回FALSEFALSE;若;若使用了使用了NOTNOT,則返回的值剛好相反。,則返回的值剛好相反。子查詢舉例子查詢舉例【例例5.275.27】查找在查找在BookstoreBookstore數(shù)據(jù)庫中張三的訂單信息。數(shù)據(jù)庫中張三的訂單信息。SELECT*FROM Sell WHERE 用戶號 IN(SELECT 用戶號 FROM Members WHERE 會員姓名=張三);說明:在執(zhí)行包含子查詢的說明:在執(zhí)行包含子查詢的SELECTSELECT語句時,系統(tǒng)先執(zhí)行子查詢,產(chǎn)語句時,系統(tǒng)先執(zhí)行子查詢,產(chǎn)生一個結(jié)果表,再執(zhí)行查詢。生一個結(jié)果表,再執(zhí)行查詢。本例中,先執(zhí)行子查詢:本例中,先執(zhí)行子查詢:SELECT 用戶號 FROM Members WHERE 會員姓名=張三 得到一個只含有身份證號列的表。再執(zhí)行外查詢,若得到一個只含有身份證號列的表。再執(zhí)行外查詢,若SellSell表中某行表中某行的身份證號列值等于子查詢結(jié)果表中的任一個值,則該行就被選擇。的身份證號列值等于子查詢結(jié)果表中的任一個值,則該行就被選擇。子查詢嵌套舉例子查詢嵌套舉例ININ子查詢只能返回一列數(shù)據(jù)。對于較復(fù)雜的查詢,可以使用嵌套子查詢只能返回一列數(shù)據(jù)。對于較復(fù)雜的查詢,可以使用嵌套的子查詢。的子查詢?!纠?.285.28】查找購買了除查找購買了除“網(wǎng)頁程序設(shè)計網(wǎng)頁程序設(shè)計”以外圖書的會員信息。以外圖書的會員信息。要查找會員信息,先要知道會員的身份證號,而要知道購買了除要查找會員信息,先要知道會員的身份證號,而要知道購買了除“網(wǎng)頁程序設(shè)計網(wǎng)頁程序設(shè)計”以外圖書的會員,可以按圖書編號在以外圖書的會員,可以按圖書編號在SellSell表中表中查到,但是查到,但是“網(wǎng)頁程序設(shè)計網(wǎng)頁程序設(shè)計”的圖書編號要通過查找的圖書編號要通過查找BookBook才可以才可以獲得。獲得。SELECT*FROM Members WHERE 用戶號 IN (SELECT 用戶號 FROM Sell WHERE 圖書編號 NOT IN (SELECT 圖書編號 FROM Book WHERE 書名=網(wǎng)頁程序設(shè)計);比較子查詢比較子查詢這種子查詢可以認為是這種子查詢可以認為是ININ子查詢的擴展,它使表達式的值與子查詢的結(jié)子查詢的擴展,它使表達式的值與子查詢的結(jié)果進行比較運算。其格式如下:果進行比較運算。其格式如下:表達式表達式|=|!=|ALL|SOME|ANY|=|!=|ALL|SOME|ANY (子查詢子查詢)【例【例5.295.29】查找查找BookBook表中所有比表中所有比“網(wǎng)頁設(shè)計網(wǎng)頁設(shè)計”類圖書價格都高的類圖書價格都高的圖書基圖書基本信息。本信息。SELECT 圖書編號,圖書類別,單價 FROM Book WHERE 單價ALL(SELECT 單價 FROM Book WHERE 圖書類別=網(wǎng)頁設(shè)計);比較子查詢比較子查詢【例5.30】查找Sell表中訂購冊數(shù)不低于編號為 TP7/301-135 的任何一個訂單的訂購冊數(shù)的訂單信息。SELECT 圖書編號,訂購冊數(shù) FROM Sell WHERE 訂購冊數(shù)SOME (SELECT 訂購冊數(shù) FROM Sell WHERE 圖書編號=TP7/301-135 );外連接與子查詢外連接與子查詢一、對一、對YGGLYGGL數(shù)據(jù)庫完成多表查詢:數(shù)據(jù)庫完成多表查詢:1 1、使用左外連接顯示員工表中員工基本信息和所在部門的部門名稱、使用左外連接顯示員工表中員工基本信息和所在部門的部門名稱二、使用子查詢完成:二、使用子查詢完成:2 2、查找工資收入大于、查找工資收入大于20002000元的員工的基本信息元的員工的基本信息3 3、查找在財務(wù)部工作的員工的基本信息、查找在財務(wù)部工作的員工的基本信息4 4、查找住在、查找住在“中山中山”的員工的工作部門名稱的員工的工作部門名稱聚合函數(shù)聚合函數(shù)聚合函數(shù)聚合函數(shù)SELECTSELECT子句的表達式中還可以包含所謂的聚合函數(shù)。聚合函數(shù)常子句的表達式中還可以包含所謂的聚合函數(shù)。聚合函數(shù)常常用于對一組值進行計算,然后返回單個值。常用于對一組值進行計算,然后返回單個值。函函 數(shù)數(shù) 名名說說 明明COUNTCOUNT求組中項數(shù),返回求組中項數(shù),返回intint類型整數(shù)類型整數(shù)MAXMAX求最大值求最大值MINMIN求最小值求最小值SUMSUM返回表達式中所有值的和返回表達式中所有值的和AVGAVG求組中值的平均值求組中值的平均值COUNTCOUNT函數(shù)函數(shù)函數(shù)函數(shù)(1 1)COUNTCOUNT函數(shù)函數(shù)聚合函數(shù)中最經(jīng)常使用的是聚合函數(shù)中最經(jīng)常使用的是COUNT()COUNT()函數(shù),用于統(tǒng)計組中滿足條件函數(shù),用于統(tǒng)計組中滿足條件的行數(shù)或總行數(shù),返回的行數(shù)或總行數(shù),返回SELECTSELECT語句檢索到的行中非語句檢索到的行中非NULLNULL值的數(shù)目,若值的數(shù)目,若找不到匹配的行,則返回找不到匹配的行,則返回0 0。語法格式為:語法格式為:COUNT(ALL|DISTINCT 表達式表達式|*)其中,其中,表達式1是一個表達式,其數(shù)據(jù)類型是除是一個表達式,其數(shù)據(jù)類型是除BLOBBLOB或或TEXTTEXT之外的之外的任何類型。任何類型。ALLALL表示對所有值進行運算,表示對所有值進行運算,DISTINCTDISTINCT表示去除重復(fù)值,表示去除重復(fù)值,默認為默認為ALLALL。使用。使用COUNT(*)COUNT(*)時將返回檢索行的總數(shù)目,不論其是否包時將返回檢索行的總數(shù)目,不論其是否包含含 NULLNULL值。值?!纠?.315.31】求會員總?cè)藬?shù)。求會員總?cè)藬?shù)。SELECT COUNT(*)AS 會員數(shù) FROM Members;【例例5.325.32】統(tǒng)計已結(jié)清的訂單數(shù)。統(tǒng)計已結(jié)清的訂單數(shù)。SELECT COUNT(是否結(jié)清)AS 已結(jié)清的訂單數(shù) FROM Sell;注意:注意:這里這里COUNT(COUNT(是否結(jié)清是否結(jié)清)只統(tǒng)計是否結(jié)清列中不為只統(tǒng)計是否結(jié)清列中不為NULLNULL的行。的行。【例例5.335.33】統(tǒng)計訂購冊數(shù)在統(tǒng)計訂購冊數(shù)在5 5以上的訂單數(shù)。以上的訂單數(shù)。SELECT COUNT(訂購冊數(shù))AS 訂購冊數(shù)在5以上的訂單數(shù) FROM Sell WHERE 訂購冊數(shù)5;COUNT函數(shù)舉例函數(shù)舉例MAXMAX和和MINMIN函數(shù)函數(shù)函數(shù)函數(shù)(2 2)MAXMAX和和MINMINMAXMAX和和MINMIN分別用于求表達式中所有值項的最大值與最小值,語法格分別用于求表達式中所有值項的最大值與最小值,語法格式為:式為:MAX/MIN(ALL|DISTINCT 表達式)其中,其中,expressionexpression是常量、列、函數(shù)或表達式,其數(shù)據(jù)類型可以是是常量、列、函數(shù)或表達式,其數(shù)據(jù)類型可以是數(shù)字、字符和時間日期數(shù)字、字符和時間日期 類型。類型?!纠?.355.35】求訂購了圖書編號為求訂購了圖書編號為TP7/301-135的訂單的最高訂購的訂單的最高訂購冊數(shù)和最低訂購冊數(shù)。冊數(shù)和最低訂購冊數(shù)。SELECT MAX(訂購冊數(shù)),MIN(訂購冊數(shù))FROM Sell WHERE 圖書編號=TP7/301-135;注意:注意:當給定列上只有空值或檢索出的中間結(jié)果為空時,當給定列上只有空值或檢索出的中間結(jié)果為空時,MAXMAX和和MINMIN函數(shù)的值也為空。函數(shù)的值也為空。SUMSUM函數(shù)和函數(shù)和AVGAVG函數(shù)函數(shù)(3 3)SUMSUM函數(shù)和函數(shù)和AVGAVG函數(shù)函數(shù)SUMSUM和和AVGAVG分別用于求表達式中所有值項的總和與平均值,語法格式為:分別用于求表達式中所有值項的總和與平均值,語法格式為:SUM/AVG(ALL|DISTINCT 表達式)其中,其中,expressionexpression是常量、列、函數(shù)或表達式,其數(shù)據(jù)類型只能是數(shù)值型。是常量、列、函數(shù)或表達式,其數(shù)據(jù)類型只能是數(shù)值型?!纠?.365.36】求訂購了圖書編號為求訂購了圖書編號為TP7/301-135圖書的訂購總冊數(shù)。圖書的訂購總冊數(shù)。SELECT SUM(訂購冊數(shù))AS 訂購總冊數(shù) FROM Sell WHERE 圖書編號=TP7/301-135;【例例5.375.37】求訂購圖書編號為求訂購圖書編號為TP7/301-135圖書的訂單平均冊數(shù)。圖書的訂單平均冊數(shù)。SELECT AVG(訂購冊數(shù))AS 每筆訂單平均冊數(shù) FROM Sell WHERE 圖書編號=TP7/301-135;任務(wù)三任務(wù)三任務(wù)三任務(wù)三 分類匯總與排序分類匯總與排序分類匯總與排序分類匯總與排序 GROUP BYGROUP BY子句主要用于根據(jù)字段對行分組。例如,根據(jù)學生所學子句主要用于根據(jù)字段對行分組。例如,根據(jù)學生所學的專業(yè)對的專業(yè)對XSXS表中的所有行分組,結(jié)果是每個專業(yè)的學生成為一組。表中的所有行分組,結(jié)果是每個專業(yè)的學生成為一組。GROUP BYGROUP BY子句的語法格式如下:子句的語法格式如下:GROUP BY 列名列名|表達式表達式 ASC|DESC,.WITH ROLLUPGROUP BYGROUP BY子句后通常包含列名或表達式。子句后通常包含列名或表達式。MySQLMySQL對對GROUP BYGROUP BY子句子句進行了擴展,可以在列的后面指定進行了擴展,可以在列的后面指定ASCASC(升序)或(升序)或DESCDESC(降序)。(降序)。GROUP BYGROUP BY可以根據(jù)一個或多個列進行分組,也可以根據(jù)表達式進行可以根據(jù)一個或多個列進行分組,也可以根據(jù)表達式進行分組,經(jīng)常和聚合函數(shù)一起使用。分組,經(jīng)常和聚合函數(shù)一起使用?!纠纠?.385.38】輸出輸出BookBook表中圖書類別名。表中圖書類別名。SELECT 圖書類別 FROM Book GROUP BY 圖書類別;【例【例5.395.39】按圖書類別統(tǒng)計按圖書類別統(tǒng)計BookBook表中各類圖書的庫存數(shù)。表中各類圖書的庫存數(shù)。SELECT 圖書類別,COUNT(*)AS 庫存數(shù) FROM Book GROUP BY 圖書類別;【例【例5.405.40】按圖書編號分類統(tǒng)計其訂單數(shù)和訂單的平均訂購冊數(shù)。按圖書編號分類統(tǒng)計其訂單數(shù)和訂單的平均訂購冊數(shù)。SELECT 圖書編號,AVG(訂購冊數(shù))AS 訂購冊數(shù),COUNT(訂單號)AS 訂單數(shù) FROM Sell GROUP BY 圖書編號;帶帶帶帶ROLLUPROLLUP的的的的GROUP BYGROUP BY子句子句子句子句 使用帶使用帶ROLLUPROLLUP操作符的操作符的GROUP BYGROUP BY子句,可指定在結(jié)果集內(nèi)不僅子句,可指定在結(jié)果集內(nèi)不僅包含由包含由 GROUP BY GROUP BY 提供的正常行,還包含匯總行。提供的正常行,還包含匯總行。【例例5.415.41】按圖書類別、出版社分類統(tǒng)計按圖書類別、出版社分類統(tǒng)計BookBook表中各類圖書的庫存表中各類圖書的庫存數(shù)。數(shù)。SELECT 圖書類別,出版社,Sum(數(shù)量)AS 庫存數(shù) FROM Book GROUP BY 圖書類別,出版社;請將執(zhí)行結(jié)果與以下語句比較:請將執(zhí)行結(jié)果與以下語句比較:SELECT 圖書類別,出版社,Sum(數(shù)量)AS 庫存數(shù) FROM Book GROUP BY 圖書類別,出版社 WITH ROLLUP;HAVINGHAVINGHAVINGHAVING子句子句子句子句使用使用HAVINGHAVING子句的目的與子句的目的與WHEREWHERE子句類似,不同的是子句類似,不同的是WHEREWHERE子句子句是用來在是用來在FROMFROM子句之后選擇行,而子句之后選擇行,而HAVINGHAVING子句用來在子句用來在GROUP BYGROUP BY子句子句后選擇行。后選擇行。語法格式:語法格式:HAVING 條件條件其中,其中,條件條件的定義和的定義和WHEREWHERE子句中的條件類似,不過子句中的條件類似,不過HAVINGHAVING子子句中的條件可以包含聚合函數(shù),而句中的條件可以包含聚合函數(shù),而WHEREWHERE子句中則不可以。子句中則不可以。SQLSQL標準要求標準要求HAVINGHAVING必須引用必須引用GROUP BYGROUP BY子句中的列或用于聚合子句中的列或用于聚合函數(shù)中的列。不過,函數(shù)中的列。不過,MySQLMySQL支持對此工作性質(zhì)的擴展,并允許支持對此工作性質(zhì)的擴展,并允許HAVINGHAVING引用引用SELECTSELECT清單中的列和外部子查詢中的列。清單中的列和外部子查詢中的列。HAVINGHAVINGHAVINGHAVING子句舉例子句舉例子句舉例子句舉例【例例5.425.42】查找查找SellSell表中每個會員平均訂購冊數(shù)在表中每個會員平均訂購冊數(shù)在1010本以上的本以上的會員的用戶號和平均訂購冊數(shù)。會員的用戶號和平均訂購冊數(shù)。SELECT 用戶號,AVG(訂購冊數(shù))AS 平均訂購冊數(shù) FROM Sell GROUP BY 用戶號 HAVING AVG(訂購冊數(shù))10;【例例5.435.43】查找查找SellSell表中會員訂單數(shù)在表中會員訂單數(shù)在2 2筆以上且每筆訂購冊數(shù)筆以上且每筆訂購冊數(shù)都在都在5 5本以上的會員。本以上的會員。SELECT 用戶號,AVG(訂購冊數(shù))FROM Sell WHERE 訂購冊數(shù) 5 GROUP BY 用戶號 HAVING COUNT(*)2;ORDER BY子句子句在一條在一條SELECTSELECT語句中,如果不使用語句中,如果不使用ORDER BYORDER BY子句,結(jié)果中行的順子句,結(jié)果中行的順序是不可預(yù)料的。使用序是不可預(yù)料的。使用ORDER BYORDER BY子句后可以保證結(jié)果中的行按一定順子句后可以保證結(jié)果中的行按一定順序排列。序排列。語法格式:語法格式:ORDER BY 列名列名|表達式表達式|列編號列編號 ASC|DESC,.說明:說明:ORDER BYORDER BY子句后可以是一個列、一個表達式或一個正整數(shù)。子句后可以是一個列、一個表達式或一個正整數(shù)。正整數(shù)表示按結(jié)果表中該位置上的列排序

注意事項

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

溫馨提示:如果因為網(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)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!