导读:思百遍,练千遍,循序渐进,终有所成。加油-陌生人

一、创建数据库

CREATE DATABASE IF NOT EXISTS XSCJ DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;

二、创建各个表格及数据

1、xs表

create table XS(学号 int(6) not null primary key ,\姓名 char(8) not null,\专业名 char(8) not null,\性别 char(2) not null,\出生时间 date not null,\总学分 int(4) not null,\照片 blob,\备注 char(30));

数据

insert into xs values(081101,'王林','计算机','男','1990-02-10',50,null,null),\(081102,'程明','计算机','男','1991-02-1',50,null,null),\(081103,'王燕','计算机','女','1989-10-06',50,null,null),\(081104,'韦艳萍','计算机','男','1990-08-26',50,null,null),\(081106,'李方方','计算机','男','1990-11-20',50,null,null),\(081107,'李明','计算机','男','1990-05-1',54,null,'提前修完《数据结构》'),\(081108,'林一凡','计算机','男','1989-08-5',52,null,'已提前修完一门课'),\(081109,'张强民','计算机','男','1989-08-11',50,null,null),\(081110,'张威','计算机','女','1991-07-22',50,null,'三好生'),\(081111,'赵琳','计算机','女','1990-03-18',50,null,null),\(081113,'嫣红','计算机','女','1989-08-11',48,null,'有一门功课不及格待考'),\(081201,'王敏','通信工程','男','1989-06-10',42,null,null),\(081202,'王林','通信工程','男','1989-01-29',40,null,'有一门功课不及格待考');

2、kc表

create table KC(课程号 int(6) not null primary key ,\课程名 char(8) not null,\开课学期 int(4) not null,\学时 int(4) not null,\学分 int(3));

数据

insert into KC values(101,'计算机基础',1,80,5),\(102,'程序设计语言',2,68,4),\(206,'离散数学',4,68,4),\(208,'数据结构',5,68,4),\(209,'操作系统',6,68,4),\(210,'计算机原理',5,85,5),\(212,'数据库原理',7,68,4),\(301,'计算机网络',7,51,3),\(302,'软件工程',7,51,3);

3、xs_kc表

create table XS_KC(学号 int(6) not null,\课程号 int(8) not null,\成绩 int(4) not null,\学分 int(3));

数据

insert into XS_KC values(081101,101,80,5),\(081101,102,78,4),\(081101,206,76,4),\(081102,102,78,4),\(081102,206,78,4),\(081103,101,62,5),\(081103,102,70,4),\(081103,206,81,4);

三、解题方式

1、#查询xs表中各个同学的姓名、专业名、总学分

select 姓名,专业名,总学分
from xs;

2、#查询xs表中计算机系同学的学号、姓名、总学分,结果中各列的标题分别制定为number、name、mark

select 学号 as number,姓名 as name,总学分 as mark
from xs;

3、#查询xs表中计算机系各同学的学号、姓名、总学分,对其总学分按一下规则进行替换:若总分数位为空值,替换为“尚未选课”;若总学分小于50,替换为“不及格”;若总学分在50~52之间,替换为“合格”;总学分大于52替换为优秀,。列标题改为等级。

select 学号,姓名,总学分,
case
when 总学分 is null then '尚未选课'
when 总学分 < 50 then  '不及格'
when 总学分>=50 and 总学分<=52 then '合格'
when 总学分>52 then '优秀'
end as 等级
from xs;

4、#按120分计算成绩,显示xs_kc表中的学号为081101的学生课程信息。

select kc.*,xs_kc.成绩
from xs join xs_kc on xs.学号 = xs_kc.学号 join kc on xs_kc.课程号=kc.课程号
where xs.学号=081101;

5、 #对xs表只选择专业名和总学分,消除结果集中的重复行

select distinct 专业名,总学分
from xs;

6、#求学生的总人数

select count(*) as 总人数
from xs;

7、 #统计备注不为空的学生数目

