Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50645
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-21 14:39
文章分类

全部博文(14)

文章存档

2016年(14)

我的朋友

分类: Oracle

2016-10-21 15:11:59

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:教师名字


问题: 
1、查询“001”课程比“002”课程成绩高的所有学生的学号; 
  select a.S# from (select s#,score from SC where C#='001') a,(select s#,score 
  from SC where C#='002') b 
  where a.score>b.score and a.s#=b.s#; 
2、查询平均成绩大于60分的同学的学号和平均成绩; 
    select S#,avg(score) 
    from sc 
    group by S# having avg(score) >60;

select sno,avg(score) avgscore from sc
 where  avg(score)>60
 group by sno
 order by sno
-------------------where后面不可以接聚集函数,所以标红的语句错误
3、查询所有同学的学号、姓名、选课数、总成绩; 
  select Student.S#,Student.Sname,count(SC.C#),sum(score) 
  from Student left Outer join SC on Student.S#=SC.S# 
  group by Student.S#,Sname -------------------------SQL语句先执行的group或者where条件
4、查询姓“李”的老师的个数; 
  select count(distinct(Tname)) 
  from Teacher 
  where Tname like '李%'; 
5、查询没学过“叶平”老师课的同学的学号、姓名; 
    select Student.S#,Student.Sname 
    from Student  
    where S# not in (select distinct( SC.S#) from SC,Course,Teacher where  SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平'); 
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名; 
  select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002'); 














阅读(1238) | 评论(0) | 转发(0) |
0

上一篇:SQL笔记

下一篇:常见的连接

给主人留下些什么吧!~~