MySQL练习题 (练习表+题目+答案)「建议收藏」

MySQL练习题 (练习表+题目+答案)「建议收藏」mysql练习题(表+题目+答案)一、创建所需要练习的表CREATETABLEJ_TEACHER(tnointNOTNULLPRIMARYKEY,tnamevarchar(20)NOTNULL);INSERTINTOJ_TEACHER(tno,tname)VALUES(1,‘张老师’);INSERTINTOJ_TEACHER(tno,tname)VAL…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

mysql练习题 (表+题目+答案)

一、创建所需要练习的表

CREATE TABLE J_TEACHER (
tno int NOT NULL PRIMARY KEY,
tname varchar(20) NOT NULL
);

INSERT INTO J_TEACHER(tno,tname)VALUES(1,‘张老师’);
INSERT INTO J_TEACHER(tno,tname)VALUES(2,‘王老师’);
INSERT INTO J_TEACHER(tno,tname)VALUES(3,‘李老师’);
INSERT INTO J_TEACHER(tno,tname)VALUES(4,‘赵老师’);
INSERT INTO J_TEACHER(tno,tname)VALUES(5,‘刘老师’);
INSERT INTO J_TEACHER(tno,tname)VALUES(6,‘向老师’);
INSERT INTO J_TEACHER(tno,tname)VALUES(7,‘李文静’);
INSERT INTO J_TEACHER(tno,tname)VALUES(8,‘叶平’);

CREATE TABLE J_STUDENT(
sno int NOT NULL PRIMARY KEY,
sname varchar(20) NOT NULL,
sage datetime NOT NULL,
ssex char(2) NOT NULL
);

INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(1,‘张三’,‘1980-1-23’,‘男’);
INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(2,‘李四’,‘1982-12-12’,‘男’);
INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(3,‘张飒’,‘1981-9-9’,‘男’);
INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(4,‘莉莉’,‘1983-3-23’,‘女’);
INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(5,‘王弼’,‘1982-6-21’,‘男’);
INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(6,‘王丽’,‘1984-10-10’,‘女’);
INSERT INTO J_STUDENT(sno,sname,sage,ssex) VALUES(7,‘刘香’,‘1980-12-22’,‘女’);

CREATE TABLE J_COURSE(
cno int NOT NULL PRIMARY KEY,
cname varchar(20) NOT NULL,
tno int NOT NULL
);

insert into J_COURSE(cno,cname,tno) values(1,‘企业管理’,3);
insert into J_COURSE(cno,cname,tno) values(2,‘马克思’,1);
insert into J_COURSE(cno,cname,tno) values(3,‘UML’,2);
insert into J_COURSE(cno,cname,tno) values(4,‘数据库’,5);
insert into J_COURSE(cno,cname,tno) values(5,‘物理’,8);

CREATE TABLE J_SCORE(
sno int NOT NULL,
cno int NOT NULL,
score int NOT NULL
);

ALTER TABLE J_SCORE ADD CONSTRAINT FK_SCORE_course FOREIGN KEY(cno)
REFERENCES J_COURSE (cno);
ALTER TABLE J_SCORE ADD CONSTRAINT FK_score_student FOREIGN KEY(sno)
REFERENCES J_STUDENT (sno);

INSERT INTO J_SCORE(sno,cno,score)VALUES(1,1,80);
INSERT INTO J_SCORE(sno,cno,score)VALUES(1,2,86);
INSERT INTO J_SCORE(sno,cno,score)VALUES(1,3,83);
INSERT INTO J_SCORE(sno,cno,score)VALUES(1,4,89);

INSERT INTO J_SCORE(sno,cno,score)VALUES(2,1,50);
INSERT INTO J_SCORE(sno,cno,score)VALUES(2,2,36);
INSERT INTO J_SCORE(sno,cno,score)VALUES(2,3,43);
INSERT INTO J_SCORE(sno,cno,score)VALUES(2,4,59);

