培训机构常见sql查询练习题目,你会做吗?

练习下常见的sql查询,总有你意想不到的收获!
对于一些复杂的查询,学会拆解,先查询部分数据,在逐步组合成完整查询,重点是学习实现的思路
不要背答案,学会理解

后面会给出练习的sql和答案,先自己尝试一下吧

一、班级、学生、成绩表查询

已知以下表结构

班级表(class)

编号班级名称
idclass_name
1一班
2二班
3三班
4四班
5五班

学生表(student)

编号学号姓名性别所属班级
idstu_nostu_namestu_genderclass_id
12020001张三1
22020002李四1
32020003李丽2
42020004赵婷3
52020005王五3

成绩表(score)

学生语文数学
stu_idchinesemath
17047
28060
35082
48090

业务场景限制:

  1. 一个班级有多名学生,一名学生只属于一个班级
  2. 学生有可能没有成绩

题目:

  1. 查询所有学生的信息(学号,姓名,性别,班级名称)

  2. 查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数,数学分数)

  3. 查询语文分数比“张三”高的学生(学号,姓名,性别,班级名称,语文分 数)

  4. 查询各科都合格(分数>=60)的学生(学号,姓名,语文分数,数学分数)

  5. 查询出所有班级的人数(若没有人,人数显示为0)

  6. 查询班级人数>=2的班级(班级编号,班级名称,人数)

二、学生、课程、成绩、教师表查询

有以下四个表,表名称及表结构如下:

student(sno,sname,sage,ssex) 学生表
course(cno,cname,tno) 课程表
sc(sno,cno,score) 成绩表
teacher(tno,tname) 教师表
  1. 查询课程1的成绩比课程2的成绩高的所有学生的信息

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

  3. 查询学过‘李四’老师所教所有课程的所有同学的学号,姓名

  4. 查询姓“李”得老师的个数

  5. 查询每门课程的选修人数(课程名称,学生数量)–存在没有人选的课程

  6. 删除“1002”同学的“1”课程的成绩

  7. 查询选修人数最多的课程(课程id,课程名称,学生数量)–考虑有多门课程都是选修最多的情况

三、学生成绩表(student_score) 查询

下面是学生成绩表(student_score)结构说明

字段名称字段解释字段类型字段长度
student_id学号字符8
student_name姓名字符50
student_gender性别字符(男/女)4
course_id课程号字符5
score分数数值3
ismakeup当前考试是否为补考字符(补考:1;非补考:0)2

下面是课程表(course)说明

字段名称字段解释字段类型字段长度约束
course_id课程号字符5PK
course_name课程名字符30Not null
course_desc课程介绍字符60

1、查找第一次考试后所有需要补考(小于60分)的学生姓名和这门课程的名称和成绩;

2、查询每个学生第一次考试后需要补考(小于60分)的课程平均分和科目数

3、查询所有参加了补考的学生的学生姓名,课程名称,补考成绩和非补考成绩;

四、成绩表(score)查询

有一张表score,三个字段名,姓名,课程,分数,数据如下,请写一条sql语句,查询出每门课程都大于等于80分的学生信息

namecoursescore
张三语文81
张三数学75
李四语文76
王五语文81
王五数学100
王五英语90

五、 学生表(student)查询

有一张表student,包括字段id和name,请写一条sql语句,将表中name字段中重复的记录删除,只保留重复数据中的id最大的那一条数据。

idname
1张三
2张三
3李四
4王五
5王五
6王五

要求只留下:2 张三, 3 李四, 6 王五 这三条记录

六、 部门员工表(emp、dept)查询

emp:

empno int(员工编号) ,ename varchar(50)(员工姓名) ,job varchar(100) (工作岗位),mgr int (上级领导编号),hiredate date(雇佣日期),sal int(薪金),comm int(佣金) deptno int (部门编号)

提示:工资=薪金+佣金

dept表:

deptno int (部门编号) , dname 部门名称 loc 地点

  1. 列出在每个部门工作的员工数量,平均工资
  2. 列出所有员工的姓名,部门名称和工资
  3. 列出所有部门的详细信息和部门人数
  4. 列出各种工作的最低工资
  5. 列出各个部门的manager的最低薪金(若是manager,其job的值为manageer)
  6. 列出受雇日期早于其直接上级的所有员工
  7. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
  8. 列出所有‘clerk’(办事员)岗位的姓名以及部门名称
  9. 列出最低薪金大于6500的各种工作
  10. 列出在研发部工作的员工的姓名,假定不知道销售部的部门编号

七、SQL数据库表名为guest,请简答

账号消费时间金额班次
accountsdetailsdatemoneyclass
s0001房费2020-01-01280001
s0001酒水2020-01-02120001
s0001房费2020-01-08300003
s0002酒水2020-01-2950
s0003房费2020-01-31180002
s0004房费2020-02-01230001
s0005酒水2020-02-01100
s0005房费2020-02-02128001
  1. 查询出房费都大于200的账号
  2. 查询出1月份每个账号酒水和房费的总金额
  3. 将不是房费的班次都更改为‘001’
  4. 查询出消费都大于100的账号

数据库脚本和答案来了
https://blog.csdn.net/shuai8624/article/details/116854237

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

臭小子帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值