MySQL单表查询

一. 单表查询语法

  select 字段1,字段2,... from 表名 where 条件 group by field having 筛选 order by field lieit 限制条件.

  关键字的执行优先级 :

    1. from 找到某一个表

    2. where 用where的约束条件,去文件/表中取出数据

    3. 将取出的数据使用group by 进行分组,如果没有group by,整体作为一组

    4. 将分组的结果使用having后的条件进行筛选

    5. 执行select

    6. 去重

    7. 将结果按条件排序

    8. 限制结果的显示数量.

二. where约束

  1. 比较运算符 : >, <, >=, <=, <>, !=.

  2. between 100 and 200 : 判断值在100和200之间的,包含100和200.

  3. in (10,20,50) : 判断值是10或20或50的字段.

  4. like "xxxx% / _" : 模糊查询,%表示可以表示多个字符,_表示单个字符.

  5. 逻辑运算符 : 有多个条件时可以使用逻辑运算符 and or not.

三. group by 分组查询

  ※ . 分组是发生在where之后,即分组是基于where之后得到的记录而进行的.

  ※ . 如果没有mysql设置ONLY_FULL_GROUP_BY模式,在where之前用也会有查询结果,默认是组内的第一条记录,但是并没有意义.

  ※ . 如果想分组,则必须要设置全局的sql模式为ONLY_FULL_GROUP_BY.

  通过分组后查询的的字段,只能查看组内的信息,需要借助聚合函数.才能查看其它字段的信息.

  1. 聚合函数

    ①. max()  求最大值

    ②. min()  求最小值

    ③. avg()  求平均值

    ④. sum()  求和

    ⑤. count()  求总个数

四. having  过滤

  having与where不一样的地方在于 :

    执行优先级从高到低 : where > group by > having

    where发生在分组group by之前,因而where中可以有任意字段,但绝对不能用聚合函数.

    having发生在分组group by之后, 因而having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数.

五. order by  查询排序

  排序要写在select语句末尾

  select * from 表名 [ where 条件过滤 ] [ order by 字段 [ asc ] [ desc ] ]

  asc : 升序 默认为升序

  desc : 降序

六. limit  限制查询的数据数量

  limit可以被用于强制限制select语句返回的记录数量.

  limit接收一个或两个数字参数.如果给定两个参数,第一个参数是指定返回记录行的偏移量(即从第几个记录开始查询),第二个参数是返回记录行的最大数目.默认的初始位置是0.

  limit n offset m    偏移量为m, 去n个值

原文地址:https://www.cnblogs.com/dong-/p/9678981.html