INSERT INTO J_SCORE(sno,cno,score)VALUES(3,1,50);
INSERT INTO J_SCORE(sno,cno,score)VALUES(3,2,96);
INSERT INTO J_SCORE(sno,cno,score)VALUES(3,3,73);
INSERT INTO J_SCORE(sno,cno,score)VALUES(3,4,69);

INSERT INTO J_SCORE(sno,cno,score)VALUES(4,1,90);
INSERT INTO J_SCORE(sno,cno,score)VALUES(4,2,36);
INSERT INTO J_SCORE(sno,cno,score)VALUES(4,3,88);
INSERT INTO J_SCORE(sno,cno,score)VALUES(4,4,99);

INSERT INTO J_SCORE(sno,cno,score)VALUES(5,1,90);
INSERT INTO J_SCORE(sno,cno,score)VALUES(5,2,96);
INSERT INTO J_SCORE(sno,cno,score)VALUES(5,3,98);
INSERT INTO J_SCORE(sno,cno,score)VALUES(5,4,99);

INSERT INTO J_SCORE(sno,cno,score)VALUES(6,1,70);
INSERT INTO J_SCORE(sno,cno,score)VALUES(6,2,66);
INSERT INTO J_SCORE(sno,cno,score)VALUES(6,3,58);
INSERT INTO J_SCORE(sno,cno,score)VALUES(6,4,79);

INSERT INTO J_SCORE(sno,cno,score)VALUES(7,1,80);
INSERT INTO J_SCORE(sno,cno,score)VALUES(7,2,76);
INSERT INTO J_SCORE(sno,cno,score)VALUES(7,3,68);
INSERT INTO J_SCORE(sno,cno,score)VALUES(7,4,59);
INSERT INTO J_SCORE(sno,cno,score)VALUES(7,5,89);

创建后结果(作者用的mysql)

J_TEACHER
MySQL练习题 (练习表+题目+答案)「建议收藏」

J_STUDENT
在这里插入图片描述
J_COURSE
在这里插入图片描述
J_SCORE
在这里插入图片描述

二、题目和过程答案

作者用的mysql 不同数据库有些语法可能会不同,请注意。

1、查询课程1的成绩比课程2的成绩 高 的所有学生的学号。

select a.sno
from j_score as a JOIN j_score as b 
on a.sno=b.sno
where a.cno=1 and b.cno=2 and a.score>b.score]

2、查询平均成绩大于60分的同学的学号和平均成绩。

SELECT a.sno,AVG(a.score)as '平均成绩'
from j_score as a
group by a.sno
having avg(a.score)>60

3、查询所有同学的学号、姓名、选课数、总成绩。

select a.sno,a.sname,count(b.cno)as'选课数',sum(b.score)as'总成绩'
from j_student as a join j_score as b 
on a.sno=b.sno
group by a.sno 

4、查询姓“李”的学生的个数。

select COUNT(a.sname) as '个数'
from j_student as a
where a.sname like '李%'

5、查询没学过“叶平”老师课的同学的学号、姓名。

SELECT a.sno,a.sname
from j_student as a
where a.sno not in (	
	select s.sno
	from j_score as s,j_course as c,j_teacher as t
	where s.cno=c.cno and c.tno=t.tno and t.tname='叶平')

6、查询同时学过课程1和课程2的同学的学号、姓名。

SELECT a.sno,a.sname
from j_student as a
where a.sno in (
	select b.sno
	from j_score as b JOIN j_score as c
	on b.sno=c.sno
	where b.cno=1 and c.cno=2)

7、查询学过“叶平”老师所教所有课程的所有同学的学号、姓名。

select a.sno,a.sname
from j_student as a
where a.sno in (
	SELECT b.sno 
	from j_score as b 
  where b.cno in (
		SELECT c.cno
		from j_course as c
		where c.tno in (
			select d.tno
			from j_teacher as d
			where d.tname='叶平')))

8、查询 课程编号1的成绩 比 课程编号2的成绩 高的所有同学的学号、姓名。

