SQL


聚集函数

1.between匹配 包含min和max值

2. count(*) 计算时会包括null值,而count(column)则会忽略null值。

   检验是否含有null值需要使用is null。

3.使用聚集函数时,avg。sum,min,max均会忽略null值。

4.使用聚集函数要赋予其别名。

5.聚集函数内可以使用distinct关键字,而默认使用all关键字。

   如 select avg(distinct price) as avg_price

   当不使用distinc时   默认all:  select avg(all price) as avg_price

6.注意指定别名时避免使用列名,虽然这是合法的。


过滤分组

group by子句用于按参数来排序并分组。

如果在select中使用表达式,则group by子句中必须指定相同的表达式,而不能使用别名。

除聚集语句外,select 语句中的每个列都必须在group by子句中给出。

若分组列中具有null值,则null将作为一个分组返回。若列中有多行null值,则他们讲分为一组。

where与having:

    where与having所支持的关键字是相同的。

    但where用于过滤指定行,但不能过滤分组;having则可以用于过滤分组。

oder by 与 group by

order by group by
排序产生的输出 分组行,但输出可能不是分组的顺序
任意列都可以使用,甚至包括非选择的列 只可能使用选择列或者表达式列,而且必须使用每个选择列表达式
不一定需要 若与聚集函数一起使用列(或表达式),则必须使用

由第一条可见,每次使用group by时应当也给出order by子句,这是为了保证数据正确排序的唯一方法。


组合查询

虽然where or语句与union效果基本相同,但默认union与where or都是返回去除重复数据的匹配行,而union all可以包含重复行。

对组合查询结果排序,仅支持在最后一条select 语句后添加排序条件,而不能对每部分分别制定排序规则。


使用insert select语句时要注意,填充数据时,使用select语句的第一列来填充insert第一列,第二列对应第二列,等等。

使用last_insert_id()函数获取auto_increment列的最后值。

SQL

上一篇:MySQL8.0.16-linux-x64安装介绍(binary package)


下一篇:这次说一下mysql协议的数据库中间件mycat集群方案.