子查询
子查询即嵌套在其他查询中的查询。一般有两种用法,一种是在 WHERE
字句中使用其来限定范围,达到过滤的效果,一般可与 IN
搭配使用。另一种用法作为计算字段使用子查询,即在 SELECT
语句中使用子查询,将子查询的结果作为一列的结果。如下例所示:
1 | SELECT AVG(score) AS average_score, |
子查询的缺点在于过多的子查询将会影响性能,而且将导致代码可读性不佳。
联合查询
联合查询通常用于需要查看的数据来自多张表,使用 JOIN
语句将多张表连接起来,使用 ON
语句将两张表中相关联的列连接起来。
常用的联合查询包括内连接和外连接。内连接也被称为等值连接,只有同时存在两张表中的记录才会被保留。外连接中两张的表的记录都会被保留,能匹配上的则正确匹配,不能匹配上的将会被设置成 NULL
。外连接分为左连接和右连接,左连接中JOIN
语句左边的表中的记录将会被保留,右连接则反之。
组合查询
组合查询通常用来将两个或者两个以上具有相同结构的列、表达式或者聚集函数的查询结果组合到一起,默认会排除重复值。使用关键词 UNION
。只能在最后使用一次ORDER BY
语句对结果进行排序。
可以认为,组合查询是将查询结果在行方向上进行拼接,而联合查询是将不同的表在列方向上进行拼接后再进行查询。