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是指在一个查询结果中存在,但是不存在于另一个查询结果中的数据。