select  count(*) as 备注不为空
from xs
where 备注 IS NOT NULL;

8、#统计总学分在50分以上的人数

select count(总学分>50 or null) as 总学分50分以上
from xs;

9、 #求选修101课程的学生所学课程的最高分和最低分

select max(成绩),min(成绩)
from xs_kc
where 课程号=101;

10、 #求学号081101的学生所学课程的总成绩

select sum(成绩) as 总成绩,xs.学号
from xs join xs_kc using(学号)
where 学号=081101;

11、 #求选修101课程的学生的平均成绩

select avg(成绩)
from xs_kc
where 课程号 like 101;

12、 #查询xs表中学号为081101的学生情况

select 学号,姓名,性别,总学分
from xs
where 学号 = 081101;

13、 #查询xs表中总学分大于50的学生情况

select 学号,姓名,性别,总学分
from xs
where 总学分>50;

14、 #查询xs表中备注为空的同学情况

select 学号,姓名,性别,总学分
from xs
where 备注 is null;

15、 #查询xs表中专业为计算机,性别为女的同学情况

select 学号,姓名,性别,总学分
from xs
where 专业名='计算机' and 性别='女';

16、#查询xs_kc表中102和206课程中大于80分的同学的记录

select *
from xs_kc
where (课程号=102 or 课程号=206) and 成绩>80;

17、 #查询表中姓王的学生学号、性别、姓名

select 学号,性别,姓名
from xs
where 姓名 like '王%';

18、 #查询xs表中学号倒数第2位为0的学生学号、姓名、专业名

select 学号,姓名,专业名
from xs
where 学号 like '%0_';

19、#查询xs表中名字包括下划线的学生学号和姓名

select 学号,姓名
from xs
where 姓名 like '%#_%' escape '#';

20、#查询xs表中不在1989年出生的学生情况

select 学号,姓名,性别,出生时间
from xs
where 出生时间 <'1989-1-1' or 出生时间>'1989-12-31';

21、 #查询xs表中专业名为 计算机 通信工程 的学生情况

select 学号,姓名,性别
from xs
where 专业名='计算机' or 专业名='通信工程';

22、 #查询xs中总学分尚不定的学生情况

select 学号,姓名,性别
from xs
where 总学分 is null;

23、 #查找所有学生选过的课程名和课程号

select distinct 课程名,课程号
from xs_kc join kc using(课程号)
where kc.课程号 in (select 课程号 from xs_kc);

24、 #查找选修了206课程且成绩在80分以上的学生姓名、成绩。

select 姓名,成绩
from xs join xs_kc using (学号)
where 课程号=206 and 成绩>80;

25、 #查找选修了 计算机基础 课程且成绩在80分以上的学生学号 、姓名、课程名及成绩

select 学号,姓名,课程名,成绩
from kc join xs_kc using (课程号)
join xs using (学号)
where 课程名='计算机基础' and 成绩>80;

26、 # #查找课程不同、成绩相同的学生的学号、课程号、成绩

select distinct 课程号,学号,成绩
from kc join xs_kc using (课程号)
where 成绩 in (select 成绩 from xs_kc group by 成绩 having count(成绩)>1);

27、 #查找kc表中所有学生选过的课程名

select distinct 课程名
from kc join xs_kc using (课程号);

28、 #查找所有学生情况及他们选修的课程号,若学生为选修任何课,也要包括其情况

select  distinct 姓名,专业名,性别,
case
when xs.学号 not in  (select xs_kc.学号 from xs_kc) then null
when xs.学号 in (select xs_kc.学号 from xs_kc) then xs_kc.课程号
end as 课程号
from xs_kc,xs;

29、 #查找被选修了的课程的选修情况和所有开设的课程名

select distinct 课程名,
casewhen kc.课程号 not in (select 课程号 from xs_kc) then '未被选修'when kc.课程号 in (select 课程号 from xs_kc) then '被选修'end as 是否选修
from kc,xs_kc;