select a.sno,a.sname
from j_student as a
where a.sno in (
	select b.sno
	from j_score as b join j_score as c
	on b.sno=c.sno
	where b.cno=1 and c.cno=2 and b.score>c.score)

9、查询所有课程成绩小于60分的同学的学号、姓名。

select a.sno,a.sname
from j_student as a
where a.sno in (
	select b.sno
	from j_score as b
	group by b.sno
	having max(b.score)<60)

10、查询所有课程成绩大于60分的同学的学号、姓名。

select a.sno,a.sname
from j_student as a
where a.sno in (
	select b.sno
	from j_score as b
	group by b.sno
	having min(b.score)>60)

11、查询没有学全所有课的同学的学号、姓名

select a.sno,a.sname
from j_student as a,
		(select b.sno,b.cno,count(b.cno)as 'yixuan' from j_score as b group by b.sno)c,
		(SELECT d.cno,count(d.cno)as 'total' from j_course as d)e
where a.sno=c.sno and c.cno=e.cno and c.yixuan<e.total

12、查询至少有一门课程 与 学号为1的同学所学课程 相同的同学的学号和姓名

select a.sno ,a.sname
from j_student a ,j_score b
where a.sno=b.sno and a.sno<>1 and b.cno in 
	(select c.cno from j_score c where c.sno =1)
