微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL练习题全部

– 1、查询"01"课程比"02"课程成绩高的学生的信息(表列)及课程分数(两个表列)

select st.*,sc.s_score as ‘语文’ ,sc2.s_score ‘数学’
from student st
left join score sc on sc.s_id=st.s_id and sc.c_id=‘01’
left join score sc2 on sc2.s_id=st.s_id and sc2.c_id=‘02’
where sc.s_score>sc2.s_score

思路:

  1. 首先 select 的列名为 学生信息和 课程分数
    student.* ,课程分数01 课程分数02
    2. 需要的表from 学生表和课程表
    student 和 score
    3. 连接方式join 学生表为主表 课程表为副表 left join
    4. 连接条件on s_id 和 c_id
    5. 判断条件 where

– 2、查询"01"课程比"02"课程成绩低(列与列之间的比较可以使用where判断)的学生的信息(列名)及课程分数(列名)

select st.*,sc.s_score ‘语文’,sc2.s_score ‘数学’ from student st
left join score sc on sc.s_id=st.s_id and sc.c_id=‘01’
left join score sc2 on sc2.s_id=st.s_id and sc2.c_id=‘02’
where sc.s_score<sc2.s_score

– 3、查询平均成绩大于等于60分(having)的同学的学生编号(列表)和学生姓名(列表)和平均成绩(列表)

SELECT st.s_id,st.s_name,ROUND(AVG(sc.s_score),2) as “平均成绩”
FROM student st
LEFT JOIN score sc on sc.s_id = st.s_id
group by st.s_id
HAVING AVG(sc.s_score) >= 60

思路:

  1. select 学生编号 学生姓名 平均成绩
    2.from 学生表和 成绩表
  2. 连接方式 左连接

    在这里插入图片描述

各种join的区别

在这里插入图片描述


在这里插入图片描述

left join

在这里插入图片描述


在这里插入图片描述

right join

在这里插入图片描述


在这里插入图片描述

join

在这里插入图片描述


在这里插入图片描述

-6 查询 李姓老师的数量

分析题干 李姓(like ‘李%’)老师的数量(count)
select count(t_id)
from teacher
where t_name like ‘李%’ ;

-7 查询学过 ‘‘张三’’老师授课的同学的信息

分析题干 查询学过 ‘‘张三’’老师(where条件)授课的同学的信息(select 列名)
学生—》老师
student --> score --> course --> teacher

select stu.*
from student stu
join score sc on stu.s_id = sc.s_id
join course co on sc.c_id = co.c_id
join teacher te on co.t_id = te.t_id
where te.t_name = ‘张三’

-8 查询学过 ‘‘张三老师授课的同学的信息’’

分析题干 查询学过 ‘‘张三”老师(where 条件)授课的同学的信息(select 列名)

同学的id 在没有在老师教的学生id当中
方法
select *
from student
where s_id not in (
select stu.s_id from
student stu
join score sc on stu.s_id = sc.s_id
join course co on sc.c_id =co.c_id
join teacher te on co.t_id = te.t_id
where te.t_name = ‘张三’
)

方法
select st.*
from student st
where st.s_id not in(

select sc.s_id
from score sc
where sc.c_id in (

    select c.c_id 
		from course c 
		left join teacher t on t.t_id=c.t_id 
		where  t.t_name="张三"
		
)

)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