MySQL实际面试题!

实际面试题解析分享

已知如下:

学生表(学号、姓名):student(stu_no,stu_name),

科目表(课程ID,课程名称):course(c_id,c_name),

成绩(成绩ID,学号,课程,分数:grade(g_id,stu_no,c_id,fraction)

student表如下

stu_nostu_name
1张三
2李四
3王五
4赵六

course表如下

c_idc_name
1语文
2数学
3英语

grade表如下

g_idstu_noc_idfraction
11170
22260
33299
44350
52240
61366

1,查询所有姓张的学生姓名;

#首先根据题目信息 ,我们只需要查询 “student”表中姓名字段为姓张的字段即可
#姓张的姓名字段 我们可以用到模糊查询的用法
# 模糊查询 like:% 表示任意个任意字符

select stu_name from student where stu_name like '张%';

2,查询有语文课程的学生学号和姓名;

#首先这题涉及到的字段分别在不同表中,所以可以使用表连接完成
#这里用到了一个多表连接

select s.stu_no,s.stu_name from student s left join grade g on s.stu_no = g.stu_no left join course c on 
g.c_id = c.c_id and c.c_name = "语文";

3,展示每个学生的学号、姓名、总成绩、平均分,并按总分从高到低排序;

#这题也需要使用到一个多表连接
#这边需要用到一个平均值函数avg 一个求和函数sum

select s.stu_no,s.stu_name,sum(g.fraction),avg(g.fraction) from student s inner join
grade g on s.stu_no = g.stu_no inner join course on  c g.c_id = c.c_id order by sum(g.fraction)  desc;

4,查询出所有科目成绩都在80分以上的学生姓名;

#这边我们可以使用一个子查询的方法
#先查出成绩大于80的同学的id 再查出id在这个范围内的人

select stu_name from student where stu_no in (select  stu_no from grade where fraction > 80);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值