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 版权协议,转载请附上原文出处链接和本声明。