首页 > 数据库 >MySQL常用语句整理

MySQL常用语句整理

时间:2023-02-09 15:15:10浏览次数:43  
标签:语句 常用 score 学号 -- 课程 MySQL 成绩 SELECT

表:

 

 

 

 查询语句

-- 查询姓“猴”的学生名单
SELECT * from student WHERE 姓名 like "猴%";
-- 查询姓“孟”老师的个数
SELECT COUNT(教师姓名) FROM teacher WHERE 教师姓名 LIKE "孟%";
-- 查询课程编号为“0002”的总成绩
SELECT SUM(成绩) from score WHERE 课程号=00002;
-- 查询选了课程的学生人数
SELECT COUNT(DISTINCT 学号) as 学生人数 from score;
-- 查询各科成绩最高和最低的分, 以如下的形式显示:课程号,最高分,最低分
SELECT 课程号, min(成绩) as 最低分, max(成绩) as 最高分 from score GROUP BY 课程号;
-- 查询每门课程被选修的学生数
SELECT 课程号, count(学号) as 学生数 from score  GROUP BY  课程号;
-- 查询男生、女生人数
SELECT 性别, count(*) from student GROUP BY 性别;
-- 查询平均成绩大于60分学生的学号和平均成绩
SELECT 学号, avg(成绩) as 平均成绩 from score GROUP BY 学号 HAVING AVG(成绩) > 60;
-- 查询至少选修两门课程的学生学号
SELECT 学号, count(课程号) as 选修科目数 from score GROUP BY 学号 HAVING COUNT(课程号)>=2;
-- 查询同名同姓学生名单并统计同名人数
SELECT 姓名, count(*) as 同名人数 from student GROUP BY 姓名 HAVING count(*)>=2;
-- 查询不及格的课程并按课程号从大到小排列
SELECT 课程号,成绩 from score WHERE 成绩 < 60 ORDER BY 课程号 DESC;
-- 查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列
SELECT 课程号, avg(成绩) as 平均成绩 from score GROUP BY 课程号 HAVING AVG(成绩)  ORDER BY 平均成绩 asc, 课程号 desc;
-- 检索课程编号为“0004”且分数小于60的学生学号,结果按按分数降序排列
SELECT 学号,成绩 from score WHERE 课程号=00004 and 成绩 < 60 ORDER BY 成绩 desc;
-- 统计每门课程的学生选修人数(超过2人的课程才统计),输出课程号和选修人数,查询结果按人数降序排序,若人数相同,按课程号升序排序
SELECT 课程号,count(学号) as 选修人数 from score GROUP BY 课程号 having COUNT(学号) > 2 ORDER BY count(学号) desc, 课程号 asc;
-- 查询两门以上不及格课程的同学的学号及其平均成绩
SELECT 学号, AVG(成绩) as 平均成绩 from score WHERE 成绩 < 60 GROUP BY 学号 having COUNT(课程号) > 2 ;
-- 查询学生的总成绩并进行排名
SELECT 学号, SUM(成绩) as 总成绩 from score GROUP BY 学号 ORDER BY 总成绩 asc;
-- 查询平均成绩大于60分的学生的学号和平均成绩
SELECT 学号, AVG(成绩) as 平均成绩 from score  GROUP BY 学号 having AVG(成绩)>60;
-- 查询所有课程成绩小于60分学生的学号、姓名
SELECT 学号,姓名 FROM student WHERE 学号 in (SELECT 学号 from score WHERE 成绩 < 60);
-- 查询学全没有选所有课的学生的学号、姓名
SELECT 学号,姓名 from student WHERE 学号 in (SELECT 学号 from score GROUP BY 学号 having COUNT(课程号) < (SELECT COUNT(课程号) from course));
-- 查询出只选修了两门课程的全部学生的学号和姓名
SELECT 学号,姓名 from student WHERE 学号 in (SELECT 学号 from score GROUP BY 学号 having COUNT(课程号) = 2);
-- 查找1990年出生的学生名单
SELECT 姓名,出生日期 from student where YEAR(出生日期) = '1990';
-- 查询各学生的年龄
SELECT 学号, TIMESTAMPDIFF(MONTH,出生日期,NOW())/12 as 年龄 FROM student;
-- 找出本月过生日的学生
SELECT 学号 FROM student where MONTH(出生日期) = MONTH(CURRENT_DATE);
-- 查询所有学生的学号、姓名、选课数、总成绩
SELECT a.学号, a.姓名, COUNT(b.课程号) as 选课数, SUM(b.成绩) as 总成绩 from student as a LEFT JOIN score as b on a.学号=b.学号 GROUP BY a.学号; 
-- 查询平均成绩大于85的所有学生的学号、姓名和平均成绩
SELECT a.学号, a.姓名, AVG(b.成绩) as 平均成绩 from student as a LEFT JOIN score as b on a.学号=b.学号 GROUP BY a.`学号` having 平均成绩>85;
-- 查询学生的选课情况:学号,姓名,课程号,课程名称
SELECT a.学号, a.姓名, c.课程号, c.课程名称 from student as a INNER JOIN score as b on a.`学号` = b.学号 INNER JOIN course as c on b.`课程号`=c.`课程号`;
-- 查询出每门课程的及格人数和不及格人数
SELECT 课程号, SUM(case WHEN 成绩<60 then 1 else 0 end) as 不及格人数, SUM(case when 成绩>=60 THEN 1 else 0 end) as 及格人数 from score GROUP BY 课程号;
-- 使用分段[100-85],[85-70],[70-60],[<60]来统计各科成绩,分别统计:各分数段人数,课程号和课程名称
SELECT a.课程号,b.课程名称,SUM(case WHEN a.成绩 BETWEEN 85 and 100 then 1 else 0 end) as '[100-85]', SUM(case when a.成绩 BETWEEN 70 AND 85 then 1 else 0 END) as '[85-70]',
SUM(case WHEN a.成绩 BETWEEN 60 AND 70 then 1 ELSE 0 end) as '[70-60]', SUM(case when a.成绩 < 60 then 1 else 0 end) as '[<60]' from score as a RIGHT JOIN course as b on 
a.`课程号`=b.`课程号` GROUP BY a.`课程号`, b.`课程名称`;
-- 查询课程编号为0003且课程成绩在80分以上的学生的学号和姓名|
SELECT a.学号, a.姓名, b.课程号, b.成绩 FROM student as a LEFT JOIN score as b on a.学号=b.`学号` WHERE b.`课程号`=0003 and b.`成绩`>80;
-- 检索"0001"课程分数小于60,按分数降序排列的学生信息
SELECT a.*, b.成绩 FROM student as a INNER JOIN score as b on a.学号=b.学号 WHERE b.`课程号` =00001 AND b.`成绩`<60 ORDER BY b.`成绩` DESC;
-- 查询不同老师所教不同课程平均分从高到低显示
SELECT a.教师号,a.教师姓名, AVG(c.成绩) as 平均分 from teacher as a INNER JOIN course as b on a.教师号=b.教师号 INNER JOIN score as c on b.课程号=c.课程号 GROUP BY a.教师号 ORDER BY AVG(c.`成绩`) DESC;
-- 查询课程名称为"数学",且分数低于60的学生姓名和分数
select a.姓名, b.成绩 from student as a INNER JOIN score as b on a.学号=b.学号 inner join course as c on b.课程号=c.课程号 where b.成绩<60 and c.课程名称='数学';
-- 查询任何一门课程成绩在70分以上的姓名、课程名称和分数
SELECT a.姓名, b.课程名称, c.成绩 from student as a inner join score as c on a.学号=c.学号 inner join course as b on b.课程号=c.课程号  WHERE c.`成绩` > 70;
-- 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
SELECT a.学号, b.姓名, AVG(a.成绩) as 平均成绩 from score as a inner join student as b on a.学号=b.学号 WHERE a.`成绩` < 60 GROUP BY a.学号 having COUNT(a.`学号`) > 2;

 

标签:语句,常用,score,学号,--,课程,MySQL,成绩,SELECT
From: https://www.cnblogs.com/handaxing/p/17105367.html

相关文章

  • java基础常用
    数组java数组需要先初始化才能使用初始化后未填充的位置自动填充nullObject数组能存储任意类型数据,包括基本数据类型Object数组1@Test2publicvoidobje......
  • MYSQL——真实生产环境的数据库机器配置
    摘要介绍真实项目中数据库配置选型,机器压测指标等,以帮助项目设计构建MYSQL集群能够符合你的业务。以下是个人在真实生产环境总结的的相关的参数,仅仅供大家参考。一、生产环......
  • 9 k8s内运行mysql,jenkins
    一kubernetes基于StatefulSet运行MySQL一主多从我这里演示一主一从1.1镜像准备dockerpullregistry.cn-hangzhou.aliyuncs.com/hxpdocker/xtrabackup:1.0dockertag......
  • JMeter笔记18 | JMeter常用配置元件简介
    (18|JMeter常用配置元件简介)1FTPRequestDefault即FTP请求默认值。多个FTP请求具有相同的配置时,可以把这些相同的点提取出来;且只需要配置一次。参数说明......
  • flask web 项目3 控制语句|模板继承|加载静态文件
    #jinjia2模板前端控制语句{%ifage>18%}代码语句{%elif age==18%}代码语句{%else%}代码语句{%endif%} #for循环{%forbookinbooks%}......
  • 30 个 IDEA 常用小技巧,应有尽有,让你的撸码效率直接起飞...
    IDEA作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇......
  • MySQL 如何实现表的创建、复制、修改与删除
    MySQL中如何利用代码完成表的创建、复制、修改和删除?下面总结了在创建表的时候各字段的含义以及注意哪些问题,复制和修改及删除常用的代码。一、创建表--创建新表,如果存在......
  • mybaits配置文件中添加显示sql语句的配置
    <!--Mybatis全局配置--><settings><!--设置当前Mybatis的日志输出,可在控制台显示sql语句--><settingname="logImpl"value="STDOUT_LOGGING"/......
  • Vue 常用
    阅读目录​​Vue3中八个生命周期函数​​​​js动态添加对象属性​​​​js遍历对象​​​​第一种:for......in​​​​第二种​​​​第三种:使用Object.getOwnPropertyNa......
  • MySQL 常见约束
    MySQL常见约束​​前言​​​​非空约束(notnull)​​​​唯一约束(unique)​​​​1、设置编号是唯一的(列级约束:该约束只应用于相关的一列上):​​​​2、给两个列或者多个列添......