SQL中的常用查询

聚合

聚合的语法规则如下

SELECT [field1,field2,...fieldn] fun_name
FROM tablename
[WHERE where_condition]
[GROUP BY field1,field2,...fieldn
[WITH ROLLUP]]
[HAVING where_condition]

其中

  • fun_name表示要做的聚合操作,常用的有sum,count,max,min
  • GROUP BY指定要进行聚合的字段
  • WITH ROLLUP是可选语法,表明是否对分类聚合后的结果进行再汇总
  • HAVING关键字表示对分类后的结果再进行条件过滤

having和where的区别:having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤。如果条件允许,我们应当尽可能用where先过滤记录,因为这样结果集减少,会大大提高聚合的效率,最后再根据逻辑看是否用having进行再过滤

表连接

表连接又分为两种,分别是

  1. 内连接:仅选出两张表中互相匹配的及记录
  2. 外连接:会选出两张表中其他不匹配的记录
    外连接由可以分为两种:
  • 左连接:结果集包含左表中所有的记录,右表没有与其匹配的记录也展示
  • 右连接:结果集包含右表中所有的记录,左表没有与其匹配的记录也展示

子查询

子查询比较简单,可以理解为嵌套查询。外层的查询条件依赖于内层的查询结果。
常用关键字有:in、not in、=、!=、exists、not exists
注意:表连接很多情况下优于子查询! 所以优先选择表连接进行查询。

记录联合

记录联合,顾名思义,就是将结果集再联合起来。语法规则如下:

SELECT * FROM t1
UNION|UNION ALL
SELECT * FROM t2
...
UNION|UNION ALL
SELECT * FROM tn

其中,
union和union all的主要区别是union all是把结果集直接合并在一起,而union是将union all后的结果进行一次distinct,去除重复记录后的结果。(union反而比union all更多一步,有点违反常理)

发布了136 篇原创文章 · 获赞 94 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/somehow1002/article/details/93672577
今日推荐