zoukankan      html  css  js  c++  java
  • 单表查询

    分组操作

    group by 指的是:将所有记录按照某个相同字段进行归类

    用法 :select 聚合函数(count),选取的字段 from 表名 group by 分组的字段;

    注意点:

    • group by是分组的关键字

    • group by 必须和聚合函数一起使用

    例子:

    --以性别为例, 进行分组, 统计一下男生和女生的人数是多少个
    select count(id), gender from students group by gender;
    +-----------+--------+
    | count(id) | gender |
    +-----------+--------+
    |         2 | 男     |
    |         3 | 女     |
    |         1 | 中性   |
    +-----------+--------+
    
    
    --对班级进行分组,统计出每个班级年龄最大的那个人
    
    select cls_id,max(age),group_concat(name) from students group by cls_id;
    +--------+----------+----------------------+
    | cls_id | max(age) | group_concat(name)   |
    +--------+----------+----------------------+
    |      1 |       30 | 张飞,关羽,小鬼       |
    |      2 |       18 | 小乔,孙尚香          |
    |      3 |       20 | 甄姬                 |
    +--------+----------+----------------------+
    

    常用的聚合函数

    #求最大年龄   
    mysql> select  MAX(age)   from  student_detail;
    
    #求最小年龄
    mysql> select  MIN(age) from student_detail;
    
    #求和
    mysql> select  SUM(age)  from  student_detail;
    
    #求平均数
    mysql> select  AVG(age)   from  student_detail;
    
    #四舍五入
    mysql> select  ROUND(AVG(age))   from   student_details;
    
    #统计
    mysql> select count(s_id)   from  student;
    

    having 二次删选

    表示对group by之后的数据,进行再一次的二次筛选

    -- 查询平均年龄超过20岁的性别,以及姓名
    select gender,group_concat(name) from students group by gender having avg(age)>20;
    +--------+--------------------+
    | gender | group_concat(name) |
    +--------+--------------------+
    | 男     | 张飞,关羽          |
    +--------+--------------------+
    

    排序

    order by 字段名 asc(升序) desc(降序)

    升序asc可省略

    -- 查询年龄在18到30岁之间的男性,按照年龄从小到大排序
    select * from students where age between 18 and 30 and gender='男' order by age asc;
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | height | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  5 | 关羽   |   28 | 190.00 | 男     |      1 |
    |  4 | 张飞   |   30 | 190.00 | 男     |      1 |
    +----+--------+------+--------+--------+--------+
    

    可以多个排序:order by age desc, id asc

    表示:先对age降序,如果年龄相同,就按id升序

    select * from students order by age desc,id asc;
    +----+-----------+------+--------+--------+--------+
    | id | name      | age  | height | gender | cls_id |
    +----+-----------+------+--------+--------+--------+
    |  4 | 张飞      |   30 | 190.00 | 男     |      1 |
    |  5 | 关羽      |   28 | 190.00 | 男     |      1 |
    |  3 | 甄姬      |   20 | 170.00 | 女     |      3 |
    |  1 | 小乔      |   18 | 180.00 | 女     |      2 |
    |  2 | 孙尚香    |   18 | 180.00 | 女     |      2 |
    |  6 | 小鬼      |   16 | 178.00 | 中性   |      1 |
    +----+-----------+------+--------+--------+--------+
    

    分页查询

    用法:limit offset, size

    offset: 行数据索引

    size: 取多少条数据

    select * from students limit 3,5;
    +----+--------+------+--------+--------+--------+
    | id | name   | age  | height | gender | cls_id |
    +----+--------+------+--------+--------+--------+
    |  4 | 张飞   |   30 | 190.00 | 男     |      1 |
    |  5 | 关羽   |   28 | 190.00 | 男     |      1 |
    |  6 | 小鬼   |   16 | 178.00 | 中性   |      1 |
    +----+--------+------+--------+--------+--------+
    
    
    
    --limit  可以把offset省略,默认从第一行取
    select * from students limit 5;
    +----+-----------+------+--------+--------+--------+
    | id | name      | age  | height | gender | cls_id |
    +----+-----------+------+--------+--------+--------+
    |  1 | 小乔      |   18 | 180.00 | 女     |      2 |
    |  2 | 孙尚香    |   18 | 180.00 | 女     |      2 |
    |  3 | 甄姬      |   20 | 170.00 | 女     |      3 |
    |  4 | 张飞      |   30 | 190.00 | 男     |      1 |
    |  5 | 关羽      |   28 | 190.00 | 男     |      1 |
    +----+-----------+------+--------+--------+--------+
    

    总结:

    查询的使用顺序:

    select * from 表名 where 条件 group by 条件 having 条件 order by 条件 limit 条件

    必须严格按照这样的顺序写!!!!!

  • 相关阅读:
    CRM 安装过程 AD+SQL+CRM
    CRM系统新思维
    美团点评前端无痕埋点实践
    大数据平台的技术演化之路 诸葛io平台设计实例
    Dynamics 365 for Team Members Description
    Integrating SharePoint 2013 with ADFS and Shibboleth
    CRM 安全证书到期操作命令
    cmseasy CmsEasy_5.6_20151009 无限制报错注入(parse_str()的坑)
    Mlecms Getshell
    Discuz 5.x 6.x 7.x 前台SQL注入漏洞
  • 原文地址:https://www.cnblogs.com/setcreed/p/11768477.html
Copyright © 2011-2022 走看看