天天看點

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

文章目錄

  • 1,子查詢的陳述
    • 1.1 子查詢出現的位置——where或having後面
    • 1.2子查詢出現的位置——select後面(僅支援标量子查詢)
    • 1.3子查詢出現的位置——from後面(支援表子查詢)
    • 1.4子查詢出現的位置——exinta後面

1,子查詢的陳述

概念: 出現在其他語句内部的select語句,稱為子查詢或内查詢

内部嵌套其他select語句的查詢,稱為外查詢或主查詢

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

分類:

  • 按子查詢出現的位置

​ 1;select後面(僅支援标量子查詢)

​ 2;from後面:

(支援表子查詢)

​ 3;where或having後面:★

(支援标量子查詢,列子查詢,行子查語)

​ 4;exinta後面

(支援相關子查詢,表子查詢)

  • 按結果集的行列數不同:

标量子查詢(結果集隻有一行一列)(單行子查詢)

列子查詢(結果集隻有一列多行)(多行子查詢)

行子查詢(結果集有多行多列)

表子查詢(結果集一般為多行多列)

1.1 子查詢出現的位置——where或having後面

支援标量子查詢,列子查詢,行子查語(隻要了解就好)

特點:

1:子查詢在小括号内

:2:子查詢一般放在條件的右側

3:标量子查詢,一般搭配着單行缲作符使用,>,<>=,<=,<>,=

列子查詢,一般措配着多行操作符使用TN、ANY/SOME、 ALL,

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

4:子查詢的執行優先于主查詢執行

——————————————————————

1:示範單行子查詢:建立一張員工表,并且查詢出比小王薪水高的員工工資和姓名

staff表

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

第一步先解決查找出小王薪水

SELECT salary FROM staff WHERE name=“小王”;

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

上述查詢語句就是單行子查詢其結果集隻有一行一列

第二步:在解決查詢出比小王薪水高的員工工資和姓名

SELECT name,salary FROM staff WHERE salary>(SELECT salary FROM staff WHERE name=“小王”);

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

2:示範多行子查詢:查詢staff表中,員工薪水比部門全部平均工資要高的姓名和薪水

部門表

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

第一步:查詢每個部門的平均薪水

SELECT avgsalary FROM ministry;

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

上述查詢語句就是多行子查詢其結果集就是多行單列

第二步:查詢staff表中,員工薪水比部門全部平均工資要高的姓名和薪水

SELECT salary,name FROM staff WHERE salary>ALL(SELECT avgsalary FROM ministry);

DQL語言(Data Query Language)——(7)子查詢1,子查詢的陳述

————————————————————————————

1.2子查詢出現的位置——select後面(僅支援标量子查詢)

1.3子查詢出現的位置——from後面(支援表子查詢)

1.4子查詢出現的位置——exinta後面