溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql數(shù)據(jù)庫中子查詢的示例分析

發(fā)布時間:2021-01-22 11:40:23 來源:億速云 閱讀:116 作者:小新 欄目:MySQL數(shù)據(jù)庫

這篇文章主要介紹mysql數(shù)據(jù)庫中子查詢的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

mysql子查詢是什么?

子查詢,又叫內(nèi)部查詢,相對于內(nèi)部查詢,包含內(nèi)部查詢的就稱為外部查詢。子查詢允許把一個查詢嵌套在另一個查詢當(dāng)中。

mysql數(shù)據(jù)庫子查詢語句的特點(diǎn):任何可使用表達(dá)式的地方,都可以使用子查詢,只要他返回的是單個值;子查詢按返回值的數(shù)量,子查詢對外部依賴性,比較運(yùn)算符的不同性進(jìn)行分類;這在分頁查詢sql語句中經(jīng)常用到。

一:子查詢的特點(diǎn):

  1. 子查詢可被嵌套在 select,insert,update,delete 等語句中

  2. 大多數(shù)情況下子查詢充當(dāng)中間結(jié)果集角色

  3. 子查詢可進(jìn)行嵌套,且根據(jù)內(nèi)存及表達(dá)式復(fù)雜程度不同,嵌套限制也不同

  4. 任何可使用表達(dá)式的地方,都可以使用子查詢,只要他返回的是單個值

二:子查詢的分類:

  1. 按返回值的數(shù)量可分為:標(biāo)量子查詢,多值子查詢

  2. 按子查詢對外部依賴性:獨(dú)立子查詢,相關(guān)子查詢

  3. 按比較運(yùn)算符的不同性:IN,EXISTS,ANY,SOME,ALL等多種形式

三:子查詢的使用:

  1. 首先創(chuàng)建兩個表(學(xué)生表和教師表)

    # 創(chuàng)建學(xué)生表
    mysql> create table tb_student(
        -> stu_ID long,
        -> class varchar(5),
        -> score int
        -> );
    Query OK, 0 rows affected (0.23 sec)
    
    # 創(chuàng)建教師表
    mysql> create table tb_teacher(
        -> tea_ID long,
        -> class varchar(5),
        -> age int
        -> );
    Query OK, 0 rows affected (0.49 sec)
  2. 將一些值插入到表中

    insert into tb_student values(1, "A", 20);
    
    insert into tb_student values(2, "A", 30);
    
    insert into tb_student values(3, "A", 70);
    
    insert into tb_student values(4, "B", 60);
    
    insert into tb_student values(5, "B", 70);
    
    insert into tb_student values(6, "B", 80);
    
    insert into tb_teacher values(1, "A", 25);
    
    insert into tb_teacher values(2, "B", 40);
  3. 準(zhǔn)備工作完畢,接下來進(jìn)行子查詢練習(xí)

  • 例一:各班教師ID及其班級平均分?jǐn)?shù)

    mysql> select tea_ID,
        -> (select avg(score) from tb_student as s where s.class = t.class group by class)
        -> as Avg from tb_teacher as t;
    +--------+---------+
    | tea_ID | Avg     |
    +--------+---------+
    | 1      | 40.0000 |
    | 2      | 70.0000 |
    +--------+---------+
    2 rows in set (0.00 sec)
  • 例二:各班級教師年齡及其班級及格人數(shù)(60為及格線)

    mysql> select age,
        -> (select count(*) from tb_student as s where s.class = t.class && s.score >= 60 group by class)
        -> as Count from tb_teacher as t order by Count desc;
    +------+-------+
    | age  | Count |
    +------+-------+
    |   40 |     3 |
    |   25 |     1 |
    +------+-------+
    2 rows in set (0.00 sec)

以上是“mysql數(shù)據(jù)庫中子查詢的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI