• 5-MySQL常用查询语句,集合函数,分组统计,分页查询


    -- 1.简单查询,查看所有列的数据
    select * from 学生表;
    -- 2.查看部分列,指定列名
    select 学号,姓名,年龄,性别,身份证号 from 学生表;
    -- 3.给列名取别名(重命名)
    select 课程ID 课程编号,课程名称 from 课程表;
    -- 4.查询数据时,使用distinct语句取消重复数据,查询哪些班级有学生;
    select * from 班级表;
    select distinct 班级ID from 学生表;
    select distinct 性别 from 学生表;
    -- 5.使用聚合函数进行统计查询
    /*
            sum:求和
            AVG:求平均数
            count:统计记录数
            max:求最大值
            min:求最小值
    */
    -- 在成绩表中查询最低成绩;
    select * from 成绩表;
    select min(考试成绩) 最低分 from 成绩表;
    insert into 成绩表 values(2,1,88),(2,3,78),(2,4,68),(1,1,66),(1,2,37),(1,3,98),(3,1,49),(3,2,67),(3,3,75),(4,1,92);
    -- 在成绩表中查询最高成绩;
    select max(考试成绩) 最高分 from 成绩表;
    select min(考试成绩) 最低分,max(考试成绩) 最高分 from 成绩表;
    -- 统计平均分
    select avg(考试成绩) 平均分 from 成绩表;
    -- 统计考试人次
    select count(*) 考试人次 from 成绩表
    -- 统计学号为1的学生的考试总分
    select avg(考试成绩) 平均分,sum(考试成绩) 总分 from 成绩表 where 学号=1;

    -- 6.带条件的查询(where语句)
    -- 查询姓名中包含“丽”字的学生姓名,并且性别为女,年龄小于18
    select * from 学生表 where 姓名 like '%丽%' and 性别='女' and 年龄<18;
    -- 7. order by 排序语句,
    -- 按年龄从小到大的顺序显示学生信息
    -- asc升序排序,asc是默认值,可以省略,desc降序排序

    select * from 学生表 order by 年龄 asc;
    -- 按年龄大从到小的顺序显示学生信息
    select * from 学生表 order by 年龄 desc;
    -- 用rand()函数进行随机排序 
    select * from 成绩表 order by rand()

    -- 按成绩从高到底的顺序排序
    select * from 成绩表 order by 考试成绩 desc ;
    -- 查询学号为2的学生成绩,从低到高的顺序显示
    -- 如果查询语句中有where语句,order by语句,那么order by语句必须放在where语句后面
    select * from 成绩表 where 学号=2 order by 考试成绩;
    -- 7.limit语句的使用,限定显示记录数量,分页查询等功能
    /*
            limit 开始位置,显示记录数
            
            特别说明:limit语句必须放在SQL语句的最后面
    */
    -- 查询考试成绩前3名的学生
    select * from 成绩表 order by 考试成绩 desc limit 0,3 ;
    -- 查询考试成绩第4-6名的学生
    select * from 成绩表 order by 考试成绩 desc limit 3,3 ;
    -- 查询考试成绩第7-9名的学生
    select * from 成绩表 order by 考试成绩 desc limit 6,3 ;

    -- 随机查询3个学生的考试成绩
    select * from 成绩表 order by rand() limit 0,3 ;
    -- 8 用group by语句进行分组查询 

    -- 按性别统计男生和女生的人数

    select 性别,count(*) 人数 from 学生表 group by 性别;
    -- 按班级和性别统计男生和女生的人数
    select 班级ID,性别,count(*) 人数 from 学生表 group by 班级ID,性别;
    -- 按班级和性别统计男生和女生的人数,在列表中显示班级名称,性别,人数

    select 班级名称,性别,count(*) 人数 from 学生表 s,班级表 b where s.`班级ID`=b.`班级ID` group by s.班级ID,性别;

    -- 统计所有学生的总分,

    select 学号,sum(考试成绩) 总分 from 成绩表 group by 学号;

    -- 统计所有学生的总分,平均分
    select 学号,sum(考试成绩) 总分,avg(考试成绩) 平均分 from 成绩表 group by 学号;
    -- 统计所有学生的总分,显示最高分
    select 学号,sum(考试成绩) 总分 from 成绩表 group by 学号 order by 总分 desc limit 0,1;
    -- 9.使用having语句进行二次筛选
    -- 统计所有学生的平均分,只显示平均分大于80分的学生成绩
    select 学号,avg(考试成绩) 平均分 from 成绩表 group by 学号 having avg(考试成绩)>80;

    -- 统计所有学生的平均分,只显示平均分大于80分的学生成绩
    select 学号,avg(考试成绩) 平均分 from 成绩表 group by 学号 having avg(考试成绩)>80;
    -- 按班级统计所有学生的平均分,只显示平均分大于80分的学生成绩
    select 班级名称,s.学号,avg(考试成绩) 平均分 from 成绩表 c,学生表 s,班级表 b 
    where c.`学号`=s.`学号` and s.`班级ID`=b.`班级ID`  group by s.`班级ID`, c.学号 having avg(考试成绩)>80;

    -- 按班级统计所有学生的平均分,只显示平均分大于80分的学生成绩,按成绩高低排序
    select 班级名称,s.学号,avg(考试成绩) 平均分 from 成绩表 c,学生表 s,班级表 b 
    where c.`学号`=s.`学号` and s.`班级ID`=b.`班级ID`  group by s.`班级ID`, c.学号 having avg(考试成绩)>80 order by 平均分 desc;

    -- 按班级统计所有学生的平均分,只显示平均分大于80分的学生成绩,按成绩高低排序,只显示前3名
    select 班级名称,s.学号,avg(考试成绩) 平均分 from 成绩表 c,学生表 s,班级表 b 
    where c.`学号`=s.`学号` and s.`班级ID`=b.`班级ID`  group by b.班级名称, c.学号 having avg(考试成绩)>80 
    order by 平均分 desc limit 0,3;
    /*
        注意事项:
            1.如果SQL语句中同时出现了where,group by ,having ,order by ,limit等语句,
                where 必须放在最前面,group by 放在where语句后面,
                having必须在group by后面,只有使用了group by 语句时,才能使用having语句,对分组以后的数据进行二次筛选。
                order by 放在 having 后面
                limit必须放在最后面
                
                -----------------------------
                使用group by语句以后,字段列表的字段有要求:
                字段列表的字段要么在group by后面出现,要么使用聚合函数,其他字段不允许出现.
                
                

    */
    -- 只显示表结构
    select * from 学生表 limit 0,0;

    本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂

    讲师课堂链接:https://edu.csdn.net/lecturer/893

  • 相关阅读:
    vue2+axios实现修改和删除element-ui表格数据
    C++ 函数返回多个值的方法总结
    【Python爬虫】安装requests库解决报错问题
    力扣练习——60 二叉搜索子树的最大键值和
    JDK8到JDK17有哪些吸引人的新特性?
    dreamweaver网页大作业 我的家乡——南京玄武湖旅游攻略(4页) 学生网页设计作业源码
    模板的进阶
    虚拟体育来袭!普通人也能参加奥运会?
    【MQ工作队列模式】
    vue之获取dialog 中的组件ref对象
  • 原文地址:https://blog.csdn.net/software7503/article/details/127707891