MySQL 查询语法回顾

目录

  • 语法顺序:
    • 数据源
      • 实体表
      • 动态数据
    • where 子句
    • group by 子句
      • 分组统计
      • 分组排序
      • 回溯统计
    • having 子句
    • order by 子句
    • limit 子句
      • 记录数限制
      • 分页

语法顺序:

SELECT [ALL]|[DISTINCT] 字段名
FROM 数据源
WHERE 筛选条件
GROUP BY 字段…
HAVING 分组数据的筛选条件或者聚合函数
ORDER BY 字段
LIMIT

数据源

FROM 关键字后边跟的数据源可以是 实体表或临时表。

实体表

单张表或者多张表,多张表如果不指定匹配规则,会出现笛卡儿积现象

动态数据

FROM 后面跟的数据不止是一个实体表,而是一个[可以是从表中查询出来的]二维结果表(子查询)

where 子句

用来从数据表获取数据的时候,然后进行条件筛选(满足筛选条件的从硬盘加载到内存),where之后的所有操作都是内存操作

group by 子句

表示分组的含义,根据指定的字段,将数据进行分组(分组的目标是为了统计)

分组统计

group by 是为了分组后数据统计的,如果只是想看数据显示,那么 group by 没什么含义。通常是搭配统计函数使用(聚合函数)。常用聚合函数有 avg,sum,max,min 等。

  • count(value):统计每组中的数量,如果 value 是字段,那么不统计为 null 的值,如果 value 为 * 代表统计记录条数!

分组排序

在MySQL中,分组默认有排序的功能,按照分组字段进行排序,默认是升序
基本语法:group by 字段 [asc|desc],类似于order by

回溯统计

当分组进行多分组之后,往上统计的过程中,需要进行层层上报,将这种层层上报的过程称之为回溯统计,每一次分组向上统计的额过程都会产生一次新的统计数据,而且当前数据对应的分组字段为null。
基本语法:group by 字段 [asc|desc] with rollup;
MySQL 查询语法回顾_第1张图片

having 子句

having 也是用来进行数据条件筛选的。但是和 where 有着本质的不同。

  1. having 针对分组数据 进行统计筛选,where 做不到【where 不能使用聚合函数】。
  2. havinggroup by 分组之后,可以使用聚合函数或者字段别名(这样理解比较好记,where 是从物理数据文件上加载数据,物理数据文件上只存的有字段和数据)

order by 子句

根据校对规则对数据进行排序。
基本语法:order by 字段 [asc|desc];

  • asc 升序,默认的

limit 子句

主要是用来限制记录数量

记录数限制

基本语法:limit number

分页

利用 limit 来限制获取指定区间的数据
基本语法:limit offset,length;

  • offset:从哪里开始。
  • length:具体的获取多少条记录。

mysql 中 limit 0,2; 表示,从第一条记录开始,只要前两条记录。

SQL练习题

你可能感兴趣的:(MySQL)