数据库SQL查询作业

--设有三个关系
--S(S#,SNAME,AGE,SEX)
--SC(S#,C#,GRADE)
--C(C#,CNAME,TEACHER)

--(1)检索LIU老师所授课程的课程号、课程名
select c#,cname from c
where teacher='LIU'
--(2)检索年龄大于23岁的男同学的学号和姓名
select s#,sname from s
where age>23 and sex='男'
--(3)检索学号为S3学生所学课程的课程名与任课教师名
select cname,teacher from c,sc
where c.c#=sc.c# and s#='s3'
--(4)检索至少选修LIU老师所授课程中一门课程的女学生的姓名
--1.嵌套查询
select sname from s
where sex='女' and s# in
(select s# from sc where c# in
(select c# from c where teacher='LIU'))
--2.多表联合查询
select sname from s,sc,c 
where s.s#=sc.s# and sc.c#=c.c# and teacher='LIU' and s.sex='女'
--(5)检索王同学不学的课程号
--1.
select c# from c where c# not in
(select c# from sc where s# in 
(select s# from s where sname='wang'))
--2.
select c# from sc where c# not in
(select c# from s,sc where s.s#=sc.s# and sname='wang') 
--(6)检索至少选修两门课程的学生学号
select distinct x.s# from sc x,sc y
where x.s#=y.s# and x.c#!=y.c#
--(7)检索全部学生都选修的课程的课程号与课程名
--1.
select c.c#,cname
from sc,c
where sc.c#=c.c#
group by c.c#,cname 
having COUNT(*)=(select COUNT(*)from s)
--2.
select c#,cname from c
where not exists
(select * from s
where s# not in
(select * from sc where sc.c#=c.c#));
--(8)检索选修课程包含LIU老师所授课程的学生学号
select distinct s# from sc
where c# in
(select c# from c
where teacher='liu');

猜你喜欢

转载自blog.csdn.net/Liuyaoyun/article/details/83684119