目录

  • 题目
  • 1、查询所有的课程的名称以及对应的任课老师姓名
  • 2、查询学生表中男女生各有多少人
  • 3、查询物理成绩等于100的学生的姓名
  • 4、查询平均成绩大于八十分的同学的姓名和平均成绩
  • 5、查询所有学生的学号,姓名,选课数,总成绩
  • 6、 查询姓李老师的个数
  • 7、 查询没有报李平老师课的学生姓名
  • 8、 查询物理课程比生物课程高的学生的学号
  • 9、 查询没有同时选修物理课程和体育课程的学生姓名
  • 10、查询挂科超过两门(包括两门)的学生姓名和班级
  • 12、查询李平老师教的课程的所有成绩记录
  • 13、查询全部学生都选修了的课程号和课程名
  • 14、查询每门课程被选修的次数
  • 15、查询只选修了一门课程的学生姓名和学号
  • 16、查询所有学生考出的成绩并按从高到低排序(成绩去重)
  • 17、查询平均成绩大于85的学生姓名和平均成绩
  • 18、查询生物成绩不及格的学生姓名和对应生物分数
  • 19、查询在所有选修了李平老师课程的学生中,这些课程(李平老师的课程,不是所有课程)平均成绩最高的学生姓名

题目

#创建表及插入记录
CREATE TABLE class (cid int(11) NOT NULL AUTO_INCREMENT,caption varchar(32) NOT NULL,PRIMARY KEY (cid)
) ENGINE=InnoDB CHARSET=utf8;INSERT INTO class VALUES
(1, '三年二班'),
(2, '三年三班'),
(3, '一年二班'),
(4, '二年九班');CREATE TABLE student(sid int(11) NOT NULL AUTO_INCREMENT,gender char(1) NOT NULL,class_id int(11) NOT NULL,sname varchar(32) NOT NULL,PRIMARY KEY (sid),KEY fk_class (class_id),CONSTRAINT fk_class FOREIGN KEY (class_id) REFERENCES class (cid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO student VALUES
(1, '男', 1, '理解'),
(2, '女', 1, '钢蛋'),
(3, '男', 1, '张三'),
(4, '男', 1, '张一'),
(5, '女', 1, '张二'),
(6, '男', 1, '张四'),
(7, '女', 2, '铁锤'),
(8, '男', 2, '李三'),
(9, '男', 2, '李一'),
(10, '女', 2, '李二'),
(11, '男', 2, '李四'),
(12, '女', 3, '如花'),
(13, '男', 3, '刘三'),
(14, '男', 3, '刘一'),
(15, '女', 3, '刘二'),
(16, '男', 3, '刘四');CREATE TABLE teacher(tid int(11) NOT NULL AUTO_INCREMENT,tname varchar(32) NOT NULL,PRIMARY KEY (tid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO teacher VALUES
(1, '张磊老师'),
(2, '李平老师'),
(3, '刘海燕老师'),
(4, '朱云海老师'),
(5, '李杰老师');CREATE TABLE course(cid int(11) NOT NULL AUTO_INCREMENT,cname varchar(32) NOT NULL,teacher_id int(11) NOT NULL,PRIMARY KEY (cid),KEY fk_course_teacher (teacher_id),CONSTRAINT fk_course_teacher FOREIGN KEY (teacher_id) REFERENCES teacher (tid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO course VALUES
(1, '生物', 1),
(2, '物理', 2),
(3, '体育', 3),
(4, '美术', 2);CREATE TABLE score (sid int(11) NOT NULL AUTO_INCREMENT,student_id int(11) NOT NULL,course_id int(11) NOT NULL,num int(11) NOT NULL,PRIMARY KEY (sid),KEY fk_score_student (student_id),KEY fk_score_course (course_id),CONSTRAINT fk_score_course FOREIGN KEY (course_id) REFERENCES course (cid),CONSTRAINT fk_score_student FOREIGN KEY (student_id) REFERENCES student(sid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO score VALUES
(1, 1, 1, 10),
(2, 1, 2, 9),
(5, 1, 4, 66),
(6, 2, 1, 8),
(8, 2, 3, 68),
(9, 2, 4, 99),
(10, 3, 1, 77),
(11, 3, 2, 66),
(12, 3, 3, 87),
(13, 3, 4, 99),
(14, 4, 1, 79),
(15, 4, 2, 11),
(16, 4, 3, 67),
(17, 4, 4, 100),
(18, 5, 1, 79),
(19, 5, 2, 11),
(20, 5, 3, 67),
(21, 5, 4, 100),
(22, 6, 1, 9),
(23, 6, 2, 100),
(24, 6, 3, 67),
(25, 6, 4, 100),
(26, 7, 1, 9),
(27, 7, 2, 100),
(28, 7, 3, 67),
(29, 7, 4, 88),
(30, 8, 1, 9),
(31, 8, 2, 100),
(32, 8, 3, 67),
(33, 8, 4, 88),
(34, 9, 1, 91),
(35, 9, 2, 88),
(36, 9, 3, 67),
(37, 9, 4, 22),
(38, 10, 1, 90),
(39, 10, 2, 77),
(40, 10, 3, 43),
(41, 10, 4, 87),
(42, 11, 1, 90),
(43, 11, 2, 77),
(44, 11, 3, 43),
(45, 11, 4, 87),
(46, 12, 1, 90),
(47, 12, 2, 77),
(48, 12, 3, 43),
(49, 12, 4, 87),
(52, 13, 3, 87);

1、查询所有的课程的名称以及对应的任课老师姓名

SELECTcourse.cname,teacher.tname
FROMteacherJOIN course ON teacher.tid = course.teacher_id

结果:

2、查询学生表中男女生各有多少人

SELECTgender,count(*) num
FROMstudent
GROUP BYgender

结果:

3、查询物理成绩等于100的学生的姓名

SELECTsname
FROMstudent
WHEREsid IN (SELECTstudent_id FROMscore WHEREnum = 100 AND course_id IN ( SELECT cid FROM course WHERE cname = '物理' ))

结果:

4、查询平均成绩大于八十分的同学的姓名和平均成绩

SELECT
sname,avg( num ) AS '平均成绩'
FROMscore JOIN student ON student.sid = score.student_id
GROUP BYstudent_id
HAVINGavg( num )> 80

结果:

5、查询所有学生的学号,姓名,选课数,总成绩

SELECTstudent_id,student.sname,sum( num ) AS '总成绩',count(*) AS '选课数'
FROMscoreJOIN student ON student.sid = score.student_id
GROUP BYscore.student_id

结果:

6、 查询姓李老师的个数

SELECTcount( tid ) AS '个数'
FROMteacher
WHEREtname LIKE '李%'

结果:

7、 查询没有报李平老师课的学生姓名

SELECTstudent.sname
FROMstudent
WHEREsid NOT IN (SELECT  student_id FROMscore
WHEREcourse_id IN ( SELECT course.cid FROM course INNER JOIN teacher ON course.teacher_id = teacher.tid WHERE teacher.tname = '李平老师' ))

结果:

8、 查询物理课程比生物课程高的学生的学号

SELECTt1.student_id,t1.num AS '物理成绩',t2.num AS '生物成绩'
FROM
-- 查出物理成绩(SELECTstudent_id,num FROMscore WHEREcourse_id =(SELECTcid FROMcourse WHEREcname = '物理' )) AS t1-- 查出生物成绩INNER JOIN (SELECTstudent_id,num FROMscore WHEREcourse_id =(SELECTcid FROMcourse WHEREcname = '生物' )) AS t2 ON t1.student_id = t2.student_id
WHEREt1.num > t2.num

结果:

9、 查询没有同时选修物理课程和体育课程的学生姓名

SELECTstudent.sname
FROMstudent
WHEREsid IN (SELECTstudent_id FROMscore WHEREcourse_id IN ( SELECT cid FROM course WHERE cname = '物理' OR cname = '体育' ) GROUP BYstudent_id HAVINGcount( course_id )= 1 )

结果:

10、查询挂科超过两门(包括两门)的学生姓名和班级

1.查询选修了所有课程的学生姓名
2.求出<60的表,然后对学生进行分组,统计课程数目>=2

SELECTstudent.sname,class.caption
FROMstudentINNER JOIN ( SELECT student_id FROM score WHERE num < 60 GROUP BY student_idHAVING count( course_id )>= 2 ) AS t1INNER JOIN class ON student.sid = t1.student_id AND student.class_id = class.cid

结果:

12、查询李平老师教的课程的所有成绩记录

SELECTscore.*
FROMscore
WHEREcourse_id IN (SELECTcid FROMcourse
WHEREteacher_id IN ( SELECT tidFROM teacher WHERE tname = '李平老师' ))order by sid asc

结果:

13、查询全部学生都选修了的课程号和课程名

SELECTcid,cname
FROMcourse
WHEREcid IN (SELECTcourse_id FROMscore GROUP BYcourse_id HAVINGcount( student_id )=(SELECTcount( sid ) FROMstudent ))

结果:

14、查询每门课程被选修的次数

SELECTcourse.cname,count( course_id ) AS '选修次数'
FROMscoreINNER JOIN course ON score.course_id = course.cid
GROUP BYcourse_id

结果:

15、查询只选修了一门课程的学生姓名和学号

SELECTsname,sid
FROMstudent
WHEREsid IN (SELECTstudent_id FROMscore GROUP BYstudent_id HAVINGcount( course_id )= 1 )

结果:

16、查询所有学生考出的成绩并按从高到低排序(成绩去重)

SELECT DISTINCTnum
FROMscore
order by num desc

结果:

17、查询平均成绩大于85的学生姓名和平均成绩

SELECTstudent.sname,t1.avg AS '平均成绩'
FROMstudentINNER JOIN ( SELECT student_id ,avg( num ) as avgFROM score GROUP BY student_id HAVING avg( num )> 85 ) AS t1 ON student.sid = t1.student_id

结果:

18、查询生物成绩不及格的学生姓名和对应生物分数

SELECTsname,num AS '生物成绩'
FROMscoreINNER JOIN course ON score.course_id = course.cidINNER JOIN student ON score.student_id = student.sid
WHEREcourse.cname = '生物' AND score.num < 60

结果:

19、查询在所有选修了李平老师课程的学生中,这些课程(李平老师的课程,不是所有课程)平均成绩最高的学生姓名

SELECTsname
FROMstudent
WHEREsid = (SELECTstudent_id FROMscore WHEREcourse_id IN ( SELECT course.cid FROM course INNER JOIN teacher ON course.teacher_id = teacher.tid WHERE teacher.tname = '李平老师' ) GROUP BYstudent_id ORDER BYavg( num ) DESC LIMIT 1)

结果:


MySQL数据库综合练习四相关推荐

  1. MySQL数据库综合练习题

    MySQL数据库综合练习4(1-12题) 一.准备数据 1.class表 #创建表及插入记录 CREATE TABLE class (cid int(11) NOT NULL AUTO_INCREME ...

  2. 【MySql 数据库综合练习04】

    MySql 数据库综合练习04 提示:部分数据不满足查询要求,即结果为null 数据库综合练习04 MySql 数据库综合练习04 一.数据库创建代码 二.题目 1.查询所有的课程的名称以及对应的任课 ...

  3. 【MySql 数据库综合练习01 】

    MySql 数据库综合练习01 创建表 数据表格列名: 以下题目均以以上数据作为查询目标: 2.查询平均成绩大于60 分的同学的学号和平均成绩: 3.查询所有同学的学号.姓名.选课数.总成绩: 4.查 ...

  4. 【mysql篇】mysql数据库知识点(四种语言)

    mysql数据库语言分为四种DDL,DQL,DML,DCL下面我们一一介绍: 注:(上图取自黑马程序员的课程APP中,这些笔记也是看了黑马程序员的课程之后做的): 一,       DDL(data ...

  5. MySQL数据库综合运用——快递管理系统

    MySQL综合运用(快递管理系统) Chapter1 概述 1.1 背景 1.2 系统开发的可行性判断 1.3 目标 1.4 软件 1.5 开发环境 Chapter2 需求分析 2.1 信息要求 2. ...

  6. Linux系统中查看Mysql数据库版本号的四种方法(图文完整版)

    今天处理一个问题,发现要确定Mysql数据库的版本号,于是我就整理了一下我查看的几种方法. 第一种方法(在终端操作): 操作方式:在终端输入命令即可查询 命令:mysql -V 第二种方法(在终端操作 ...

  7. Day39:MySQL数据库综合复习整理

    1.关系型数据库的特点 1.关系型数据库的组织原则是表格. 2.数据分别存储在一些相关的二维表中. 3.每个表包含某个特定主题的数据. 4.表与表之间是通过主外键关联. 2.MySQL数据库的特点 1 ...

  8. Mysql数据库基本知识四:视图

    =============================[视图]================================= 几个知识点: 视图降低了查询效率,只简化了用户操作. 对视图的操作 ...

  9. 【MYSQL数据库综合练习】第一部分

    MySQL通关练习题目 运行创建数据库 drop table if exists student; drop table if exists teacher; drop table if exists ...

最新文章

  1. 水磨石地面分隔条设置示意图_水磨石抛光过程中什么时候用百洁垫?什么时候用百亮钢丝棉?...
  2. 程序员应该知道的七个图形工具
  3. Jmeter之函数助手操作
  4. 【大数据、数据挖掘、数据分析】用户画像是什么?如何制作用户画像?
  5. 【排错】IDEA 提示 ‘Optional.get()‘ without ‘isPresent()‘ check错误
  6. pep8 python 编码规范_如何用好python编码规范,写一手漂亮的代码
  7. 解决mysql ERROR 1045(28000)问题【忘记密码,修改配置文件,无密码登录mysql修改密码】
  8. 虚拟机Linux和宿主机传输文件
  9. C++socket编程(八):8.2简单的基于UDP的客户端和服务端
  10. LeetCode从读题到自闭:1. 两数之和
  11. SQL注入漏洞的判断
  12. 【小5聊】HBuilderX下载与简单的Web端浏览器插件开发
  13. shopEx数据库错误,无法连接
  14. 计算机删除默认共享怎样操作,清除windows默认共享方法
  15. 全球及中国单波束回声探测仪行业十四五发展规划及项目前景评估报告2022-2027年
  16. 区块链开发如何选择底层平台和开发语言?
  17. 小王梦游记五---最美丽的湖
  18. VSLAM与VIO的3D建图,重定位与世界观综述
  19. 一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一个人过桥,南侧桥段和北侧桥段较窄只能通过一个人,桥中央一处宽敞,允许两个人通过或歇息。试用P(wait)V(signal)操作实现
  20. 速来领取:有这款日历日程软件,让你成为职场达人

热门文章

  1. 同一个窗口上切换不同界面
  2. 字符串汉字英文数字判断
  3. 剑指offer所有的题目总结
  4. 考研英语筹备 list-1
  5. 西南民族大学校园网网站服务器地址,西南民族大学校园网建设介绍.PDF
  6. 《uni-app》uni-app实现疯狂点赞效果(一)
  7. 本地项目上传到git
  8. 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题解析
  9. 产品沉思录精选:交易平台的金字塔进阶
  10. 时间在说话,叮咚叮咚…