SQL笔试:Student学生表,Course 课程表,Sc选课表

发布时间 2023-08-11 13:49:56作者: WeChat——E云

tudent学生表(学号,姓名、性别、年龄、组织部门),Course 课程表(编号,课程名称),Sc选课表(学号,课程编号,成绩)
写一个SQL语句,查询选修了计算机原理的学生学号和姓名
select 学号,姓名 from Student where 学号 in
(select 学号 from Sc where 课程编号 in
(Select 课程编号 from Course where 课程名称 = ‘计算机原理’))
写一个SQL语句,查询“周星驰”同学选修了的课程名字
select 课程名称 from Course where 编号 in (
select Sc.课程编号 from Student,Sc where Student.姓名=’周星驰’ and Student.学号 = Sc.学号)
写一个SQL语句,查询选修了5门课程的学生学号和姓名
Select 学号,姓名 from Student where 学号 in (
Select 学号,count(课程编号) from Sc group by 学号 having count(课程编号)>=5)

Student(S#,Sname,Sage,Ssex)学生表
S#:学号
Sname:学生姓名
Sage:学生年龄
Ssex: 学生性别
Course(C#,Cname,T#)课程表
C#,课程编号;
Cname:课程名字;
T#:教师编号;
SC(S#,C#,score)成绩表
S#:学号;
C#,课程编号;
Score:成绩;
Teacher(T#,Tname)教师表
T#:教师编号;
Tname:教师名字

查询“001”课程比“002”课程成绩高的所有学生学号
select SC1.S#
from SC SC1 JOIN SC SC2 ON SC1.S#=SC2.S#
WHERE SC1.C#=‘001’ AND SC2.C#=‘002’ AND SC1.score>SC2.score

查询平均成绩大于60分的同学的学号和平均成绩
select S#,AVG(score) 平均成绩
from SC
group by S#
having AVG(score)>60

查询所有同学的学号、姓名、选课数、总成绩
select Student.S#,Sname,COUNT(*) 选课数,SUM(score) 总成绩
from Student JOIN SC on Student.S#=SC.S#
group by Student.S#,Sname

查询姓“李”的老师的个数
Select count(*) from Teacher where Tname like ‘李%’;

查询没学过“叶平”老师课的同学的学号、姓名
SELECT stu2.s#,stu2.stuname FROM Student stu2 WHERE stu2.s# NOT IN
(SELECT DISTINCT stu.s# FROM student stu, course c,teacher tea,score score
WHERE stu.s#= score.s# AND course.c#= score.c#
AND tea.t#= course.t#AND tea.tname= ‘叶平’ )