zoukankan      html  css  js  c++  java
  • 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);
    • 判断空值:is null 或者 is not null
    • 别名: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. 嵌套在查询内部
      1. 必须始终出现在圆括号内

    例:

    • 求出学生的平均年龄
      • 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




  • 相关阅读:
    poj.1703.Find them, Catch them(并查集)
    uva.10020 Minimal coverage(贪心)
    Hdu.1325.Is It A Tree?(并查集)
    1455.Solitaire(bfs状态混摇)
    hdu.1430.魔板(bfs + 康托展开)
    hdu.1254.推箱子(bfs + 优先队列)
    hihoCoder挑战赛11.题目4 : 高等理论计算机科学(LCA)
    Codeforces Round #302 (Div. 2).C. Writing Code (dp)
    hdu.1198.Farm Irrigation(dfs +放大建图)
    hdu.1111.Secret Code(dfs + 秦九韶算法)
  • 原文地址:https://www.cnblogs.com/jiyu-hlzy/p/11876717.html
Copyright © 2011-2022 走看看