1.where与having区别
where是对数据聚合前进行过滤,having是对聚合后的数据进行过滤。
注:在实际运用中尽量使用where过滤,这样结果集减少,可以提高效率。
2.with rollup使用
with rollup可对聚合后结果进行汇总,可以应用于既查询分类数据也查询所有数据场景。
注:如果sql中含有where条件with rollup也是汇总所有数据,并不是只汇总条件过滤后的数据。
例如:
3.内连接和外连接查询区别
内连接: 内连接只查询合法数据,如果查询字段为null,则不会显示
外链接:(分为左连接和右连接)会以左边或者右边表为标准,查询出所有数据,即使表字段数据为null
例如:内连接查询结果
外链接查询数据:
4.子查询
子查询主要使用的关键字:in、not in、=、!=、exists、not exists等。
如果子查询中记录唯一可以使用=代替in。
注:表连接查询要优于子查询,mysql4.1之前不支持子查询
5.记录联合
记录联合可以讲结果组合到一起,主要有union和union all,区别在于union会将结果去重后显示,而union all会显示所有。