國(guó)開(北京開放大學(xué))23春《MySQL數(shù)據(jù)庫應(yīng)用》形考任務(wù)2【資料答案】

可做奧鵬全部院校在線離線作業(yè)畢業(yè)論文QQ:3230981406 微信:aopopenfd777

發(fā)布時(shí)間:2023/1/28 22:01:44來源:admin瀏覽: 0 次

實(shí)驗(yàn)訓(xùn)練2:數(shù)據(jù)查詢操作


實(shí)驗(yàn)?zāi)康模?/p>

基于實(shí)驗(yàn)1創(chuàng)建的汽車用品網(wǎng)上商城數(shù)據(jù)庫Shopping,理解MySQL運(yùn)算符、函數(shù)、謂詞,練習(xí)Select語句的操作方法。


實(shí)驗(yàn)內(nèi)容:

1.單表查詢


【實(shí)驗(yàn)2.1】字段查詢

(1)查詢商品名稱為“擋風(fēng)玻璃”的商品信息。

分析:商品信息存在于商品表,而且商品表中包含商品名稱此被查詢信息,因此這是只需要涉及一個(gè)表就可以完成簡(jiǎn)單單表查詢。

(2)查詢ID為1的訂單。

分析:所有的訂單信息存在于訂單表中,而且訂單用戶ID也存在于此表中,因此這是只需要查詢訂單表就可以完成的查詢。


【實(shí)驗(yàn)2.2】多條件查詢

查詢所有促銷的價(jià)格小于1000的商品信息。

分析:此查詢過程包含兩個(gè)條件,第一個(gè)是是否促銷,第二個(gè)是價(jià)格,在商品表中均有此信息,因此這是一個(gè)多重條件的查詢。


【實(shí)驗(yàn)2.3】DISTINCT

(1)查詢所有對(duì)商品ID為1的商品發(fā)表過評(píng)論的用戶ID。

分析:條件和查詢對(duì)象存在于評(píng)論表中,對(duì)此商品發(fā)表過評(píng)論的用戶不止一個(gè),而且一個(gè)用戶可以對(duì)此商品發(fā)表多個(gè)評(píng)論,因此,結(jié)果需要進(jìn)行去重,這里使用DISTINCT實(shí)現(xiàn)。

(2)查詢此汽車用品網(wǎng)上商城會(huì)員的創(chuàng)建時(shí)間段,1年為一段。

分析:通過用戶表可以完成查詢,每年可能包含多個(gè)會(huì)員,如果把此表中的創(chuàng)建年份都列出來會(huì)有重復(fù),因此使用DISTINCT去重。


【實(shí)驗(yàn)2.4】ORDER BY

(1)查詢類別ID為1的所有商品,結(jié)果按照商品ID降序排列。

分析:從商品表中可以查詢出所有類別ID為1的商品信息,結(jié)果按照商品ID的降序排列,因此使用ORDER BY語句,降序使用DESC關(guān)鍵字。

(2)查詢今年新增的所有會(huì)員,結(jié)果按照用戶名字排序。

分析:在用戶表中可以完成查詢,創(chuàng)建日期條件設(shè)置為今年,此處使用語句ORDER BY。


【實(shí)驗(yàn)2.5】GROUP BY

(1)查詢每個(gè)用戶的消費(fèi)總金額(所有訂單)。

分析:訂單表中包含每個(gè)訂單的訂單總價(jià)和用戶ID?,F(xiàn)在需要將每個(gè)用戶的所有訂單提取出來分為一類,通過SUM()函數(shù)取得總金額。此處使用GROUP BY語句和SUM()函數(shù)。

(2)查詢類別價(jià)格一樣的各種商品數(shù)量總和。

分析:此查詢中需要對(duì)商品進(jìn)行分類,分類依據(jù)是同類別和價(jià)格,這是“多列分組”,較上一個(gè)例子更為復(fù)雜。


2.聚合函數(shù)查詢


【實(shí)驗(yàn)2.6】COUNT()

(1)查詢類別的數(shù)量。

分析:此查詢利用COUNT()函數(shù),返回指定列中值的數(shù)目,此處指定列是類別表中的ID(或者名稱均可)。

(2)查詢汽車用品網(wǎng)上商城的每天的接單數(shù)。

分析:訂單相關(guān),此處使用聚合函數(shù)COUNT()和Group by 子句。


【實(shí)驗(yàn)2.7】 SUM()

查詢?cè)撋坛敲刻斓匿N售額。

