SQL 知识量:22 - 44 - 129
在SQL中,允许执行多条select语句,并将结果作为一个查询结果集返回,这样的查询就是组合查询,也叫并或复合查询。
通常在以下情况下使用组合查询:
在一个查询中从不同的表返回结构数据。
对一个表执行多个查询,按一个查询返回数据。
在多数情况下,组合相同表的两个查询所完成的工作与具有多个where子句条件(每个条件用or关键字分隔)的一个查询所完成的工作相同。
创建组合查询需要使用union关键字,只需要在每个select语句间放上union关键字即可。
例如:查询年龄大于12岁或性别为男性的学生信息。
select * from student where age>=12 union select * from student where sex='male';
结果:
+----+--------+-----+--------+ | id | name | age | sex | +----+--------+-----+--------+ | 2 | Jame | 12 | male | | 7 | Jack | 13 | male | | 10 | Ella | 12 | female | | 3 | Bob | 11 | male | | 4 | Robot | 10 | male | | 6 | Toney | 10 | male | | 9 | Bonnie | 11 | male | +----+--------+-----+--------+
以上使用组合查询的SQL语句与使用多个where子句的SQL语句完成的工作相同,如果使用多个where子句,SQL语句应修改为:
select * from student where age>=12 or sex='male';
其结果与使用组合查询一样,只是因为没有进行排序,因此,每行的顺序可能不同。
需要注意的是:
SQL对组合查询的select语句数量没有限制,但是DBMS可能有,使用时需要查看具体DBMS文档。
对于使用组合查询和多个where子句,谁的速度更快,不同的DBMS可能会不一样,可以通过实际运行来测试一下。
使用union需要注意以下规则:
union必须由两条及两条以上select语句组成,每条语句间使用union分隔。
组合查询的每个查询必须包含相同的列、表达式或聚集函数(它们的次序可以不同)。
列数据类型必须兼容,如果不是完全一样,也至少是DBMS可以隐含转换的类型。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6