實(shí)驗(yàn)訓(xùn)練2數(shù)據(jù)查詢(xún)操作_第1頁(yè)
實(shí)驗(yàn)訓(xùn)練2數(shù)據(jù)查詢(xún)操作_第2頁(yè)
實(shí)驗(yàn)訓(xùn)練2數(shù)據(jù)查詢(xún)操作_第3頁(yè)
實(shí)驗(yàn)訓(xùn)練2數(shù)據(jù)查詢(xún)操作_第4頁(yè)
實(shí)驗(yàn)訓(xùn)練2數(shù)據(jù)查詢(xún)操作_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)訓(xùn)練2:數(shù)據(jù)查詢(xún)操作實(shí)驗(yàn)?zāi)康模夯趯?shí)驗(yàn)1創(chuàng)建的汽車(chē)用品網(wǎng)上商城數(shù)據(jù)庫(kù)Shopping,理解MySQL運(yùn)算符、函數(shù)、謂詞,練習(xí)Select語(yǔ)句的操作方法。實(shí)驗(yàn)內(nèi)容:1.單表查詢(xún)【實(shí)驗(yàn)2.1】字段查詢(xún)(1)查詢(xún)商品名稱(chēng)為“擋風(fēng)玻璃”的商品信息。分析:商品信息存在于商品表,而且商品表中包含商品名稱(chēng)此被查詢(xún)信息,因此這是只需要涉及一個(gè)表就可以完成簡(jiǎn)單單表查詢(xún)。(2)查詢(xún)ID為1的訂單。分析:所有的訂單信息存在于訂單表中,而且訂單用戶ID也存在于此表中,因此這是只需要查詢(xún)訂單表就可以完成的查詢(xún)?!緦?shí)驗(yàn)2.2】多條件查詢(xún)查詢(xún)所有促銷(xiāo)的價(jià)格小于1000的商品信息。分析:此查詢(xún)過(guò)程包含兩個(gè)條件,第一個(gè)是是否促銷(xiāo),第二個(gè)是價(jià)格,在商品表中均有此信息,因此這是一個(gè)多重條件的查詢(xún)。【實(shí)驗(yàn)2.3】DISTINCT(1)查詢(xún)所有對(duì)商品ID為1的商品發(fā)表過(guò)評(píng)論的用戶ID。分析:條件和查詢(xún)對(duì)象存在于評(píng)論表中,對(duì)此商品發(fā)表過(guò)評(píng)論的用戶不止一個(gè),而且一個(gè)用戶可以對(duì)此商品發(fā)表多個(gè)評(píng)論,因此,結(jié)果需要進(jìn)行去重,這里使用DISTINCT實(shí)現(xiàn)。(2)查詢(xún)此汽車(chē)用品網(wǎng)上商城會(huì)員的創(chuàng)建時(shí)間段,1年為一段。分析:通過(guò)用戶表可以完成查詢(xún),每年可能包含多個(gè)會(huì)員,如果把此表中的創(chuàng)建年份都列出來(lái)會(huì)有重復(fù),因此使用DISTINCT去重?!緦?shí)驗(yàn)2.4】ORDERBY(1)查詢(xún)類(lèi)別ID為1的所有商品,結(jié)果按照商品ID降序排列。分析:從商品表中可以查詢(xún)出所有類(lèi)別ID為1的商品信息,結(jié)果按照商品ID的降序排列,因此使用ORDERBY語(yǔ)句,降序使用DESC關(guān)鍵字。(2)查詢(xún)今年新增的所有會(huì)員,結(jié)果按照用戶名字排序。分析:在用戶表中可以完成查詢(xún),創(chuàng)建日期條件設(shè)置為今年,此處使用語(yǔ)句ORDERBY。【實(shí)驗(yàn)2.5】GROUPBY(1)查詢(xún)每個(gè)用戶的消費(fèi)總金額(所有訂單)。分析:訂單表中包含每個(gè)訂單的訂單總價(jià)和用戶ID。現(xiàn)在需要將每個(gè)用戶的所有訂單提取出來(lái)分為一類(lèi),通過(guò)SUM()函數(shù)取得總金額。此處使用GROUPBY語(yǔ)句和SUM()函數(shù)。(2)查詢(xún)類(lèi)別價(jià)格一樣的各種商品數(shù)量總和。分析:此查詢(xún)中需要對(duì)商品進(jìn)行分類(lèi),分類(lèi)依據(jù)是同類(lèi)別和價(jià)格,這是“多列分組”,較上一個(gè)例子更為復(fù)雜。2.聚合函數(shù)查詢(xún)【實(shí)驗(yàn)2.6】COUNT()(1)查詢(xún)類(lèi)別的數(shù)量。分析:此查詢(xún)利用COUNT()函數(shù),返回指定列中值的數(shù)目,此處指定列是類(lèi)別表中的ID(或者名稱(chēng)均可)。(2)查詢(xún)汽車(chē)用品網(wǎng)上商城的每天的接單數(shù)。分析:訂單相關(guān),此處使用聚合函數(shù)COUNT()和Groupby子句。【實(shí)驗(yàn)2.7】SUM()查詢(xún)?cè)撋坛敲刻斓匿N(xiāo)售額。分析:在訂單表中,有一列是訂單總價(jià),將所有訂單的訂單總價(jià)求和,按照下單日期分組,使用SUM()函數(shù)和Groupby子句?!緦?shí)驗(yàn)2.8】AVG()(1)查詢(xún)所有訂單的平均銷(xiāo)售金額。分析:同上一個(gè)相同,還是在訂單表中,依然取用訂單總價(jià)列,使用AVG()函數(shù),對(duì)指定列的值求平均數(shù)。【實(shí)驗(yàn)2.9】MAX()(1)查詢(xún)所有商品中的數(shù)量最大者。分析:商品的數(shù)量信息存在于商品表中,此處查詢(xún)應(yīng)該去商品表,在商品數(shù)量指定列中求值最大者。使用MAX()函數(shù)。(2)查詢(xún)所有用戶按字母排序中名字最靠前者。分析:MAX()或者M(jìn)IN()也可以用在文本列,以獲得按字母順序排列的最高或者最低者。同上一個(gè)實(shí)驗(yàn)一樣,使用MAX()函數(shù)?!緦?shí)驗(yàn)2.10】MIN()(1)查詢(xún)所有商品中價(jià)格最低者。分析:同MAX()用法相同,找到表和列,使用MIN()函數(shù)。3.連接查詢(xún)【實(shí)驗(yàn)2.11】?jī)?nèi)連接查詢(xún)(1)查詢(xún)所有訂單的發(fā)出者名字。分析:此處訂單的信息需要從訂單表中得到,訂單表中主鍵是訂單號(hào),外鍵是用戶ID,同時(shí)查詢(xún)需要得到訂單發(fā)出者的姓名,也就是用戶名,因此需要將訂單表和用戶表通過(guò)用戶ID進(jìn)行連接。使用內(nèi)連接的(INNER)JOIN語(yǔ)句。(2)查詢(xún)每個(gè)用戶購(gòu)物車(chē)中的商品名稱(chēng)。分析:購(gòu)物車(chē)中的信息可以從購(gòu)物車(chē)表中得到,購(gòu)物車(chē)表中有用戶ID和商品ID兩項(xiàng),通過(guò)這兩項(xiàng)可以與商品表連接,從而可以獲得商品名稱(chēng)。與上一個(gè)實(shí)驗(yàn)相似,此查詢(xún)使用(INNER)JOIN語(yǔ)句?!緦?shí)驗(yàn)2.12】外連接查詢(xún)(1)查詢(xún)列出所有用戶ID,以及他們的評(píng)論,如果有的話。分析:此查詢(xún)首先需列出所有用戶ID,如果參與過(guò)評(píng)論的話,再列出相關(guān)的評(píng)論。此處使用外查詢(xún)中的LEFT(OUTER)JOIN語(yǔ)句,注意需將全部顯示的列名寫(xiě)在JOIN語(yǔ)句左邊。(2)查詢(xún)列出所有用戶ID,以及他們的評(píng)論,如果有的話。分析:依然是上一個(gè)實(shí)驗(yàn),還可以使用RIGHT(OUTER)JOIN語(yǔ)句,注意需將全部顯示的列名寫(xiě)在JOIN語(yǔ)句右邊?!緦?shí)驗(yàn)2.13】復(fù)合條件連接查詢(xún)(1)查詢(xún)用戶ID為1的客戶的訂單信息和客戶名。分析:復(fù)合條件連接查詢(xún)是在連接查詢(xún)的過(guò)程中,通過(guò)添加過(guò)濾條件,限制查詢(xún)的結(jié)果,使查詢(xún)的結(jié)果更加準(zhǔn)確。此查詢(xún)需在內(nèi)查詢(xún)的基礎(chǔ)上加上另一個(gè)條件,用戶iD為1,使用AND語(yǔ)句添加精確條件。(2)查詢(xún)每個(gè)用戶的購(gòu)物車(chē)中的商品價(jià)格,并且按照價(jià)格順序排列。分析:此查詢(xún)需要先使用內(nèi)連接對(duì)商品表和購(gòu)物車(chē)表進(jìn)行連接,得到商品的價(jià)格,在使用ORDERBY語(yǔ)句對(duì)價(jià)格進(jìn)行順序排列。4.嵌套查詢(xún)【實(shí)驗(yàn)2.14】IN(1)查詢(xún)訂購(gòu)商品ID為1的訂單ID,并根據(jù)訂單ID查詢(xún)發(fā)出此訂單的用戶ID。分析:此查詢(xún)需要使用IN關(guān)鍵字進(jìn)行子查詢(xún),子查詢(xún)是通過(guò)SELECT語(yǔ)句在訂單明細(xì)表中先確定此訂單ID,在通過(guò)SELECT在訂單表中查詢(xún)到用戶ID。(2)查詢(xún)訂購(gòu)商品ID為1的訂單ID,并根據(jù)訂單ID查詢(xún)未發(fā)出此訂單的用戶ID。分析:此查詢(xún)和前一個(gè)實(shí)驗(yàn)相似,只是需使用NOTIN語(yǔ)句?!緦?shí)驗(yàn)2.15】比較運(yùn)算符(1)查詢(xún)今年新增會(huì)員的訂單,并且列出所有訂單總價(jià)小于100的訂單ID。分析:此查詢(xún)需要使用嵌套,子查詢(xún)需先查詢(xún)用戶表得到今年創(chuàng)建的用戶信息,在將用戶ID匹配找打訂單信息,其中使用比較運(yùn)算符提供訂單總價(jià)小于100的條件。(2)查詢(xún)所有訂單商品數(shù)量總和小于100的商品ID,并將不在此商品所在類(lèi)別的其他類(lèi)別的ID列出來(lái)。分析:此查詢(xún)需要進(jìn)行嵌套查詢(xún),子查詢(xún)過(guò)程需要使用到SUM()函數(shù)和GROUPBY求出同種商品的所有被訂數(shù)量,使用比較運(yùn)算符得到數(shù)量總和小于100的商品ID,再使用比較運(yùn)算符“不等于”得到非此商品所在類(lèi)的類(lèi)別ID。【實(shí)驗(yàn)2.16】EXISTS(1)查詢(xún)表中是否存在用戶ID為100的用戶,如果存在,列出此用戶的信息。分析:EXISTS關(guān)鍵字后面的參數(shù)是一個(gè)任意的子查詢(xún),系統(tǒng)對(duì)于查詢(xún)進(jìn)行運(yùn)算以判斷它是否返回行,如果至少返回一行,那以EXISTS的結(jié)果為T(mén)RUE,此時(shí)外層查詢(xún)語(yǔ)句將進(jìn)行查詢(xún)。此查詢(xún)需要對(duì)用戶ID進(jìn)行EXIST操作。(2)查詢(xún)表中是否存在類(lèi)別ID為100的商品類(lèi)別,如果存在,列出此類(lèi)別中商品價(jià)格小于5的商品ID。分析:與上一個(gè)實(shí)驗(yàn)相似,此實(shí)驗(yàn)在外查詢(xún)過(guò)程添加了比較運(yùn)算符?!緦?shí)驗(yàn)2.17】ANY查詢(xún)所有商品表中價(jià)格比訂單表中商品ID對(duì)應(yīng)的價(jià)格大的商品ID。分析:ANY關(guān)鍵字在一個(gè)比較操作符的后面,表示若與子查詢(xún)返回的任何值比較為T(mén)RUE,則返回TRUE。此處使用ANY來(lái)引出內(nèi)查詢(xún)。【實(shí)驗(yàn)2.18】ALL查詢(xún)所有商品表中價(jià)格比訂單表中所有商品ID對(duì)應(yīng)的價(jià)格大的商品ID。分析:使用ALL時(shí)需要同時(shí)滿足所有內(nèi)層查詢(xún)的條件。ALL關(guān)鍵字在一個(gè)比較操作符的后面,表示與子查詢(xún)返回的所有值比較為T(mén)RUE,則返回TRUE。此處使用ALL來(lái)引出內(nèi)查詢(xún)?!緦?shí)驗(yàn)2.19】集合查詢(xún)(1)查詢(xún)所有價(jià)格小于5的商品,查詢(xún)類(lèi)別ID為1和2的所有商品,使用UNION連接查詢(xún)結(jié)果。分析:由前所述,UNION將多個(gè)SELECT語(yǔ)句的結(jié)果組合成一個(gè)結(jié)果集合,第1條SELECT語(yǔ)句查詢(xún)價(jià)格小于5的商品,第2條SELECT語(yǔ)句查詢(xún)類(lèi)別ID為1和2的商品,使用UNION將兩條SELECT語(yǔ)句分隔開(kāi),執(zhí)行完畢之后把輸出結(jié)果組合為單個(gè)的結(jié)果集,并刪除重復(fù)的記錄。(2)查詢(xún)所有價(jià)格小于5的商品,查詢(xún)類(lèi)別ID為1和2的所有商品,使用UNIONALL連接查詢(xún)結(jié)果。分析:使用UNIONALL包含重復(fù)的行,在前面的例子中,分開(kāi)查詢(xún)時(shí),兩個(gè)返回結(jié)果中有相同的記錄,使用UNION會(huì)自動(dòng)去除重復(fù)行。UNIONALL從查詢(xún)結(jié)果集中自動(dòng)要返回所有匹配行,而不進(jìn)行刪除。實(shí)驗(yàn)要求:1.所有操作必須通過(guò)MySQLWorkbench完成;2.每執(zhí)行一種查詢(xún)語(yǔ)句后,均要求通過(guò)MySQLWorkbench查看執(zhí)行結(jié)果;3.將操作過(guò)程以屏幕抓圖的方式拷貝,形成實(shí)驗(yàn)文檔。實(shí)驗(yàn)過(guò)程:1.單表查詢(xún)【實(shí)驗(yàn)2.1】字段查詢(xún)查詢(xún)商品名稱(chēng)為“擋風(fēng)玻璃”的商品信息。在查詢(xún)窗口中,輸入下面的命令。SELECT*FROMshopping.autopartswhereApname="擋風(fēng)玻璃";如下圖。執(zhí)行結(jié)果如下。查詢(xún)訂單表(Order)中客戶編號(hào)(Client_cid)為1的訂單,輸入命令:SELECT*FROMshopping.OrderwhereClient_cid=1;執(zhí)行得到如下結(jié)果;【實(shí)驗(yàn)2.2】多條件查詢(xún)查詢(xún)所有促銷(xiāo)的價(jià)格小于1000的商品信息。分析:此查詢(xún)過(guò)程包含兩個(gè)條件,第一個(gè)是是否促銷(xiāo),第二個(gè)是價(jià)格,在商品表中均有此信息,因此這是一個(gè)多重條件的查詢(xún)。命令如下:SELECT*FROMshopping.Autopartswhereis_sale=1andPrice<1000;查詢(xún)結(jié)果如下圖?!緦?shí)驗(yàn)2.3】DISTINCT(1)查詢(xún)所有對(duì)商品ID為1的商品發(fā)表過(guò)評(píng)論的用戶ID。SELECT*FROMmentwhereAutoparts_apid=1;執(zhí)行結(jié)果如下。分析:條件和查詢(xún)對(duì)象存在于評(píng)論表中,對(duì)此商品發(fā)表過(guò)評(píng)論的用戶不止一個(gè),而且一個(gè)用戶可以對(duì)此商品發(fā)表多個(gè)評(píng)論,因此,結(jié)果需要進(jìn)行去重,這里使用DISTINCT實(shí)現(xiàn),命令如下。selectdistinctClient_cidfromcommentwhereAutoparts_apid=1;執(zhí)行如下;(2)查詢(xún)此汽車(chē)用品網(wǎng)上商城會(huì)員的創(chuàng)建時(shí)間段,1年為一段。分析:通過(guò)用戶表可以完成查詢(xún),每年可能包含多個(gè)會(huì)員,如果把此表中的創(chuàng)建年份都列出來(lái)會(huì)有重復(fù),因此使用DISTINCT去重。查詢(xún)2021年5月1日到2022年5月1日創(chuàng)建的會(huì)員,命令如下。SelectdistinctCreatetimefromclientwhereCreatetime>”2021-05-01”andCreatetime<”2022-05-01”;執(zhí)行結(jié)果如下?!緦?shí)驗(yàn)2.4】ORDERBY(1)查詢(xún)類(lèi)別ID為1的所有商品,結(jié)果按照商品ID降序排列。分析:從商品表中可以查詢(xún)出所有類(lèi)別ID為1的商品信息,結(jié)果按照商品ID的降序排列,因此使用ORDERBY語(yǔ)句,降序使用DESC關(guān)鍵字。命令如下。SELECT*FROMshopping.autopartswhereSecondClass_scid=1ORDERBYApiddesc;結(jié)果如下。(2)查詢(xún)今年新增的所有會(huì)員,結(jié)果按照用戶名字排序。分析:在用戶表中可以完成查詢(xún),創(chuàng)建日期條件設(shè)置為今年,此處使用語(yǔ)句ORDERBY,命令如下。SELECT*FROMshopping.clientwhere Createtime>"2021-12-31"ORDERBYCname;執(zhí)行結(jié)果?!緦?shí)驗(yàn)2.5】GROUPBY(1)查詢(xún)每個(gè)用戶的消費(fèi)總金額(所有訂單)。分析:訂單表中包含每個(gè)訂單的訂單總價(jià)和用戶ID?,F(xiàn)在需要將每個(gè)用戶的所有訂單提取出來(lái)分為一類(lèi),通過(guò)SUM()函數(shù)取得總金額。此處使用GROUPBY語(yǔ)句和SUM()函數(shù)。命令如下。SELECT*FROMshopping.orderGROUPBYClient_cid;執(zhí)行結(jié)果。(2)查詢(xún)類(lèi)別價(jià)格一樣的各種商品數(shù)量總和。分析:此查詢(xún)中需要對(duì)商品進(jìn)行分類(lèi),分類(lèi)依據(jù)是同類(lèi)別和價(jià)格,這是“多列分組”,較上一個(gè)例子更為復(fù)雜。計(jì)算表autoparts中“分類(lèi)編號(hào)”為1的商品現(xiàn)價(jià)總和,命令如下。selectsum(price)fromshopping.autopartswhereSecondClass_scid=1;計(jì)算結(jié)果如下。2.聚合函數(shù)查詢(xún)【實(shí)驗(yàn)2.6】COUNT()(1)查詢(xún)類(lèi)別的數(shù)量。分析:此查詢(xún)利用COUNT()函數(shù),返回指定列中值的數(shù)目,此處指定列是類(lèi)別表中的ID(或者名稱(chēng)均可)。統(tǒng)計(jì)表autoparts中,字段“Apid“有幾條記錄,命令如下。selectCOUNT(Apid)fromshopping.autoparts;執(zhí)行結(jié)果如下。(2)查詢(xún)汽車(chē)用品網(wǎng)上商城的每天的接單數(shù)。分析:訂單相關(guān),此處使用聚合函數(shù)COUNT()和Groupby子句。統(tǒng)計(jì)表“order”中每天的接單數(shù),命令如下。selectCOUNT(order_date)fromshopping.orderGroupbyorder_date;執(zhí)行結(jié)果如下。【實(shí)驗(yàn)2.7】SUM()查詢(xún)?cè)撋坛敲刻斓匿N(xiāo)售額。分析:在訂單表中,有一列是訂單總價(jià),將所有訂單的訂單總價(jià)求和,按照下單日期分組,使用SUM()函數(shù)和Groupby子句。統(tǒng)計(jì)表“order”中每天的訂單總價(jià),命令如下。selectsum(total_price)fromshopping.orderGroupbyorder_date;執(zhí)行結(jié)果如下?!緦?shí)驗(yàn)2.8】AVG()(1)查詢(xún)所有訂單的平均銷(xiāo)售金額。分析:同上一個(gè)相同,還是在訂單表中,依然取用訂單總價(jià)列,使用AVG()函數(shù),對(duì)指定列的值求平均數(shù)。計(jì)算訂單表“order”中訂單的平均價(jià)格,命令如下。selectavg(total_price)fromshopping.order;行動(dòng)結(jié)果?!緦?shí)驗(yàn)2.9】MAX()(1)查詢(xún)所有商品中的數(shù)量最大者。分析:商品的數(shù)量信息存在于汽車(chē)配件表中,此處查詢(xún)應(yīng)該去汽車(chē)配件表,在汽車(chē)配件表指定列中求值最大者。使用MAX()函數(shù)。查詢(xún)汽車(chē)配件表(autoparts)中實(shí)際庫(kù)存(Inventory)最大的商品,命令如下。selectmax(Inventory)fromshopping.autoparts;運(yùn)行結(jié)果如下。(2)查詢(xún)所有用戶按字母排序中名字最靠前者。分析:MAX()或者M(jìn)IN()也可以用在文本列,以獲得按字母順序排列的最高或者最低者。同上一個(gè)實(shí)驗(yàn)一樣,使用MAX()函數(shù)。找出會(huì)員表(client)中,會(huì)員名稱(chēng)(Cname)按字母順序排列的最靠前者,命令如下:selectmin(Cname)fromshopping.client;運(yùn)行結(jié)果如下;找出會(huì)員表(client)中,會(huì)員名稱(chēng)(Cname)按字母順序排列的最靠后者,命令如下:selectmax(Cname)fromshopping.client;運(yùn)行結(jié)果如下;【實(shí)驗(yàn)2.10】MIN()(1)查詢(xún)所有商品中價(jià)格最低者。分析:同MAX()用法相同,找到表和列,使用MIN()函數(shù)。找出汽車(chē)配件表(autoparts)中,現(xiàn)價(jià)(price)最低者,命令如下。selectmin(price)fromshopping.autoparts;運(yùn)行結(jié)果如下。3.連接查詢(xún)【實(shí)驗(yàn)2.11】?jī)?nèi)連接查詢(xún)(1)查詢(xún)所有訂單的發(fā)出者名字。分析:此處訂單的信息需要從訂單表中得到,訂單表中主鍵是訂單號(hào),外鍵是用戶ID,同時(shí)查詢(xún)需要得到訂單發(fā)出者的姓名,也就是用戶名,因此需要將訂單表和用戶表通過(guò)用戶ID進(jìn)行連接。使用內(nèi)連接的(INNER)JOIN語(yǔ)句。把訂單表中所用的訂單會(huì)員名稱(chēng)從會(huì)員表中顯示出來(lái),命令如下。selectshopping.client.Cnamefromshopping.clientjoinshopping.orderonshopping.client.Cid=shopping.order.Client_cid;執(zhí)行結(jié)果如下;(2)查詢(xún)每個(gè)用戶購(gòu)物車(chē)中的商品名稱(chēng)。分析:購(gòu)物車(chē)中的信息可以從購(gòu)物車(chē)表中得到,購(gòu)物車(chē)表中有用戶ID和商品ID兩項(xiàng),通過(guò)這兩項(xiàng)可以與商品表連接,從而可以獲得商品名稱(chēng)。與上一個(gè)實(shí)驗(yàn)相似,此查詢(xún)使用(INNER)JOIN語(yǔ)句。把“購(gòu)物車(chē)配件表”中的所有“汽車(chē)配件名稱(chēng)”都顯示出來(lái),命令如下。selectshopping.autoparts.Apnamefromshopping.autopartsjoinshopping.shoppingcartonshopping.autoparts.Apid=shopping.shoppingcart.Autoparts_apid;執(zhí)行結(jié)果如下?!緦?shí)驗(yàn)2.12】外連接查詢(xún)(1)查詢(xún)列出所有用戶ID,以及他們的評(píng)論,如果有的話。分析:此查詢(xún)首先需列出所有用戶ID,如果參與過(guò)評(píng)論的話,再列出相關(guān)的評(píng)論。此處使用外查詢(xún)中的LEFT(OUTER)JOIN語(yǔ)句,注意需將全部顯示的列名寫(xiě)在JOIN語(yǔ)句左邊。顯示表“client”中所有的用戶ID和他們?cè)诒怼癱omment”中的評(píng)論,命令如下。selectshopping.client.cid,ment.Commentsfromshopping.clientleftouterjoinmentonshopping.client.cid=shopping.Comment.Client_cid;執(zhí)行結(jié)果如下。(2)查詢(xún)列出所有用戶ID,以及他們的評(píng)論,如果有的話。分析:依然是上一個(gè)實(shí)驗(yàn),還可以使用RIGHT(OUTER)JOIN語(yǔ)句,注意需將全部顯示的列名寫(xiě)在JOIN語(yǔ)句右邊。命令如下:selectshopping.client.cid,ment.Commentsfromshopping.clientrightouterjoinmentonshopping.client.cid=shopping.Comment.Client_cid;執(zhí)行結(jié)果。通過(guò)觀察,兩者的運(yùn)行結(jié)果不一樣?!緦?shí)驗(yàn)2.13】復(fù)合條件連接查詢(xún)(1)查詢(xún)用戶ID為1的客戶的訂單信息和客戶名。分析:復(fù)合條件連接查詢(xún)是在連接查詢(xún)的過(guò)程中,通過(guò)添加過(guò)濾條件,限制查詢(xún)的結(jié)果,使查詢(xún)的結(jié)果更加準(zhǔn)確。此查詢(xún)需在內(nèi)查詢(xún)的基礎(chǔ)上加上另一個(gè)條件,用戶iD為1,使用where語(yǔ)句添加精確條件。查找“會(huì)員編號(hào)(英文cid)”為1的所有訂單信息,命令如下。select*fromshopping.orderjoinshopping.clientonclient.cid=order.Client_cidwhereshopping.client.cid=1;行動(dòng)結(jié)果。(2)查詢(xún)每個(gè)用戶的購(gòu)物車(chē)中的商品價(jià)格,并且按照價(jià)格順序排列。分析:此查詢(xún)需要先使用內(nèi)連接對(duì)商品表和購(gòu)物車(chē)表進(jìn)行連接,得到商品的價(jià)格,在使用ORDERBY語(yǔ)句對(duì)價(jià)格進(jìn)行順序排列。對(duì)每個(gè)用戶購(gòu)物車(chē)中的商品價(jià)格進(jìn)行排序,命令如下。select*fromshopping.orderjoinshopping.clientonshopping.client.cid=shopping.order.Client_cidORDERBYshopping.order.goods_price;執(zhí)行結(jié)果如下。4.嵌套查詢(xún)【實(shí)驗(yàn)2.14】IN(1)查詢(xún)訂購(gòu)商品ID為1的訂單ID,并根據(jù)訂單ID查詢(xún)發(fā)出此訂單的用戶ID。分析:此查詢(xún)需要使用IN關(guān)鍵字進(jìn)行子查詢(xún),子查詢(xún)是通過(guò)SELECT語(yǔ)句在訂單明細(xì)表中先確定此訂單ID,在通過(guò)SELECT在訂單表中查詢(xún)到用戶ID。顯示訂單中所有客戶在會(huì)員表(client)用戶的信息,命令如下。select*fromshopping.orderwhereshopping.order.Client_cidIN(selectshopping.Client.cidfromshopping.Client);執(zhí)行結(jié)果。(2)查詢(xún)訂購(gòu)商品ID為1的訂單ID,并根據(jù)訂單ID查詢(xún)未發(fā)出此訂單的用戶ID。分析:此查詢(xún)和前一個(gè)實(shí)驗(yàn)相似,只是需使用NOTIN語(yǔ)句。顯示訂單中所有客戶不在會(huì)員表(client)訂單的信息,命令如下。select*fromshopping.orderwhereshopping.order.Client_cidnotIN(selectshopping.Client.cidfromshopping.Client);執(zhí)行結(jié)果如下?!緦?shí)驗(yàn)2.15】比較運(yùn)算符(1)查詢(xún)今年新增會(huì)員的訂單,并且列出所有訂單總價(jià)小于100的訂單ID。分析:此查詢(xún)需要使用嵌套,子查詢(xún)需先查詢(xún)用戶表得到今年創(chuàng)建的用戶信息,在將用戶ID匹配找打訂單信息,其中使用比較運(yùn)算符提供訂單總價(jià)小于100的條件。找出訂單中所有貨品總價(jià)小于100的訂單,命令如下。select*fromshopping.orderwhereshopping.order.goods_price<100;執(zhí)行結(jié)果如下。(2)查詢(xún)所有訂單商品數(shù)量總和小于100的商品ID,并將不在此商品所在類(lèi)別的其他類(lèi)別的ID列出來(lái)。分析:此查詢(xún)需要進(jìn)行嵌套查詢(xún),子查詢(xún)過(guò)程需要使用到SUM()函數(shù)和GROUPBY求出同種商品的所有被訂數(shù)量,使用比較運(yùn)算符得到數(shù)量總和小于100的商品ID,再使用比較運(yùn)算符“不等于”得到非此商品所在類(lèi)的類(lèi)別ID。命令如下。selectsum(Inventory)fromshopping.autopartsgroupbyshopping.autoparts.SecondClass_scid;執(zhí)行結(jié)果?!緦?shí)驗(yàn)2.16】EXISTS(1)查詢(xún)表中是否存在用戶ID為100的用戶,如果存在,列出此用戶的信息。分析:EXISTS關(guān)鍵字后面的參數(shù)是一個(gè)任意的子查詢(xún),系統(tǒng)對(duì)于查詢(xún)進(jìn)行運(yùn)算以判斷它是否返回行,如果至少返回一行,那以EXISTS的結(jié)果為T(mén)RUE,此時(shí)外層查詢(xún)語(yǔ)句將進(jìn)行查詢(xún)。此查詢(xún)需要對(duì)用戶ID進(jìn)行EXIST操作。找出會(huì)員表中,會(huì)員編號(hào)為100的用戶,命令如下。select*fromshopping.clientwhereshopping.client.cid=100;運(yùn)行結(jié)果如下。(2)查詢(xún)表中是否存在類(lèi)別ID為100的商品類(lèi)別,如果存在,列出此類(lèi)別中商品價(jià)格小于5的商品ID。分析:與上一個(gè)實(shí)驗(yàn)相似,此實(shí)驗(yàn)在外查詢(xún)過(guò)程添加了比較運(yùn)算符。找出商品編號(hào)為100,并且價(jià)格小于5的商品,命令如下。select*fromshopping.Autopartswhereshopping.Autoparts.Apid=100andshopping.Autoparts.price<5;執(zhí)行結(jié)果?!緦?shí)驗(yàn)2.17】ANY查詢(xún)所有商品表中價(jià)格比訂單表中商品ID對(duì)應(yīng)的價(jià)格大的商品ID。分析:ANY關(guān)鍵字在一個(gè)比較操作符的后面,表示若與子查詢(xún)返回的任何值比較為T(mén)RUE,則返回TRUE。此處使用ANY來(lái)引出內(nèi)查詢(xún)。命令如下。select*fromshopping.Autopartswhereshopping.Autoparts.price>any(selectshopping.order.goods_pricefromshopping.order);【實(shí)驗(yàn)2.18】ALL查詢(xún)所有商品表中價(jià)格比訂單表中所有商品ID對(duì)應(yīng)的價(jià)格大的商品ID。分析:使用ALL時(shí)需要同時(shí)滿足所有內(nèi)層查詢(xún)的條件。ALL關(guān)鍵字在一個(gè)比較操作符的后面,表示與子查詢(xún)返回的所有值比

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論