分析:在訂單表中,有一列是訂單總價(jià),將所有訂單的訂單總價(jià)求和,按照下單日期分組,使用SUM()函數(shù)和Group by子句。


【實(shí)驗(yàn)2.8】AVG()

(1)查詢所有訂單的平均銷售金額。

分析:同上一個(gè)相同,還是在訂單表中,依然取用訂單總價(jià)列,使用AVG()函數(shù),對(duì)指定列的值求平均數(shù)。


【實(shí)驗(yàn)2.9】MAX()

(1)查詢所有商品中的數(shù)量最大者。

分析:商品的數(shù)量信息存在于商品表中,此處查詢應(yīng)該去商品表,在商品數(shù)量指定列中求值最大者。使用MAX()函數(shù)。

(2)查詢所有用戶按字母排序中名字最靠前者。

分析:MAX()或者M(jìn)IN()也可以用在文本列,以獲得按字母順序排列的最高或者最低者。同上一個(gè)實(shí)驗(yàn)一樣,使用MAX()函數(shù)。


【實(shí)驗(yàn)2.10】MIN()

(1)查詢所有商品中價(jià)格最低者。

分析:同MAX()用法相同,找到表和列,使用MIN()函數(shù)。


3.連接查詢


【實(shí)驗(yàn)2.11】?jī)?nèi)連接查詢

(1)查詢所有訂單的發(fā)出者名字。

分析:此處訂單的信息需要從訂單表中得到,訂單表中主鍵是訂單號(hào),外鍵是用戶ID,同時(shí)查詢需要得到訂單發(fā)出者的姓名,也就是用戶名,因此需要將訂單表和用戶表通過用戶ID進(jìn)行連接。使用內(nèi)連接的(INNER) JOIN語句。

(2)查詢每個(gè)用戶購(gòu)物車中的商品名稱。

分析:購(gòu)物車中的信息可以從購(gòu)物車表中得到,購(gòu)物車表中有用戶ID和商品ID兩項(xiàng),通過這兩項(xiàng)可以與商品表連接,從而可以獲得商品名稱。與上一個(gè)實(shí)驗(yàn)相似,此查詢使用(INNER) JOIN語句。


【實(shí)驗(yàn)2.12】外連接查詢

(1)查詢列出所有用戶ID,以及他們的評(píng)論,如果有的話。

分析:此查詢首先需列出所有用戶ID,如果參與過評(píng)論的話,再列出相關(guān)的評(píng)論。此處使用外查詢中的LEFT (OUTER) JOIN語句,注意需將全部顯示的列名寫在JOIN語句左邊。

(2)查詢列出所有用戶ID,以及他們的評(píng)論,如果有的話。

分析:依然是上一個(gè)實(shí)驗(yàn),還可以使用RIGHT (OUTER) JOIN語句,注意需將全部顯示的列名寫在JOIN語句右邊。


【實(shí)驗(yàn)2.13】復(fù)合條件連接查詢

(1)查詢用戶ID為1的客戶的訂單信息和客戶名。

分析:復(fù)合條件連接查詢是在連接查詢的過程中,通過添加過濾條件,限制查詢的結(jié)果,使查詢的結(jié)果更加準(zhǔn)確。此查詢需在內(nèi)查詢的基礎(chǔ)上加上另一個(gè)條件,用戶iD為1,使用AND語句添加精確條件。

(2)查詢每個(gè)用戶的購(gòu)物車中的商品價(jià)格,并且按照價(jià)格順序排列。

分析:此查詢需要先使用內(nèi)連接對(duì)商品表和購(gòu)物車表進(jìn)行連接,得到商品的價(jià)格,在使用ORDER BY語句對(duì)價(jià)格進(jìn)行順序排列。


4.嵌套查詢


【實(shí)驗(yàn)2.14】 IN

(1)查詢訂購(gòu)商品ID為1的訂單ID,并根據(jù)訂單ID查詢發(fā)出此訂單的用戶ID。

分析:此查詢需要使用IN關(guān)鍵字進(jìn)行子查詢,子查詢是通過SELECT語句在訂單明細(xì)表中先確定此訂單ID,在通過SELECT在訂單表中查詢到用戶ID。

(2)查詢訂購(gòu)商品ID為1的訂單ID,并根據(jù)訂單ID查詢未發(fā)出此訂單的用戶ID。

分析:此查詢和前一個(gè)實(shí)驗(yàn)相似,只是需使用NOT IN語句。


