子查询
按子查询出现的位置:
select后面:仅仅支持标量子查询
from后面:支持表子查询
where或having后面:支持标量子查询,列子查询,行子查询
按功能、结果集的行列数不同:
标量子查询(结果集只有一行一列)一行一列 max min avg count
列子查询(结果集只有一列多行) 一行多列
行子查询(结果集有一行多列)(较少) 一行多列
表子查询(结果集一般为多行多列) 多行多列(相当于一个表)
在mysql中的 update delete语句中不支持子查询 在Oracle中支持
insert 支持查询
/*
子查询主要使用在查询语句中
一般牵扯到两张表以上的操作,都需要通过表名调用列,可以为表名定义别名
*/
-- select 语句后面只支持标量子查询(一行一列)
SELECT s.num,s.sname,(SELECT phone FROM student s1 WHERE s1.num = s.num) FROM student s
-- from 后面只支持 表子查询(多行多列)
SELECT * FROM (SELECT * FROM student WHERE gender="男")t WHERE t.height>1.7
-- 就是把一个查询的结果当作一张表 被另一个查询语句当作数据源
SELECT * FROM(SELECT