联结
内连接——查询出来的结果肯定会满足所有的条件
自连接
select p1.prod_id,p1.prod_name
from product AS p1,product AS p2
where p1.vend_id = p2.vend_id and p2.prod_id = 'DNTRY'
自然连接——两张表中的名称和类型完全一致的列进行内连接
- 自然连接不必指定任何连接条件,自动连接两张表中相同名称的所有列。
- 如果两张表中有相同名字的列,但是数据类型不一致,如果能隐式转换,则能正常连接,但如果隐式转换不成功,则报错。
- 使用自然连接时,不能使用表名或表的别名修饰列。
select * from emp natural join dept;
外连接——查询出来的结果存在不满足条件的可能
左/右外连接(全外连接 mysql不支持)
select columns from table1 left/right join table2 on table1.col = table2.col;
笛卡儿积(cartesian product)
由没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。
UNION
- 至少2个select
- 2个select查询列数一致,顺序不要求
- 数据类型兼容
UNION查询结果,默认情况——重复的行被自动取消
若要结果包含重复行,使用UNION ALL
如果确实需要每个条件的匹配行全部出现(包括重复行),则必须使用UNION ALL而不是WHERE
结果排序
* 在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。
* 对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一 部分的情况
* 因此不允许使用多条ORDER BY子句