MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐 第2版 課件 Chap04 檢索表記錄_第1頁
MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐 第2版 課件 Chap04 檢索表記錄_第2頁
MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐 第2版 課件 Chap04 檢索表記錄_第3頁
MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐 第2版 課件 Chap04 檢索表記錄_第4頁
MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐 第2版 課件 Chap04 檢索表記錄_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MySQL數(shù)據(jù)庫基礎(chǔ)與實(shí)踐4檢索表記錄第章本章內(nèi)容4.1SELECT基本查詢4.2條件查詢4.3分組查詢4.4表的連接4.5子查詢4.6聯(lián)合查詢4.7案例:網(wǎng)上書店系統(tǒng)綜合查詢4.1SELECT基本查詢4.1.1SELECT…FROM查詢語句4.1.2查詢指定字段信息4.1.3關(guān)鍵字DISTINCT的使用4.1.4ORDERBY子句的使用4.1.5LIMIT子句的使用4.1SELECT基本查詢查詢數(shù)據(jù)是使用數(shù)據(jù)庫的最基本也是最重要的方式?;静樵円卜Q為簡(jiǎn)單查詢,是指在查詢的過程中只涉及到一個(gè)表的查詢。4.1.1SELECT…FROM查詢語句SELECT語句的一般格式為:SELECT[ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]FROM<表名或視圖名>[,<表名或視圖名>][WHERE<條件表達(dá)式>] [GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]][LIMIT[start,]count]4.1.1SELECT…FROM查詢語句在SELECT語句的結(jié)構(gòu)中,除了SELECT子句是必不可少的之外,其他子句都是可選的?!纠?-1】計(jì)算25的平方根并輸出MySQL的版本號(hào)。SELECTSQRT(25),VERSION();4.1.2查詢指定字段信息在SELECT子句后面直接列出要顯示的字段的列名,列名之間必須以逗號(hào)分隔?!纠?-2】檢索Users表,查詢所有會(huì)員的名稱、性別和電話號(hào)碼。SELECTU_Name,U_Sex,U_PhoneFROMUsers;4.1.2查詢指定字段信息如果在查詢的過程中,要檢索表或視圖中的所有字段信息,可以在SELECT子句中使用通配符“*”。【例4-3】檢索Users表,查詢所有會(huì)員的基本資料。SELECT*FROMUsers;4.1.2查詢指定字段信息定義別名可用以下方法:通過“列名列標(biāo)題”形式;通過“列名AS列標(biāo)題”形式。例4-1的語句可修改如下:SELECTSQRT(25)平方根,VERSION()as版本號(hào);4.1.3關(guān)鍵字DISTINCT的使用ALL關(guān)鍵字表示將會(huì)顯示所有檢索的數(shù)據(jù)行,包括重復(fù)的數(shù)據(jù)行;(默認(rèn))DISTINCT關(guān)鍵字表示僅僅顯示不重復(fù)的數(shù)據(jù)行,對(duì)于重復(fù)的數(shù)據(jù)行,則只顯示一次。【例4-4】檢索Orders表,查詢訂購了書籍的會(huì)員號(hào)。SELECTU_IDFROMOrders;4.1.3關(guān)鍵字DISTINCT的使用如果希望在顯示結(jié)果的時(shí)候去掉重復(fù)行,可以使用DISTINCT關(guān)鍵字。SELECTDISTINCTU_IDFROMOrders;4.1.4ORDERBY子句的使用ORDERBY子句是根據(jù)查詢結(jié)果中的一個(gè)字段或多個(gè)字段對(duì)查詢結(jié)果進(jìn)行排序。默認(rèn)的情況下按升序排列?!纠?-5】檢索BookInfo表,按圖書出版的日期進(jìn)行排序。SELECTB_ID,BT_ID,B_Name,B_DateFROMBookInfoORDERBYB_DateDESC;4.1.4ORDERBY子句的使用【例4-6】檢索BookInfo表,按圖書類別的升序及圖書出版日期的降序進(jìn)行排序。SELECTB_ID,BT_ID,B_Name,B_DateFROMBookInfoORDERBYBT_ID,B_DateDESC;4.1.5LIMIT子句的使用LIMIT子句的用途是從結(jié)果集中進(jìn)一步選取指定數(shù)量的數(shù)據(jù)行,其基本語法格式如下:LIMIT[start,]count例如,LIMIT5表示返回結(jié)果集中的前5行記錄,LIMIT10,20表示從結(jié)果集的第11行記錄開始返回20行記錄。注意:在結(jié)果集中,第一行記錄的start值為0,而不是1。4.1.4ORDERBY子句的使用【例4-7】檢索BookInfo表,按圖書編號(hào)查詢前5本圖書的信息。SELECTB_ID,B_NameFROMBookInfoORDERBYB_IDLIMIT5;4.1.4ORDERBY子句的使用【例4-8】檢索BookInfo表,按圖書編號(hào)檢索從第3條記錄開始的2條記錄的信息。SELECTB_ID,B_NameFROMBookInfoORDERBYB_IDLIMIT2,2;4.2條件查詢4.2.1使用關(guān)系表達(dá)式查詢4.2.2使用邏輯表達(dá)式查詢4.2.3設(shè)置取值范圍的查詢4.2.4空值查詢4.2.5模糊查詢4.2.1使用關(guān)系表達(dá)式查詢關(guān)系表達(dá)式是指在表達(dá)式中含有關(guān)系運(yùn)算符。常見的關(guān)系運(yùn)算符有:=(等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=或<>(不等于)。如果在WHERE子句中含有關(guān)系表達(dá)式,則只有滿足關(guān)系表達(dá)式的數(shù)據(jù)行才會(huì)被顯示到結(jié)果集中。4.2.1使用關(guān)系表達(dá)式查詢【例4-9】檢索BookInfo表,查詢會(huì)員價(jià)大于40元的圖書信息。SELECTB_ID,B_Name,B_SalePriceFROMBookInfoWHEREB_SalePrice>40;4.2.2使用邏輯表達(dá)式查詢常用的邏輯運(yùn)算符有AND、OR和NOT。當(dāng)一個(gè)WHERE子句同時(shí)包括若干個(gè)邏輯運(yùn)算符時(shí),其優(yōu)先級(jí)從高到低依次為NOT、AND、OR。如果想改變優(yōu)先級(jí),可以使用括號(hào)。4.2.2使用邏輯表達(dá)式查詢【例4-10】檢索BookInfo表,查詢“機(jī)械工業(yè)出版社”出版的書名為“MySQL自學(xué)手冊(cè)”的圖書的基本信息。SELECTB_Name,B_Publisher,B_DateFROMBookInfoWHEREB_Name='MySQL自學(xué)手冊(cè)'ANDB_Publisher='機(jī)械工業(yè)出版社';4.2.2使用邏輯表達(dá)式查詢【例4-11】檢索BookInfo表,查詢圖書的會(huì)員價(jià)格在20元到40元之間的圖書信息。SELECTB_ID,B_Name,B_SalePriceFROMBookInfoWHEREB_SalePrice>=20ANDB_SalePrice<=40;4.2.3設(shè)置取值范圍的查詢謂詞BETWEEN…AND和NOTBETWEEN…AND可以用來設(shè)置查詢條件。其中,BETWEEN后面是范圍的下限,AND后是范圍的上限。例4-11使用BETWEEN…AND語句來完成。SELECTB_ID,B_Name,B_SalePriceFROMBookInfoWHEREB_SalePriceBETWEEN20AND40;4.2.4空值查詢NULL是特殊的值,代表“無值”,與0、空字符串或僅僅包含空格都不相同。在涉及空值的查詢中,可以使用ISNULL或者ISNOTNULL來設(shè)置這種查詢條件。4.2.4空值查詢【例4-12】在Users表中新增一條記錄,只輸入會(huì)員名zhangsan和密碼654321,然后檢索Users表,查詢電話號(hào)碼為空的會(huì)員編號(hào)和會(huì)員名稱。SELECTU_ID,U_NameFROMUsersWHEREU_PhoneISNULL;4.2.5模糊查詢通常在查詢字符數(shù)據(jù)時(shí),提供的查詢條件并不是十分的精確。查詢條件僅僅是包含或類似某種樣式的字符,這種查詢稱為模糊查詢。4.2.5模糊查詢要實(shí)現(xiàn)模糊查詢,必須使用通配符,利用通配符可以創(chuàng)建和特定字符串進(jìn)行比較的搜索模式。SQL支持如下通配符:%:代表任意多個(gè)字符。_(下劃線):代表任意的一個(gè)字符。4.2.5模糊查詢?nèi)绻樵儣l件中使用了通配符,則操作符必須使用LIKE關(guān)鍵字。LIKE關(guān)鍵字用于搜索與特定字符串相匹配的字符數(shù)據(jù),其基本的語法形式為:[NOT]LIKE<匹配字符串>4.2.5模糊查詢【例4-13】檢索BookInfo表,查詢所有MySQL相關(guān)書籍的名稱、出版社和會(huì)員價(jià)格。SELECTB_Name,B_Publisher,B_SalePriceFROMBookInfoWHEREB_NameLIKE'%MySQL%';4.2.5模糊查詢【例4-14】檢索BookInfo表,查詢所有的第2個(gè)字為“志”的作者所寫圖書的書名、作者和出版社信息。SELECTB_Name,B_Author,B_PublisherFROMBookInfoWHEREB_AuthorLIKE'_志%';4.2.5模糊查詢?nèi)绻樵兊淖址旧砭秃型ㄅ浞?,此時(shí)就需要用ESCAPE關(guān)鍵字,對(duì)通配符進(jìn)行轉(zhuǎn)義。例如,在Users表中添加一條記錄:會(huì)員名為yiyi_66,密碼為123456?,F(xiàn)要查詢會(huì)員名中含有“_”的會(huì)員信息,可以使用如下的語句:SELECT*FROMUsersWHEREU_NameLIKE'%/_%'ESCAPE'/';4.3分組查詢4.3.1GROUPBY子句4.3.2HAVING子句4.3分組查詢?nèi)绻跀?shù)據(jù)檢索時(shí)對(duì)表中數(shù)據(jù)按照一定條件進(jìn)行分組匯總或求平均值,就要在SELECT語句中與GROUPBY子句一起使用聚合函數(shù)。4.3分組查詢常用的聚合函數(shù)聚合函數(shù)說明SUM()返回某列所有值的總和AVG()返回某列的平均值MAX()返回某列的最大值MIN()返回某列的最小值COUNT()返回某列的行數(shù)4.3分組查詢例如,要統(tǒng)計(jì)Users表中會(huì)員的數(shù)量,可以使用COUNT(*),計(jì)算出來的結(jié)果就是查詢所選取到的行數(shù),相關(guān)語句如下:SELECTCOUNT(*)FROMUsers;只統(tǒng)計(jì)填寫電話號(hào)碼的會(huì)員個(gè)數(shù):SELECTCOUNT(U_Phone)FROMUsers;注意:聚合函數(shù)忽略列值為NULL的行。4.3.1GROUPBY子句分組是通過GROUPBY子句來實(shí)現(xiàn)的,其基本語法格式如下:GROUPBY<列名>4.3.1GROUPBY子句【例4-15】檢索BookInfo表,查詢每個(gè)出版社出版的圖書的數(shù)量。SELECTB_Publisher,COUNT(*)AS總數(shù)FROMBookInfoGROUPBYB_Publisher;4.3.1GROUPBY子句【例4-16】檢索BookInfo表,查詢每個(gè)出版社圖書的最高價(jià)格和最低價(jià)格。SELECTB_Publisher,MAX(B_MarketPrice)AS最高價(jià)格,MIN(B_MarketPrice)AS最低價(jià)格FROMBookInfoGROUPBYB_Publisher;4.3.2HAVING子句如果分組以后要求按一定條件對(duì)這些組進(jìn)行篩選,則需要使用HAVING子句指定篩選條件。HAVING子句必須和GROUPBY子句同時(shí)使用。4.3.2HAVING子句【例4-17】檢索BookInfo表,查詢出版圖書在2本及2本以上的出版社信息。SELECTB_Publisher,COUNT(*)AS總數(shù)FROMBookInfoGROUPBYB_PublisherHAVINGCOUNT(*)>=2;4.3.2HAVING子句【例4-18】檢索BookInfo表,查詢出版了2本及2本以上并且價(jià)格大于等于32元的圖書信息。SELECTB_Publisher,COUNT(*)AS總數(shù)FROMBookInfoWHEREB_MarketPrice>=32GROUPBYB_PublisherHAVINGCOUNT(*)>=2;4.3.2HAVING子句HAVING子句和WHERE子句都是設(shè)置查詢條件,但兩個(gè)子句的作用對(duì)象不同。WHERE子句作用的對(duì)象是基本表或視圖,從中選出滿足條件的記錄;而HAVING子句的作用對(duì)象是組,從中選出滿足條件的分組。WHERE在數(shù)據(jù)分組之前進(jìn)行過濾,而HAVING在數(shù)據(jù)分組之后進(jìn)行過濾。4.4 表的連接4.4.1內(nèi)連接4.4.2外連接4.4.3自連接4.4.4交叉連接4.4 表的連接多表連接的語法格式如下:SELECT<查詢列表>FROM<表名1>[連接類型]JOIN<表名2>ON<連接條件>WHERE<查詢條件>其中,連接類型有3種:內(nèi)連接(INNERJOIN)、外連接(OUTERJOIN)和交叉連接(CROSSJOIN)。4.4 表的連接用來連接兩個(gè)表的條件稱為連接條件,通常是通過匹配多個(gè)表中的公共字段來實(shí)現(xiàn)的。4.4.1內(nèi)連接內(nèi)連接是從兩個(gè)或兩個(gè)以上的表的組合中,挑選出符合連接條件的數(shù)據(jù)。內(nèi)連接是最常用的連接類型,也是默認(rèn)的連接類型。在FROM子句中使用INNERJOIN(INNER關(guān)鍵字可以省略)來實(shí)現(xiàn)內(nèi)連接。4.4.1內(nèi)連接【例4-19】檢索BookInfo和BookType表,查詢每本圖書所屬的圖書類別。SELECTB_Name,BookInfo.BT_ID,BT_NameFROMBookInfoINNERJOINBookTypeONBookInfo.BT_ID=BookType.BT_IDORDERBYBT_ID;4.4.1內(nèi)連接【例4-20】檢索Users和Orders表,查詢訂單總價(jià)超過100元的會(huì)員名、下單時(shí)間及訂單總價(jià)。SELECTU.U_Name,O.O_ID,O.O_Time,O.O_TotalPriceFROMUsersUINNERJOINOrdersOONU.U_ID=O.U_IDWHEREO_TotalPrice>100;4.4.1內(nèi)連接【例4-21】檢索OrderDetails、Orders和BookInfo表,查詢訂單的下單時(shí)間及所購圖書名。SELECTOD.OD_ID,O.O_Time,BI.B_NameFROMOrderDetailsODINNERJOINOrdersOINNERJOINBookInfoBIONOD.O_ID=O.O_IDANDOD.B_ID=BI.B_ID;4.4.2外連接使用外連接時(shí),以主表中每行的數(shù)據(jù)去匹配從表中的數(shù)據(jù)行,如果符合連接條件則返回到結(jié)果集中;如果沒有找到匹配行,則主表的行仍然保留,并且返回到結(jié)果集中,相應(yīng)的從表中的數(shù)據(jù)行被填上NULL值后也返回到結(jié)果集中。4.4.2外連接外連接有3種類型,分別是左外連接(LEFTOUTERJOIN)、右外連接(RIGHTOUTERJOIN)和全外連接(FULLOUTERJOIN)。MySQL暫不支持全外連接。4.4.2外連接1.左外連接左外連接的結(jié)果集中包含左表(JOIN關(guān)鍵字左邊的表)中所有的記錄,如果右表中沒有滿足連接條件的記錄,則結(jié)果集中右表中的相應(yīng)行數(shù)據(jù)填充為NULL。4.4.2外連接【例4-22】以左外連接方式查詢所有會(huì)員的訂書情況,在結(jié)果集中顯示會(huì)員編號(hào)、會(huì)員名稱、訂單產(chǎn)生時(shí)間及訂單總價(jià),并按會(huì)員編號(hào)排序。SELECTU.U_ID,U.U_Name,O.O_Time,O.O_TotalPriceFROMUsersULEFTOUTERJOINOrdersOONU.U_ID=O.U_IDORDERBYU_ID;4.4.2外連接2.右外連接右外連接的結(jié)果集中包含滿足連接條件的所有數(shù)據(jù)和右表(JOIN關(guān)鍵字右邊的表)中不滿足條件的數(shù)據(jù),左表中的相應(yīng)行數(shù)據(jù)為NULL。4.4.2外連接【例4-23】以右外連接方式查詢所有訂單的詳細(xì)情況,在結(jié)果集中顯示訂單詳情號(hào)、購買數(shù)量、圖書編號(hào)及圖書名。SELECTOD.OD_ID,OD_Number,BI.B_ID,BI.B_NameFROMOrderDetailsODRIGHTOUTERJOINBookInfoBIONOD.B_ID=BI.B_ID;4.4.3自連接在同一個(gè)表中進(jìn)行的連接被稱為自連接。對(duì)一個(gè)表使用自連接時(shí),可以看作是這張表的兩個(gè)副本之間進(jìn)行的連接,必須為該表指定兩個(gè)別名。4.4.3自連接【例4-24】在圖書類別表BookType中,查詢每種圖書類別和它的子類別。SELECTBT1.BT_NameAS父類別,BT2.BT_NameAS子類別FROMBookTypeBT1INNERJOINBookTypeBT2ONBT1.BT_ID=BT2.BT_FatherID;4.4.3自連接【例4-25】要查詢BookInfo表中高于“MySQL編程基礎(chǔ)”會(huì)員價(jià)格的圖書號(hào)、圖書名稱和圖書會(huì)員價(jià)格,查詢后的結(jié)果集要求按會(huì)員價(jià)格降序排列。SELECTB2.B_ID,B2.B_Name,B2.B_SalePriceFROMBookInfoB1INNERJOINBookInfoB2ONB1.B_Name=MySQL編程基礎(chǔ)'ANDB1.B_SalePrice<B2.B_SalePriceORDERBYB2.B_SalePriceDESC;4.4.4交叉連接使用交叉連接查詢,如果不帶WHERE子句時(shí),則返回的結(jié)果是被連接的兩個(gè)表的笛卡爾積;如果交叉連接帶有WHERE子句時(shí),則返回結(jié)果為連接兩個(gè)表的笛卡爾積減去WHERE子句所限定而省略的行數(shù)。交叉連接使用CROSSJOIN關(guān)鍵字。4.4.4交叉連接【例4-26】在Orders表和OrderDetails表中使用交叉連接。SELECTO.O_ID,OD.OD_IDFROMOrdersOCROSSJOINOrderDetailsOD;4.5子查詢4.5.1返回單行的子查詢4.5.2返回多行的子查詢4.5.3子查詢與數(shù)據(jù)更新4.5子查詢子查詢是指在一個(gè)外層查詢中包含另一個(gè)內(nèi)層查詢,即在一個(gè)SELECT語句中的WHERE子句中,包含有另一個(gè)SELECT語句。外層的SELECT語句稱為主查詢,WHERE子句中包含的SELECT語句稱為子查詢。一般將子查詢的查詢結(jié)果作為主查詢的查詢條件。4.5.1返回單行的子查詢返回單行的子查詢是指子查詢的查詢結(jié)果只返回一個(gè)值,并將這個(gè)返回值作為父查詢的條件,在父查詢中進(jìn)一步查詢。在WHERE子句中可以使用比較運(yùn)算符來連接子查詢。4.5.1返回單行的子查詢【例4-27】查詢訂購了“MySQL編程基礎(chǔ)”圖書的訂單詳情號(hào)、訂購數(shù)量及圖書總價(jià)。SELECTOD_ID,OD_Number,OD_PriceFROMOrderDetailsWHEREB_ID=(SELECTB_IDFROMBookInfoWHEREB_Name=MySQL編程基礎(chǔ)');4.5.2返回多行的子查詢返回多行的子查詢就是子查詢的查詢結(jié)果中包含多行數(shù)據(jù)。返回多行的子查詢經(jīng)常與IN、EXIST、ALL、ANY和SOME關(guān)鍵字一起使用。4.5.2返回多行的子查詢1.使用IN關(guān)鍵字其語法格式為:WHERE<表達(dá)式>[NOT]IN(<子查詢>)4.5.2返回多行的子查詢【例4-28】查詢訂單總價(jià)小于60元的會(huì)員信息。SELECTU_ID,U_Name,U_PhoneFROMUsersWHEREU_IDIN(SELECTU_IDFROMOrdersWHEREO_TotalPrice<60);4.5.2返回多行的子查詢2.使用EXISTS關(guān)鍵字其語法格式為:WHERE[NOT]EXISTS(<子查詢>)使用EXISTS關(guān)鍵字的子查詢并不返回任何數(shù)據(jù),只返回邏輯真值和邏輯假值。在使用EXISTS時(shí),子查詢通常將“*”作為輸出列表。4.5.2返回多行的子查詢【例4-29】查詢訂購了圖書的會(huì)員信息。SELECTU.U_ID,U.U_Name,U.U_SexFROMUsersUWHEREEXISTS(SELECT*FROMOrdersOWHEREO.U_ID=U.U_ID);4.5.2返回多行的子查詢3.使用ALL、ANY和SOME關(guān)鍵字其語法格式為:WHERE<表達(dá)式><比較運(yùn)算符>[ALL|ANY|SOME](<子查詢>)ANY關(guān)鍵字表示任何一個(gè)(其中之一),只要與子查詢中一個(gè)值相符合即可;ALL關(guān)鍵字表示所有(全部),要求與子查詢中的所有值相符合;SOME同ANY是同義詞。4.5.2返回多行的子查詢【例4-30】查詢訂購了圖書編號(hào)大于3的訂單編號(hào)及收貨人的姓名、地址、郵編。SELECTO_ID,O_UserName,O_Address,O_PostCodeFROMOrdersWHEREO_ID>ANY(SELECTO_IDFROMOrderDetailsWHEREB_ID>3);4.5.3子查詢與數(shù)據(jù)更新1.子查詢與INSERT語句其語法格式為:INSERTINTO<表名>[<列名>]<子查詢>要插入數(shù)據(jù)的表必須已經(jīng)存在;要插入數(shù)據(jù)的表結(jié)構(gòu)必須和子查詢語句的結(jié)果集結(jié)構(gòu)相兼容。4.5.3子查詢與數(shù)據(jù)更新【例4-31】查詢每一類圖書會(huì)員價(jià)格的平均價(jià)格,并將結(jié)果保存到新表AvgPrice中。(1)創(chuàng)建新表AvgPrice。CREATETABLEAvgPrice(B_IDint,Avg_Pricefloat);(2)將查詢結(jié)果插入新表AvgPrice中。INSERTINTOAvgPriceSELECTBT_ID,AVG(B_SalePrice)FROMBookInfoGROUPBYBT_ID;(3)查看AvgPrice表中記錄。SELECT*FROMAvgPrice;4.5.3子查詢與數(shù)據(jù)更新2.子查詢與UPDATE語句【例4-32】將BookInfo表中“MySQL”類別圖書的會(huì)員價(jià)格修改為市場(chǎng)價(jià)格的70%。UPDATEBookInfoSETB_SalePrice=B_MarketPrice*0.7WHERE'MySQL'=(SELECTBT_NameFROMBookTypeWHEREBookInfo.BT_ID=BookType.BT_ID);4.5.3子查詢與數(shù)據(jù)更新3.子查詢與DELETE語句【例4-33】刪除BookInfo表中“.NET”類別圖書基本信息。DELETEFROMBookInfoWHERE‘.NET'=(SELECTBT_NameFROMBookTypeWHEREBookInfo.BT_ID=BookType.BT_ID);4.6聯(lián)合查詢聯(lián)合查詢是指合并兩個(gè)或多個(gè)查詢語句的結(jié)果集。其語法格式為:SELECT語句1UNION[ALL]SELECT語句2ALL選項(xiàng)表示保留結(jié)果集中的重復(fù)記錄,默認(rèn)時(shí)系統(tǒng)自動(dòng)刪除重復(fù)記錄。4.6聯(lián)合查詢【例4-34】查詢會(huì)員表中會(huì)員聯(lián)系方式及訂單表中的會(huì)員聯(lián)系方式。SELECTU_Name,U_PhoneFROMUsersUNIONALLSELECTO_UserName,O_PhoneFROMOrders;4.7案例:網(wǎng)上書店系統(tǒng)綜合查詢【例4-35】查詢會(huì)員表中會(huì)員編號(hào)、會(huì)員名稱及電話號(hào)碼,要求列名以漢字標(biāo)題顯示。SELECTU_ID會(huì)員編號(hào),U_Name會(huì)員名稱,U_Phone電話號(hào)碼FROMUsers;4.7案例:網(wǎng)上書店系統(tǒng)綜合查詢【例4-36】查詢價(jià)格最高的圖書信息。SELECTB_ID,B_Name,B_MarketPriceFROMBookInfoORDERBYB_MarketPriceDESCLIMIT1;4.7案例:網(wǎng)上書店系統(tǒng)綜合查詢【例4-37】統(tǒng)計(jì)每本圖書的銷量信息。SELECTB_ID,SUM(OD_Number)AS銷量FROMOrderDetailsGROUPBYB_IDORDERBYB_ID;4.7案例:網(wǎng)上書店系統(tǒng)綜合查詢【例4-38】查詢銷量為0的圖書信息。SELECTB_ID,B_NameFROMBookInfoBIWHERENOTEXISTS(SELECT*FROMOrderDetailsODWHEREOD.B_ID=BI.B_ID);4.7案例:網(wǎng)上書店系統(tǒng)綜合查詢【例4-39】查詢linli所購圖書的信息。SELECTBI.B_ID,BI.B_NameFROMBookInfoBIINNERJOINOrderDetailsODONBI.B_ID=OD.B_IDWHEREOD.O_IDIN(SELECTO.O_IDFROMOrdersOINNERJOINUsersUONO.U_ID=U.U_IDWHEREU.U_Name=’linli’);本章總結(jié)本章主要介紹了MySQL中T-SQL語言的各種查詢功能和用法。使用SQL查詢語句可以完成大部分的數(shù)據(jù)查詢操作,包括基本的數(shù)據(jù)查詢、條件查詢、分組查詢、連接查詢、子查詢、集合查詢等,為學(xué)習(xí)數(shù)據(jù)庫編程和數(shù)據(jù)庫操作打下基礎(chǔ)。實(shí)踐與練習(xí)一、選擇題1.在SELECT子句中,關(guān)鍵字________用于消除重復(fù)項(xiàng)。A.AS B.DISTINCT C.LIMIT D.LIKE2.要使用模糊查詢來從數(shù)據(jù)庫中查找與某一數(shù)據(jù)相關(guān)的信息,可以使用關(guān)鍵字________。A.AND B.OR C.ALL D.LIKE3.在SELECT語句中,分組時(shí)使用________子句。A.ORDERBY B.GROUPBY C.FROM D.WHERE實(shí)踐與練習(xí)4.在SELECT語句中,下列________子句用于對(duì)分組統(tǒng)計(jì)進(jìn)一步設(shè)置條件A.ORDERBY B.GROUPBY C.HAVING D.WHERE5.在WHERE子句中,如果出現(xiàn)了“ageBETWEEN30AND40”,這個(gè)表達(dá)式等同于________。

A.age>=30ANDage<=40 B.age>=30ORage<=40 C.age>30ANDage<40 D.age>30ORage<406.在WHERE子句的條件表達(dá)式中,可以匹配0個(gè)到多個(gè)字符的通配符是________。A.* B.% C.- D.?實(shí)踐與練習(xí)二、填空題(1)聚合函數(shù)中求數(shù)據(jù)總和的是。(2)查詢會(huì)員信息時(shí),結(jié)果按姓名(Name)降序排列,可使用子句。(3)查找數(shù)據(jù)表中的記錄使用關(guān)鍵

溫馨提示

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

評(píng)論

0/150

提交評(píng)論