group by a.sno```

13、查询和2号同学学习的课程完全相同的其他同学学号和姓名。

select a.sno ,a.sname
from j_student a ,j_score b
where a.sno=b.sno and a.sno<>2 and b.sno not in 
	(select c.sno from j_score c where c.cno not in 
		(select d.cno from j_score d where d.sno=2)) 
group by a.sno
having count(a.sno)=(select count(d.cno) from j_score d where d.sno=2)

14、查询各科成绩最高分和最低分。
以如下形式显示:课程号,最高分,最低分

select a.cno,max(a.score) as '最高分', min(a.score) as '最低分'
from j_score a
group by a.cno

15、查询每门课程被选修的学生数。

select a.cname,count(b.sno)
from j_course a,j_score b
where b.score is not NULL and a.cno=b.cno
group by a.cno

16、查询出只选修了一门课程的全部学生的学号和姓名。

select a.sno,a.sname
from j_student a ,j_score b
where a.sno=b.sno and b.score is not null 
group by a.sno
having count(b.cno)=1

17、查询同名同性学生名单,并统计同名人数。

select t.sname ,t.ssex ,count(t.sname) 
from  (select a.sno,a.sname,a.sage,a.ssex
		from j_student a join j_student b
		on a.sno=b.sno
		where a.sname=b.sname and a.ssex=b.ssex
		group by a.sno)t
group by t.sname ,t.ssex 
having count(t.sname) > 1 

18、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩。

select a.sname,max(b.score)
from j_student a,j_score b
where a.sno=b.sno and b.cno = (
	select c.cno
	from j_course c
	where c.tno = (
		select d.tno
		from j_teacher d
		where d.tname='叶平'))

19、查询不同课程成绩相同的学生的学号、课程号、学生成绩。

select a.sno,a.cno,a.score
from j_score a join j_score b
where a.score=b.score and a.cno<>b.cno

20、查询每门课程成绩最好的前两名的学生ID

select a.sno,a.cno,a.score
from j_score a 
where (
	select count(*)
	from j_score b
	where a.cno=b.cno and a.score<=b.score)<=2

21、检索至少选修了5门课程的学生学号。

select a.sno
from j_score a
GROUP BY a.sno
having count(*)>=5

22、查询没学过“叶平”老师讲授的任一门课程的学生姓名。

select a.sname
from j_student a
where a.sno  not in (
	select b.sno
	from j_score b
	where b.cno not in (
		select c.cno
		from j_course c
		where c.tno not in (
			select d.tno
			from j_teacher d
			where d.tname='叶平')))

23、查询两门以上不及格课程的同学的学号及其平均成绩。

select a.sno,round(avg(a.score),3) as'平均成绩'
from j_score a 
where a.score<60 
group by sno 
having count(*)>2

24、查询最受欢迎的老师(选修学生最多的老师)。

select a.cno,c.tname,count(a.cno) as '选修人数'
from j_course a,j_score b,j_teacher c
where a.cno=b.cno and a.tno=c.tno 
group by a.cno
having count(a.cno) = 
(
	select d.max from ( 
		select count(cno) max
		from j_score 
		group by cno
		order by count(cno) desc 
		limit 0,1)d
)
order by count(a.cno) desc
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192150.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月18日 上午11:15
下一篇 2026年1月18日 上午11:43


相关推荐

  • hibernate二级缓存作用、配置

    hibernate二级缓存作用、配置缓存:缓存是什么,解决什么问题?位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为缓存Cache。缓存目的:让数据更接近于应用程序,协调速度不匹配,使访问速度更快。缓存的范围分为3类:1.事务范围(单Session即一级缓存)事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依

    2022年5月10日
    28
  • 2元参数matlab图,实验二用matlab绘制一元函数与二元函数的图象-6页word资料

    2元参数matlab图,实验二用matlab绘制一元函数与二元函数的图象-6页word资料实验二用matlab绘制一元函数与二元函数的图象1.平面曲线的表示形式对于平面曲线,常见的有三种表示形式,即以直角坐标方程],[),(baxxfy∈=,以参数方程],[),(),(battyytxx∈==,和以极坐标],[),(barr∈=??表示等三种形式。2.曲线绘图的MATLAB命令可以用helpplot,helpfplot查阅有关这些命令…

    2025年8月31日
    5
  • docker离线安装「建议收藏」

    docker离线安装「建议收藏」1.下载Docker二进制文件(离线安装包)下载地址:https://download.docker.com/linux/static/stable/x86_64/本文使用/x86_64/docker-17.12.1-ce.tgz,注意对应操作系统类型。2、通过FTP工具将docker-17.12.1-ce.tgz上传到服务器上3、解压安装包tarzxfdocker-17.12.1-ce.tgz4、将docker相关命令拷贝到/usr/bin,方便直接运行命令sudo

    2026年4月14日
    3
  • vscode html注释快捷键_宇宙最强vscode教程(基础篇)

    vscode html注释快捷键_宇宙最强vscode教程(基础篇)本文主要介绍vscode在工作中常用的快捷键及插件,目标在于提高工作效率本文的快捷键是基于mac的,windows下的快捷键放在括号里Cmd+Shift+P(winCtrl+Shift+P)零、快速入门有经验的可以跳过快速入门或者大致浏览一遍1.命令面板命令面板是vscode快捷键的主要交互界面,可以使用f1或者Cmd+Shift+P(winCtrl+Shift+P)打开。在命令…

    2022年6月9日
    52
  • tk域名免费注册_tk域名注册教程

    tk域名免费注册_tk域名注册教程1.申请免费域名进入http://www.dot.tk(推荐注册tk域名),申请一个新的域名,每次申请12个月以下是免费的,到期前14天可以免费续期在此页面执行下一步之前,需要进行设置DNS服务器2.获取DNS服务器申请进入http://freewebhostingarea.com/,如下图填写刚刚申请的域名,然后按PROCEED继续跳转至下一页提示:3.根据下…

    2022年10月8日
    7
  • shell脚本基本语法详解

    shell脚本基本语法详解编写shell脚本的时候,最前面要加上一行:#!/bin/bash,因为linux里面不仅仅只有bash一个解析器,还有其它的,它们之间的语法会有一些不同,所以最好加上这一句话,告诉系统要用这个解析器。一.shell变量shell变量和一些编程语言不同,一般shell的变量赋值的时候不用带“$”,而使用或者输出的时候要带“$”。加减乘除的时候要加两层小括号。括号外面要有一个“$”,括号里面的变量可以

    2022年7月26日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号