30、 #查找选修了的课程号为206课程的学生的姓名、学号

select 姓名,学号
from xs_kc join xs using (学号)
where 课程号=206;

31、#查找未选修离散数学的学生的姓名、学号、专业名

select 学号,姓名,专业名
from xs where 学号 not in
(select 学号 from xs join xs_kc using (学号) join kc using (课程号) where 课程名='离散数学');

32、#查找选修离了散数学的学生的姓名、学号、专业名

select 姓名,学号,专业名
from xs join xs_kc using (学号) join kc using (课程号)
where 课程名='离散数学';

33、#查找xs表中比所有计算机系的学生年龄都大的学生的学号、姓名、专业名、出生日期

select 学号,姓名,专业名,出生时间
from xs
where 出生时间< all (select 出生时间 from xs where 专业名='计算机');

34、 #查找xs_kc表中课程号206的成绩不低于课程号101的最低成绩的学生的学号

select 学号
from xs_kc
where 课程号=206 and 成绩>(select min(成绩) from xs_kc where 课程号=101);

35、 #查找选修了206号课程的学生姓名

select 姓名
from xs join xs_kc using (学号)
where 课程号=206;

36、 #将xs中各专业名输出

select distinct 专业名
from xs;

37、 #求xs中各专业的学生数

select 专业名,count(专业名) as '各专业的学生数'
from xs
group by 专业名;

38、 #求被选修的各门课程的平均成绩和选修该课程的人数

select count(课程号) as 选修该课程的人数 ,avg(成绩) as 平均成绩
from xs_kc
group by 课程号;

39、#在xs_kc数据库上产生一个结果集,包括每个专业的男生人数、女生人数、总人数、学生总人数

select 专业名,性别,count(*) as 人数
from xs group by 专业名,性别
with rollup ;

40、 #查找平均成绩在85分以上的学生的学号和平均成绩

select 学号,avg(成绩) as 平均成绩
from xs_kc
group by 学号
having avg(成绩)>85;

41、#查找选修课超过2门且成绩都在80分以上的学生的学号

select distinct 学号
from xs_kc
where 成绩>=80
group by 学号 having count(*)>2;

42、 #将通信工程专业的学生按出生时间先后排序

select 出生时间
from xs
where 专业名='通信工程'
order by 出生时间 asc ;

43、 #将计算机专业的学生的 “计算机基础” 课程成绩按降序排列

select 成绩
from xs_kc join kc using (课程号)
where 课程名='计算机基础'
order by 成绩 desc ;

44、 #将计算机专业的学生按其平均成绩排列

select distinct xs_kc.学号,avg(成绩)
from xs_kc,xs
where 专业名='计算机'
group by xs_kc.学号;

45、 #查找xs表中学号最靠前的5为学生信息

select 学号,姓名,性别
from xs
limit 5;

46、 #查找xs表中从第4位同学开始的5位学生的信息

select 学号,姓名,性别
from xs
limit 4,5;

注:上述例题在一心三用中所写,如有错误,烦请指正。

如有更好的解题思路或想法,还请阁下谏言。