【實(shí)驗(yàn)2.15】比較運(yùn)算符

(1)查詢今年新增會(huì)員的訂單,并且列出所有訂單總價(jià)小于100的訂單ID。

分析:此查詢需要使用嵌套,子查詢需先查詢用戶表得到今年創(chuàng)建的用戶信息,在將用戶ID匹配找打訂單信息,其中使用比較運(yùn)算符提供訂單總價(jià)小于100的條件。

(2)查詢所有訂單商品數(shù)量總和小于100的商品ID,并將不在此商品所在類別的其他類別的ID列出來。

分析:此查詢需要進(jìn)行嵌套查詢,子查詢過程需要使用到SUM()函數(shù)和GROUP BY求出同種商品的所有被訂數(shù)量,使用比較運(yùn)算符得到數(shù)量總和小于100的商品ID,再使用比較運(yùn)算符“不等于”得到非此商品所在類的類別ID。


【實(shí)驗(yàn)2.16】EXISTS

(1)查詢表中是否存在用戶ID為100的用戶,如果存在,列出此用戶的信息。

分析:EXISTS關(guān)鍵字后面的參數(shù)是一個(gè)任意的子查詢,系統(tǒng)對(duì)于查詢進(jìn)行運(yùn)算以判斷它是否返回行,如果至少返回一行,那以EXISTS的結(jié)果為TRUE,此時(shí)外層查詢語句將進(jìn)行查詢。此查詢需要對(duì)用戶ID進(jìn)行EXIST操作。

(2)查詢表中是否存在類別ID為100的商品類別,如果存在,列出此類別中商品價(jià)格小于5的商品ID。

分析:與上一個(gè)實(shí)驗(yàn)相似,此實(shí)驗(yàn)在外查詢過程添加了比較運(yùn)算符。


【實(shí)驗(yàn)2.17】ANY

查詢所有商品表中價(jià)格比訂單表中商品ID對(duì)應(yīng)的價(jià)格大的商品ID。

分析:ANY關(guān)鍵字在一個(gè)比較操作符的后面,表示若與子查詢返回的任何值比較為TRUE,則返回TRUE。此處使用ANY來引出內(nèi)查詢。


【實(shí)驗(yàn)2.18】ALL

查詢所有商品表中價(jià)格比訂單表中所有商品ID對(duì)應(yīng)的價(jià)格大的商品ID。

分析:使用ALL時(shí)需要同時(shí)滿足所有內(nèi)層查詢的條件。ALL關(guān)鍵字在一個(gè)比較操作符的后面,表示與子查詢返回的所有值比較為TRUE,則返回TRUE。此處使用ALL來引出內(nèi)查詢。


【實(shí)驗(yàn)2.19】集合查詢

(1)查詢所有價(jià)格小于5的商品,查詢類別ID為1和2的所有商品,使用UNION連接查詢結(jié)果。

分析:由前所述,UNION將多個(gè)SELECT語句的結(jié)果組合成一個(gè)結(jié)果集合,第1條SELECT語句查詢價(jià)格小于5的商品,第2條SELECT語句查詢類別ID為1和2的商品,使用UNION將兩條SELECT語句分隔開,執(zhí)行完畢之后把輸出結(jié)果組合為單個(gè)的結(jié)果集,并刪除重復(fù)的記錄。

(2)查詢所有價(jià)格小于5的商品,查詢類別ID為1和2的所有商品,使用UNION ALL連接查詢結(jié)果。

分析:使用UNION ALL包含重復(fù)的行,在前面的例子中,分開查詢時(shí),兩個(gè)返回結(jié)果中有相同的記錄,使用UNION會(huì)自動(dòng)去除重復(fù)行。UNION ALL從查詢結(jié)果集中自動(dòng)要返回所有匹配行,而不進(jìn)行刪除。


實(shí)驗(yàn)要求:

1.所有操作必須通過MySQL Workbench完成;

2.每執(zhí)行一種查詢語句后,均要求通過MySQL Workbench查看執(zhí)行結(jié)果;

3.將操作過程以屏幕抓圖的方式拷貝,形成實(shí)驗(yàn)文檔。




奧鵬,國(guó)開,廣開,電大在線,各省平臺(tái),新疆一體化等平臺(tái)學(xué)習(xí)
詳情請(qǐng)咨詢QQ : 3230981406或微信:aopopenfd777

  • 上一篇:
  • 下一篇:
  • 作業(yè)咨詢 論文咨詢
    微信客服掃一掃

    回到頂部