文章目錄
- 1,子查詢的陳述
-
- 1.1 子查詢出現的位置——where或having後面
- 1.2子查詢出現的位置——select後面(僅支援标量子查詢)
- 1.3子查詢出現的位置——from後面(支援表子查詢)
- 1.4子查詢出現的位置——exinta後面
1,子查詢的陳述
概念: 出現在其他語句内部的select語句,稱為子查詢或内查詢
内部嵌套其他select語句的查詢,稱為外查詢或主查詢
分類:
- 按子查詢出現的位置
1;select後面(僅支援标量子查詢)
2;from後面:
(支援表子查詢)
3;where或having後面:★
(支援标量子查詢,列子查詢,行子查語)
4;exinta後面
(支援相關子查詢,表子查詢)
- 按結果集的行列數不同:
标量子查詢(結果集隻有一行一列)(單行子查詢)
列子查詢(結果集隻有一列多行)(多行子查詢)
行子查詢(結果集有多行多列)
表子查詢(結果集一般為多行多列)
1.1 子查詢出現的位置——where或having後面
支援标量子查詢,列子查詢,行子查語(隻要了解就好)
特點:
1:子查詢在小括号内
:2:子查詢一般放在條件的右側
3:标量子查詢,一般搭配着單行缲作符使用,>,<>=,<=,<>,=
列子查詢,一般措配着多行操作符使用TN、ANY/SOME、 ALL,
4:子查詢的執行優先于主查詢執行
——————————————————————
1:示範單行子查詢:建立一張員工表,并且查詢出比小王薪水高的員工工資和姓名
staff表
第一步先解決查找出小王薪水
SELECT salary FROM staff WHERE name=“小王”;
上述查詢語句就是單行子查詢其結果集隻有一行一列
第二步:在解決查詢出比小王薪水高的員工工資和姓名
SELECT name,salary FROM staff WHERE salary>(SELECT salary FROM staff WHERE name=“小王”);
2:示範多行子查詢:查詢staff表中,員工薪水比部門全部平均工資要高的姓名和薪水
部門表
第一步:查詢每個部門的平均薪水
SELECT avgsalary FROM ministry;
上述查詢語句就是多行子查詢其結果集就是多行單列
第二步:查詢staff表中,員工薪水比部門全部平均工資要高的姓名和薪水
SELECT salary,name FROM staff WHERE salary>ALL(SELECT avgsalary FROM ministry);
————————————————————————————