MySql 筛选条件、聚合分组、链接查询

筛选条件

比较运算符

  • 等于: = ( 注意!不是 == )
  • 不等于: != 或 <>
  • 大于: >
  • 大于等于: >=
  • 小于: <
  • 小于等于: <=
  • IS NULL
  • IS NOT NULL

逻辑运算符

  • 与:and
  • 或:or
  • 非:not

其它操做

  • 排序:order by
    • 正序:asc
    • 倒序:desc
    • 例:select * from students order by age desc ;
  • 限制:limit
    • 控制显示m条数据:limit m
    • 从下标为m的行数开始显示n条数据:limit m,n
    • 例:select * from students limit 3,2 ;
  • 去重:distinct
    • 例:select distinct * from students;
  • 模糊查询:like
    • 任意一个字符:_
    • 任意多个字符:%
    • 例:select * from students where name like '%abc_' ;
  • 范围查询
    • 连续范围: BETWEEN a AND b 至关于a <= value <= b
    • 间隔返回: IN
    • 例:select * from students where id in(1,3,5,7);
  • 别名:as


聚合分组

经常使用聚合函数

  • 统计个数:COUNT(column)
  • 最大值:MAX(column)
  • 最小值:MIN(column)
  • 求和:SUM(column)
  • 平均值:AVG(column)
  • 列出字段所有值:GROUP_CONCAT(column)

分组查询:group by

  • 在分组的状况下,只可以出现分组字段和聚合字段
  • 其余的字段没有意义,会报错!
  • Select 字段 from 表 group by 字段;
  • Select 字段,count(*) from 表 group by 字段;

聚合筛选:having

  • 加having条件表达式,能够对输出的结果作出限制
  • Select 字段1 from 表名 group by 字段1,字段2 having 字段2>=80;

执行顺序

  • 若是一个查询语句中同时包含了别名(as),聚合函数, where, having,那么他们的执行顺序是
    • 先是执行:where
    • 而后执行:聚合函数和别名
    • 最后执行:having


子查询

将一个查询的结果留下来用于下一次查询 ( select 中嵌套 select )

要求:

  • 1) 嵌套在查询内部
  • 2) 必须始终出如今圆括号内

例:

  • 求出学生的平均年龄
    • select avg(age) from students;
  • 查找出大于平均年龄的数据
    • select * from student where age > 19;
  • 将求出的平均年龄的SQL语句用于查找大于平均年龄的语句中
    • select * from students where age > (select avg(age) from students);


链接查询

内链接:inner join

  • 无条件内链接:
    • 无条件内链接,又名交叉链接/笛卡尔链接
    • 第一张表中的每一项会和另外一张表的每一项依次组合
    • select * from 表1 inner join 表2
  • 有条件内链接:
    • 在无条件内连接的基础上,加上一个on子句
    • 当链接的时候,筛选出那些有实际意义的记录来进行组合
    • select * from 表1 as a inner join 表2 as b on a.id = b.id

外链接:{left | right} join

  • 左外链接: (以左表为基准)
    • 两张表作链接的时候,在链接条件不匹配的时候
    • 留下左表中的数据,而右表中的数据以NULL填充
    • select * from 表1 as a left join 表2 as b on a.id = b.id
  • 右外链接: (以右表为基准)
    • 对两张表作链接的时候,在链接条件不匹配的时候
    • 留下右表中的数据,而左表中的数据以NULL填充
    • select * from 表1 as a right join 表2 as b on a.id = b.id
相关文章
相关标签/搜索