1、关于子查询
子查询:嵌套在其他查询中的查询,也称内部查询。
相关子查询:不能单独执行的;
非相关子查询:可以单独执行的;
子查询的位置:select、where、from后面都可以跟;
注意:from后面跟的是一个结果集合,必须给它一个别名才能正常使用;
返回多个结果的子查询:用in
2、子查询中运算符的使用
EXISTS:(用来测试子查询是否返回结果)
1)后面必须跟一个子查询(非相关子查询);
2)后面如果有结果集返回,为真;如果没有任何返回,为假。
3)相当于if条件判断,exists语句一般都直接写在where后面。
ALL:(用来测试子查询结果集的所有行是否满足制定的条件)
1)all运算符与子查询、比较运算符(如=、>或>=)一起使用;
2)如果子查询返回的所有值都满足比较运算,那么比较表达式为真,如果不是所有值都满足比较运算或子查询没有给外部语句返回行,则返回假;
ANY:(测试子查询的结果集中是否有一行或多行满足指定的条件)
1)ANY与ALL的工作方式相同,不同的是:在子查询返回的值中,只要有一行满足比较运算,那么比较表达式就为真,如果所有值都不满足,则返回假。
3、组合查询数据
UNION:用于合并两个或多个 SELECT 语句的结果集;
注意:
1)默认地UNION 显示不重复的值;
2)UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
UNION ALL:
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值,保留重复行。
UNION运算符使用规则:
1)列的数目必须一致;
2)列的数据类型最好保持一致,或者说都可以转换为对应的字符串形式;
3)返回的列的名称始终是第一个查询的列名。
INTERSECT:是指在两个集合中都存在的数据。
EXCEPT是指在一个查询结果中存在,但是不存在于另一个查询结果中的数据。