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

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.snofrom j_score as s,j_course as c,j_teacher as twhere 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.snofrom j_score as b JOIN j_score as con b.sno=c.snowhere 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.cnofrom j_course as cwhere c.tno in (select d.tnofrom j_teacher as dwhere d.tname='叶平')))

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

select a.sno,a.sname
from j_student as a
where a.sno in (select b.snofrom j_score as b join j_score as con b.sno=c.snowhere 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.snofrom j_score as bgroup by b.snohaving max(b.score)<60)

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

select a.sno,a.sname
from j_student as a
where a.sno in (select b.snofrom j_score as bgroup by b.snohaving 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.ssexfrom j_student a join j_student bon a.sno=b.snowhere a.sname=b.sname and a.ssex=b.ssexgroup 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.cnofrom j_course cwhere c.tno = (select d.tnofrom j_teacher dwhere 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 bwhere 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.snofrom j_score bwhere b.cno not in (select c.cnofrom j_course cwhere c.tno not in (select d.tnofrom j_teacher dwhere 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) maxfrom j_score group by cnoorder by count(cno) desc limit 0,1)d
)
order by count(a.cno) desc

MySQL练习题 (练习表+题目+答案)相关推荐

  1. 查询计算机系和英语系的学生信息,MySQL练习题1

    以下SQL操作均在MYSQL上测试过 首先是表定义 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMA ...

  2. 计算机二级mysql大题_2016年计算机二级MySQL练习题及答案

    1[填空题]数据库系统的三级模式结构是指数据库系统是由________.________和________三级构成. 参考解析:模式 外模式 内模式 2[简答题]请简述PHP是什么类型的语言? 参考解 ...

  3. mysql练习题及答案_mysql练习题及答案.doc

    mysql练习题及答案 mysql练习题及答案 mysql查询语句练习题 Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT 10 是 否 是 是 是 ...

  4. 二级mysql大题_全国计算机等级考试二级MySQL练习题及答案

    下半年的计算机等级考试将在九月份举行,下面小编为大家带来了全国计算机等级考试二级MySQL练习题及答案,欢迎大家阅读! 全国计算机等级考试二级MySQL练习题及答案 一.选择题 1.在MySQL中,通 ...

  5. Java程序设计课程练习题(题目+答案)

    Java程序设计课程练习题(题目+答案) 0401 1.Description 编写一个Java程序,输入一个整数n(1 <= n <= 1000),如果n是奇数, 输出 1+3+5+.. ...

  6. MySQL等级考试题目练习_全国计算机等级考试二级MySQL练习题

    全国计算机等级考试二级MySQL练习题 为了使广大考生在备战计算机等级考试时,更快的掌握相应知识点,下面是小编搜索整理的全国计算机等级考试二级MySQL练习题,供参考练习,预祝考生们考出自己理想的成绩 ...

  7. 数据库系统原理与应用教程(058)—— MySQL 练习题(二):单选题

    数据库系统原理与应用教程(058)-- MySQL 练习题(二):单选题 1.在成绩表中查询绩点在 3.7-4.0 之间,并且挂科数为 0 的学生的所有信息.下列SQL语句不正确的是(D). A.SE ...

  8. mysql练习题练习

    1.数据库是按照原文制作的,表格结构一样具体存储的数据有些差异 原文地址:MySQL练习题 原答案地址:MySQL练习题参考答案 2.查询"生物"课程比"物理" ...

  9. MYSQL练习题:第二高的薪水(查找第N高的数)

    其他相关的文章收集: SQL数据库语法及题目汇总 目录 题目 答案 方法一: MAX 方法二: limit offset 方法三: limit 方法四:窗口函数dense_rank 本题注意点:关于i ...

  10. Mysql窗口函数 (知识点梳理+题目解析+面试实战)(四万字长文,一文读懂,建议收藏后食用)

    前言: 本文章是原创50篇时开启的纪念作,之前的文章基本5000字,而本篇约4.5万字,真一篇顶九篇. 窗口函数作为Mysql 8的新特性以及面试笔试的重点,掌握并且进行来练习是非常有必要的.本文章详 ...

最新文章

  1. 简洁高效的linux kfifo环形缓冲区
  2. 15.1-15.3 FTP,使用vsftpd搭建FTP服务
  3. 恋愛SLG-「猫セット」ゲットチャレンジ!
  4. python 数学符号读法大全_math_数字与数学 | Numeric Mathematical_Python_参考手册_非常教程...
  5. rman-incarnation
  6. php面试题汇总一(基础篇附答案)
  7. 三维重建的定位定姿算法
  8. python numpy 矩阵运算_NumPy向量和矩阵的运算
  9. php中的refresh,PHP mysqli_refresh() 函数用法及示例
  10. 微信屏蔽跳去App Store链接的解决方法
  11. 提取ansible hosts分组IP
  12. 使用itextpdf实现横板PDF文件与竖版PDF文件的相互转换
  13. 红外万能遥控器3.0,给家里带遥控器的家电赋能
  14. EtherCAT主站SOEM在Ubuntu上的移植
  15. ios微信多开教程(最简单实用 亲测可用)
  16. .net core 使用 Hangfire 实现定时、延时任务
  17. 工业机器人与视觉实训平台
  18. ffmpeg解析视频的每一帧(java )
  19. vscode用tensorboard报错 We failed to start a TensorBoard session due to the following error: Command fa
  20. 2022-02-15

热门文章

  1. 为何恒星/太阳(辐射)可以被视为黑体(辐射)?
  2. Android ndk下载和环境配置
  3. 游戏帐号被盗,但是杀毒软件没有发现病毒?DNS挟持盗号原理剖析
  4. Ubuntu下截图贴图软件——flameshot
  5. 如何给绘制好的CAD图纸设置密码?
  6. ubuntu desktop 12 lts 安装 vmplayer 问题
  7. win10系统开启扫描仪服务器,Win10系统下如何使用扫描仪|win10系统中扫描仪的使用方法...
  8. 【2020年“科创中国”】先导技术榜单、新锐企业榜单、产学研融通组织榜单发
  9. CMMI3 和 CMMI 4
  10. excel一列求和_学会这15组Excel函数,解决数据分析中80%的难题