一、子查询:
1、子查询概念:子查询也叫嵌套查询,是指将一个查询做为另一个查询的条件或一个查询语句中包含另一个查询语句。
2、子查询的分类:
1)简单子查询或标量子查询:指子查询返回的结果为单行单列;
2)列子查询:指返回的结果是一列,但有多行;
3)行子查询:指返回的结果是一行,但有多列;
4)表子查询:指返回的结果是多行多列,即是做为一张表
3、子查询的特点:
1)子查询必须放在一对小括号内;
2)子查询中不能出现ORDER BY子句,ORDER BY只能出现在父查询中;
3)子查询通常做WHERE的条件,也可做为一张虚拟表来参与多表查询;
4)子查询与连接查询的异同点:
A、子查询:适用于作为查询的WHERE条件,但子查询只能查询主表的字段
B、多表连接查询:适用于从多表中查看数据,可以查看连接表中的任意字段。
5)子查询可替代连接查询,但连接查询不一定能够替代连接查询;
二、简单子查询:
1、语法:SELECT...FROM 表1 WHERE 列1>(子查询)
2、常用的操作符:>、>=、<、<=、<> =
3、子查询的返回值可以是字符串、日期、数字等
3、例:
1)查询产品类别名称为“Excel”,所对应的产品名称及库存量
A:连接查询的方式:
USE MyServer
GO
SELECT PL_Name,PL_Amount FROM ProductList JOIN ProductSort
ON ProductList.P_Id=ProductSort.P_Id
WHERE ProductSort.P_SortName='Excel'
GO
B、子查询的方式:
USE MyServer
GO
SELECT PL_Name,PL_Amount FROM ProductList
WHERE P_Id=(SELECT P_Id FROM ProductSort WHERE P_SortName='Excel')
GO
2)查询入职日期大于“熊大”入职日期的人员名单
USE MyServer
GO
SELECT * FROM Employee
WHERE E_Date>(SELECT E_Date FROM Employee WHERE E_Name='熊大')
GO