MySQL學習15:子查詢(一)

來源:互聯網
上載者:User

標籤:

       一資料準備       (1)建立資料庫       CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET gbk;
       (2)建立資料表

       CREATE TABLE IF NOT EXISTS tdb_goods(

         goods_id    SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

         goods_name  VARCHAR(150) NOT NULL,

         goods_cate  VARCHAR(40)  NOT NULL,

         brand_name  VARCHAR(40)  NOT NULL,

         goods_price DECIMAL(15,3) UNSIGNED NOT NULL DEFAULT 0,

         is_show     BOOLEAN NOT NULL DEFAULT 1,

         is_saleoff  BOOLEAN NOT NULL DEFAULT 0

       );


       (3)查看資料表結構

       SHOW COLUMNS FROM tdb_goods;


       (4)寫入記錄

      設定MySQL資料庫用戶端顯示的中文字元碼格式:

      SET NAMES gbk;

      插入記錄:

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘R510VC 15.6

英寸筆記本‘,‘筆記本‘,‘華碩‘,‘3399‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘Y400N 14.0

英寸膝上型電腦‘,‘筆記本‘,‘聯想‘,‘4899‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘G150TH 15.6

英寸遊戲本‘,‘遊戲本‘,‘雷神‘,‘8499‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘X550CC 15.6

英寸筆記本‘,‘筆記本‘,‘華碩‘,‘2799‘,DEFAULT,DEFAULT);

 

INSERTtdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘X240(20ALA0

EYCD) 12.5英寸超極本‘,‘超級本‘,‘聯想‘,‘4999‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘U330P 13.3

英寸超極本‘,‘超級本‘,‘聯想‘,‘4299‘,DEFAULT,DEFAULT);


INSERTtdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘SVP13226SC

B 13.3英寸觸控超極本‘,‘超級本‘,‘索尼‘,‘7999‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘iPad mini 

MD531CH/A 7.9英寸平板電腦‘,‘平板電腦‘,‘蘋果‘,‘1998‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘iPad Air 

MD788CH/A 9.7英寸平板電腦 (16G WiFi版)‘,‘平板電腦‘,‘蘋果‘,‘3388‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘ iPad mini 

ME279CH/A 配備 Retina 顯示屏 7.9英寸平板電腦(16G WiFi版)‘,‘平板電腦‘,‘蘋果‘,‘2788‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘IdeaCentre 

C340 20英寸一體電腦 ‘,‘台式機‘,‘聯想‘,‘3499‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘Vostro 3800-

R1206 台式電腦‘,‘台式機‘,‘戴爾‘,‘2899‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘iMac 

ME086CH/A 21.5英寸一體電腦‘,‘台式機‘,‘蘋果‘,‘9188‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods(goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff)VALUES(‘AT7-7414LP

 台式電腦 (i5-3450四核 4G 500G 2G獨顯 DVD 鍵鼠 Linux )‘,‘台式機‘,‘宏碁‘,‘3699‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘Z220SFF 

F4F06PA工作站‘,‘伺服器/工作站‘,‘惠普‘,‘4288‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘PowerEdge 

T110 II伺服器‘,‘伺服器/工作站‘,‘戴爾‘,‘5388‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘Mac Pro 

MD878CH/A 專業級台式電腦‘,‘伺服器/工作站‘,‘蘋果‘,‘28888‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘ HMZ-T3W 

頭戴顯示裝置‘,‘筆記本配件‘,‘索尼‘,‘6999‘,DEFAULT,DEFAULT);


INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘商務雙肩背

包‘,‘筆記本配件‘,‘索尼‘,‘99‘,DEFAULT,DEFAULT);



INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘X3250 M4機

架式伺服器 2583i14‘,‘伺服器/工作站‘,‘IBM‘,‘6888‘,DEFAULT,DEFAULT);

 

INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘玄龍精英版 

筆記本散熱器‘,‘筆記本配件‘,‘九州風神‘,‘134‘,DEFAULT,DEFAULT);



INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(‘商務雙肩背

包‘,‘筆記本配件‘,‘索尼‘,‘99‘,DEFAULT,DEFAULT);

       SELECT * FROM tdb_goods\G;


       二子查詢       (1)子查詢相關概念       1子查詢

       子查詢(Subquery)是指出現在其他SQL語句內的(也就是另一個查詢語句中的)SELECT子句。  

       例句:

       SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

       其中,SELECT * FROM t1,稱為Outer Query(外查詢或者Outer Statement),SELECT column1 FROM t2,稱

為Sub Query(子查詢)。

       2子查詢組成

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

       子查詢可以包含多個關鍵字或條件,如DISTINCT、GROUP BY、ORDER BY、LIMIT和相關函數等。

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

       所以,我們說子查詢是嵌套在外查詢內部。而事實上它有可能在子查詢內部再嵌套子查詢,子查詢必須出現在圓

括弧之間。

       3子查詢返回值

       子查詢可以返回標量、一行、一列或子查詢。

       (2)三類子查詢       1由比較子引發的子查詢

       比較子包括:=、>、<、>=、<=、<>、!=、<=>。使用比較子引發的子查詢的文法結構為;operand

 comparsion_operator subquery。

        例子:

        首先設定MySQL資料庫用戶端資料顯示的編碼格式:

        SET NAMES gbk;

        1)查詢所有商品價格的平均值:

        SELECT AVG(goods_price) FROM tdb_goods;

        2)查詢所有商品價格的平均值,並且結果保留兩位小數

        SELECT ROUND(AVG(goods_price),2) FROM tdb_goods;


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

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= 5324.32;


        4)通過子查詢查詢所有商品價格中大於平均價格的商品

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= (SELECT

 ROUND(AVG(goods_price),2) FROM tdb_goods);


        由此看出3)和4)的查詢結果是一致的,這說明子查詢起作用了。

        5)查詢商品類型是超極本的商品價格

        SELECT goods_price FROM tdb_goods WHERE goods_cate = ‘超級本‘;


        6)查詢商品類型是超級本的商品

        SELECT * FROM tdb_goods WHERE goods_cate = ‘超級本‘\G;


        2使用ANY、SOME或ALL修飾的比較子的子查詢

        當子查詢返回多個結果時可以使用ANY、SOME或ALL修飾的比較子,其中ANY和SOME是等價的,也就

是只需要符合其中一個即可,而ALL表示符合全部返回結果。其中文法結構為:

        operand comparsion_operator ANY (subquery);

        operand comparsion_operator SOME (subquery);

        operand comparsion_operator ALL (subquery);

        比較子使用ANY、SOME或ALL關鍵字的不同結果:


        1)查詢所有商品中價格不小於超級本價格(最小价格)的商品

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= ANY (SELECT

 goods_price FROM tdb_goods WHERE goods_cate = ‘超級本‘);


        2)查詢所有商品中價格不小於超級本價格(最大價格)的商品

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= ALL (SELECT

 goods_price FROM tdb_goods WHERE goods_cate = ‘超級本‘);


        3)查詢所有商品中價格等於超級本價格(任意一個)的商品

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price = ANY (SELECT

 goods_price FROM tdb_goods WHERE goods_cate = ‘超級本‘);

 

MySQL學習15:子查詢(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.