嵌套查询,相关子查询(EXISTS)

  • Post author:
  • Post category:其他


use SRS
--查询每门课程的平均分,显示课程名,平均分    dept   是系别     cn是课程

select CN,avg(grade) 平均分
from  c inner join sc on c.cno=sc.CNo
group by CN

---【例4-27】  从数据表T中查询与教师“赵乾”同系的教师名称与职称。

select tn,prof
from t
where dept=(select dept from t where tn='赵乾')  and TN<>'赵乾'
--      【例4-28】  从数据表S,SC中查询选修了课程“C0201”的学生姓名
-- any 相当于  or
select SN
from S
where sno=any(select SNo from SC where cno='C0201')     


select SN
from S
where sno in (select SNo from SC where cno='C0201')
--【例4-29】  从数据表 T 中查询其他系中比自动化系所有教师工资都高的教师的   姓名与工资
--all相当于 and

select tn,sal
from t
where sal> all(select sal from t where Dept='自动化')  
 

select tn,sal
from t
where sal>(select max(sal) from t where Dept='自动化')  


--1.查询和“冯明”一个系的学生的学号、姓名。
select sno,sn
from s
where dept=(select Dept from s where SN='冯明')

--2、查询讲授课程号为“C0201”的教师姓名。  连接两个表

select TN
from T
where TNo in (select TNo from Tc inner join SC on tc.cno=sc.cno  where tc.CNo='C0201')   

--3、检索考试成绩在80分以上的学生信息(学号、姓名、系别)。

select SN,SNo,Dept 
from S
where sno = any(select SNo from SC  where grade>80)

--4、查询年龄大于所有学生平均年龄的学生信息(学号、姓名、年龄)
select SN,SNo,Age 
from S
where age>all(select AVG(Age) from S  )

--5、查询成绩最高的学生的学号和姓名。

select sno from sc where grade =(select MAX(Grade) from SC)


select SN,SNo
from S
where SNo=(select sno from sc where grade =(select MAX(Grade) from SC))

--6、将tc表中教师李离的授课课程改为信息安全基础
update  tc
set CNo=(select CNo from c where cn='信息安全基础')
where TNo=(select t.TNo from t inner join TC on t.TNo=tc.TNo where TN='李离')

--1、查询不讲授课程号为“C0201”的教师姓名
select TN
from T
where TNo <> all(select TNo from Tc inner join SC on tc.cno=sc.cno  where tc.CNo='C0201')   

--2、查询没有教师教授的课程号和课程名
select cn,cno
from c
where CNo <>all (select tc.CNo from tc inner join C on tc.CNo=c.CNo )


select cn,cno
from c
where not exists (select * from tc where tc.CNo=c.CNo )


--相关子查询
--【例4-30】  从数据表 S,SC 中查询没有选修课程“C0201”的学生姓名。
SELECT DISTINCT SN
FROM S
WHERE NOT EXISTS(SELECT *
			FROM SC
			WHERE SNo=S.SNo AND CNo='C0201')




版权声明:本文为Wangfuqiangqiang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。