前端學習資料庫之子項目

來源:互聯網
上載者:User

標籤:data   upd   strong   stat   建立資料庫   包含   建立   資料表   title   

  查詢資料庫,當查詢條件比較複雜時,常常需要用到子查詢。子查詢(Subquery)是指出現在其他SQL語句內的SELECT子句。本文將詳細介紹子查詢

 

定義

  子查詢(Subquery)是指出現在其他SQL語句內的SELECT子句

SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);

  其中,SELECT * FROM t1,稱為外層查詢(Outer Query/Outer Statement),SELECT col2 FROM t2,稱為子查詢(SubQuery)

  在使用子查詢時,需要注意的是

  1、子查詢指嵌套在查詢內部,且必須始終出現在圓括弧內

  2、子查詢語句中可以包含多個關鍵字或條件,如DISTINCT、GROUP BY、ORDER BY、LIMIT、函數等

  3、子查詢的外層查詢可以是:SELECT、INSERT、UPDATE、SET或DO

  4、子查詢可以傳回值:標量、一行、一列或者子查詢

 

比較子

  使用比較符是其中一類子查詢

operand comparison_operator subquery

  比較子包括=、!=、<>、<=> 、>、<、>=、<=

資料準備

  下載資料檔案,建立資料庫,資料表,並存入相應記錄

  求所有電腦產品的平均價格,並且保留兩位小數,AVG、MAX、MIN、COUNT、SUM為彙總函式

  [注意]AVG()是一個用來求平均值的函數

  查詢所有價格大於平均價格的商品

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > 5391.30;

  通過子查詢來實現相同的需求

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > (SELECT ROUND(AVG(goods_price),2) FROM tdb_goods);

  查詢類型為“超記本”的商品價格

  查詢價格大於或等於"超級本"價格的商品

  系統提示錯誤,子查詢返回的多於一行,因為子查詢有3條結果,SELECT無法知道要大於子查詢中3條結果中的哪一個。所以,這時就需要用到接下來要介紹的修飾關鍵字

 

修飾關鍵字

  修飾關鍵字包括ANY、some、all三個,如果子查詢返回多個值時,可以使用它們

operand comparison_operator  ANY(子查詢)operand comparison_operator  SOME(子查詢)operand comparison_operator  ALL(子查詢)

情況處理

  1、運算子為>或>=,使用ANY關鍵字時,表示大於子查詢結果中的最小值

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >  ANY (SELECT goods_price FROM tdb_goods WHERE goods_cate = ‘超級本‘);

  由結果可知,返回的都大於4299的值,即最小值

  2、運算子為>或>=,使用ALL關鍵字時,表示大於子查詢結果中的最大值

  3、運算子為<或<=,使用ANY或SOME關鍵字時,表示小於子查詢結果中的最大值;使用ALL關鍵字時,表示小於子查詢結果中的最小值

  4、運算子為=,使用ANY或SOME關鍵字時,表示等於子查詢結果中的任意值;使用ALL關鍵字時,則返回空

 

[NOT]IN
operand comparison_operator [NOT] IN (subquery)

  第二種子查詢是由IN 或 NOT IN引發的子查詢,與比較子使用的方法基本相同 

其中,= ANY 運算子與 IN 等效,!= ALL或 <> ALL運算子與 NOT IN 等效

[NOT] EXISTS

  第三種子查詢是由EXISTS 或 NOT EXISTS引發的子查詢。如果子查詢返回任何行,EXISTS將返回TRUE;否則返回FALSE

 

儲存查詢結果

  我們可以把查詢結果統一儲存到一個新的資料表中,而不需要一條一條地錄入

  下面,先建立一個“商品分類”空表

   然後,查詢tdb_goods表的所有記錄,並且按"類別"分組

  將分組結果寫入到“商品分類”資料表中

INSERT [INTO] tbl_name [(col_name),...)] SELECT...;
-轉載

前端學習資料庫之子項目

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.