MYSQL 思考题5 参考答案相关推荐

  1. 数据库mysql面试题 it_【模块三】数据库篇--MySQL面试题☞参考答案

    [一]初级 [二]中级 执行过程 [1]客户端向MySQL服务器发送一条查询请求 [2]服务器首先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段 [3]服务器进行SQL解析 ...

  2. 数据库原理及应用(MySQL版)MySQL实验指导参考答案(实验一到实验八)

    点赞,收藏,慢慢看. <一>实验一 CREATE DATABASE STUDENTSDB; USE STUDENTSDB; CREATE TABLE STUDENT_INFO(学号 CHA ...

  3. 【大数据存储技术】思考题及参考答案

    文章目录 第1章 绪论 1. NoSQL和关系型数据库在设计目标上有何主要区别? 2. 简要总结一下NoSQL数据库的技术特点. 第2章 NoSQL数据库的基本原理 1. 描述分布式数据管理的特点. ...

  4. 两台具有独立操作系统的计算机,第1章计算机网络习题与思考题参考答案

    <第1章计算机网络习题与思考题参考答案>由会员分享,可在线阅读,更多相关<第1章计算机网络习题与思考题参考答案(4页珍藏版)>请在人人文库网上搜索. 1.第 1 章 计算机网络 ...

  5. MySQL数据库期末考试试题及参考答案(08)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一. 填空题 MySQL用户变量由符号____和变量名组成. MySQL中____循环语句会无 ...

  6. MySQL数据库期末考试试题及参考答案(01)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一. 填空题 ___在20世纪80年代被美国国家标准学会和国际标准化组织定义为关系型数据库语言 ...

  7. MySQL数据库期末考试试题及参考答案(04)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一.填空题 MySQL中提供了____关键字,可以在查询时去除重复的值. 使用ORDER BY ...

  8. MySQL数据库期末考试试题及参考答案(09)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一. 填空题 MySQL提供的____命令可以将数据库导出成SQL脚本,以实现数据的备份. m ...

  9. MySQL数据库期末考试试题及参考答案(07)

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 一. 填空题 如果不想提交当前事务,可以使用_____语句回滚事务. 每个事务都是完整不可分割 ...

  10. mysql数据库应用题库_MySQL数据库及应用题库附参考答案.docx

    MySQL数据库及应用题库附参考答案.docx MySQLMySQL 数据库及应用题库附数据库及应用题库附参考参考答案答案 仅供参考 第一章测验 1 单选 计算机进行数据处理经历了从低级到高级的 __ ...

最新文章

  1. 爱立信前CEO Hans Vestberg成为Verizon三巨头之一
  2. Waymo自动驾驶汽车扎堆冲进死胡同,一天多达50辆,附近居民蚌埠住了
  3. [:zh]<界面编程>任务二 用户注册界面设计[:]2018-01-24
  4. VTK:几何对象之OpenVROrientedCylinder
  5. DOC学习之TrueFFS
  6. 【HDU - 5883】The Best Path(判断欧拉回路)
  7. 计算机视觉实战(十三)停车场车位识别(附完整代码)
  8. MySQL对含有中文字符的字段排序
  9. 【超图+CESIUM】【基础API使用示例】31、超图|CESIUM -【坐标转换】屏幕坐标转世界坐标
  10. 图书管理系统需求分析
  11. DNS(二)--dns的双向解析 内外网访问得到不同ip
  12. 根据银行卡号获取对应的银行信息
  13. 关于先有鸡还是先有蛋问题的科学的探讨
  14. NRF24L01-状态寄存器
  15. springboot生成条形码并直接输出显示
  16. python 单元测试出现 Ran 0 tests in 0.000s OK Empty suite
  17. 网络安全通识全解|第12期 《网络安全审查办法》解读
  18. VCC、 VDD、VEE、VSS
  19. 微信修改文件路径后任务栏图标显示错误
  20. POI 创建Excel 2003 (一)

热门文章

  1. 基于51单片机的指纹考勤系统密码锁门禁原理图PCB程序设计
  2. linux中读写执行的含义,Linux中读写执行权限的真正含义
  3. 2020美亚杯个人赛头脑风暴
  4. android View和ViewGroup创建以及绘制流程
  5. 最前线|库克:苹果正在考虑调整iPhone定价策略
  6. 勾股定理算斜边用计算机怎么按,三角形斜边(直角三角形斜边计算器)
  7. 提供一套基于SpringBoot-shiro-vue的权限管理思路.
  8. Facebook改名,元宇宙非区块链不可
  9. 服务器芯片封装,存储器芯片封装技术详解
  10. python天眼查爬虫_学习Python3 天眼查 爬虫