oralce之复杂查询举例

Posted clnchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oralce之复杂查询举例相关的知识,希望对你有一定的参考价值。

表结构:

S(SNO,SNAME) 代表 学号。学生姓名;

C(CNO,CNAME,CTEACHER) 代表 课号,课程名称。授课老师

SC(SNO,CNO,SCGRADE) 代表 学号。课号。课程成绩


1 查询没选过“黎明”老师的全部学生姓名。

select s.sname
from s
join sc
on sc.sno=s.sno
join c
on c.cno=s.cno
where c.cteacher<>'黎明'

2 查询出2门以上(包括2门)不及格学生的姓名及平均成绩。

select s.sname,c.a_grade
from
(select a.sno,count(cno) 
from
(select sno,cno
from sc
where sc.scgrade<60)
group by a.sno
having count(cno)>1)b
join s
on b.sno=s.sno
join 
(select avg(scgrade) a_grade,sno 
from sc
group by sno)c
on c.sno=s.sno

3 既学过1号课程又学过2号课程的学生姓名;

select s.sname 
from s
join
(select count(*),sno
from
(select * from 
sc 
where sc.cno in(1,2))
grout by sno
having cout(*)>1)a
on a.sno=s.sno



以上是关于oralce之复杂查询举例的主要内容,如果未能解决你的问题,请参考以下文章

[ORALCE]SQL 优化案例之 索引的聚合因子clustering factor

7_mysql查询之where子句

Oralce 查询单表数据大小

oralce约束之检查约束

oralce菜鸟入门

oralce之存储过程