美文网首页
python学习笔记-数据库05_高级查询

python学习笔记-数据库05_高级查询

作者: MR_詹 | 来源:发表于2020-11-10 22:27 被阅读0次

    排序

    排序查询语法:
    select * from 表名 order by 列1 asc | desc [,列2 asc | desc ,...];

    语法说明:
    先按照列1进行排序,如果列1的值相同,则按照列2排序,以此类推
    asc从小到大排序,即升序(是默认值)
    desc从大道小排序,即降序

    // 查询为删除男生信息,按学号降序
    select * from students where is_del = 0 and gender = '男' order by id desc;

    // 显示所有学生的信息,先按照年龄从大到小排序,当年龄相同时,按照身高从高到矮排序
    select * from students order by age desc,height desc;

    分页

    分页语法:
    select * from 表名 limit start,count;

    语法说明:
    limit 是分页查询关键字
    start 表示开始的索引, 默认是0
    count 表示查询条数

    // 查询前3行男生信息
    select * from students where gender = ’男‘ limit 0, 3;
    简写:
    select * from students where gengder = '男' limit 3;

    /// 查询学生表,后去第n页数据的SQL 语句
    select * from students limit (n-1)*count , count;

    聚合函数

    聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据。
    常用的聚合函数:
    count(col): 表示求指定列的总行数
    max(col):表示求指定列的最大值
    min(col):表示求指定列的最小值
    sum(col):表示求指定列的和
    avg(col):表示求指定列的平均值

    // 查询学生的个数
    select count(height) from students;
    注意点:聚合函数不会对空值进行统计
    一般如果要指定列名,那么就是主键字段
    select count(id) from students;
    通用的写法(因为主键不一定是id)
    select count(*) from students;

    // 查询女生的编号最大值
    select max(id) from students where gender = ‘女’;

    // 查询未删除的学生最小编号
    select min(id) from students where is_del = 0;

    // 查询男生的总身高
    select sum(height) from student where gender = ‘男’;

    // 求男生的平均身高
    // 此处是对身高是null的不会加入统计的范围内
    select avg(height) from students where gender = ‘男‘;

    // 此写法会对身高height为空null的时候,设置默认为0,并加入统计的范围内
    select avg(ifnull(height,0)) from students where gender = ’男‘;

    // 这是另外一种写法
    select sum(height) / count(*) from students where gender = ’男‘;

    分组

    分组查询就是将查询结果按照指定字段进行分组,字段中数据相等的分为一组
    语法如下:
    group by 列名 [having 条件表达式] [with rollup]
    列名:是指按照指定字段的值进行分组
    having 条件表达式:用来过滤分组后的数据
    with rollup: 在所有记录的最后加上一条记录,显示select 查询是聚会函数的统计和计算结果
    group by : 可用于单个字段分组,也可以用于多个字段分组

    // 查询性别的种类
    select gender from students group by gender;

    // 注意:如果指定了分组字段,那么查询的时候只能使用指定分组字段
    // 比如:如果要将分组的字段gender 添加一个name,
    // 那么select 相应也要添加一个name,如下
    select gender,name from students group by gender , name;

    // 根据gender字段进行分组,查询每个分组的姓名信息
    select gender,gruop_concat(name) from students group by gender;
    group_concat:统一每个分组指定字段的信息集合,信息之间使用逗号进行分割

    // 统计不同性别的平均年龄
    select gender,avg(age) from students group by gender;

    // 统计不同性别的人数
    select gender,count(*) from student group by gender;

    根据gender字段进行分组,统计分组条数大于2的
    // 对分组数据过滤不能使用where,只能使用 having语句
    select gender,count(*) from students group by gender having count(*) > 2;

    // 根据gender字段进行分组,汇总总人数
    select gender , count(*) from students group by gender with rollup;

    // 根据gender字段进行分组,汇总所有人的年龄
    select gender,group_concat(age) from students group sender with rollup;

    相关文章

      网友评论

          本文标题:python学习笔记-数据库05_高级查询

          本文链接:https://www.haomeiwen.com/subject/acrkbktx.html