桂电七院数据库实验报告三

实验目的

1、掌握select语句中嵌套查询的语法结构;
2、熟练select语句中统计函数的作用和使用方法;
3、熟练select语句中GROUP BY和ORDER BY字句的作用和使用方法。

实验内容与步骤

在前面建立的数据库student000的表中进行如下操作:
1、查询选修了3号课程的学生学号和成绩,查询结果按成绩的降序排列;

use 自己的数据库名字
select sno,grade 
from sc
where cno = '3'
order by grade desc

2、查询全体学生的情况,查询结果按所在系升序排列,同一个系的学生按年龄降序排列;

use 自己的数据库名字
select *
from Student
ORDER BY sdept, sage DESC;

3、查询学生总人数;

use 自己的数据库名字
select COUNT(*)
from Student;

4、计算1号课程的学生平均成绩;

use 自己的数据库名字
select AVG(grade)
from sc
where cno='1';

5、求各个课程号及其相应的选课人数;

use 自己的数据库名字
select cno,COUNT(sno)
from sc
group by cno;

6、查询选修了2门以上课程的学生学号;

use 自己的数据库名字
select sno
from sc
group by sno
having COUNT(*)>2;

7、查询与刘晨在同一个系学习的学生情况(用IN谓词和自然连接两种方式实现);
IN谓词

use 自己的数据库名字
select sno, sname, sdept
from Student
where sdept  in
              (select sdept
               from Student
               where sname= '刘晨');

自然连接

use 自己的数据库名字
select  s1.sno, s1.Sname,s1.sdept
from     Student s1,Student s2
where  s1.sdept = s2.sdept  AND
                  s2.sname = '刘晨';

8、查询选修了高等数学的学生学号和姓名;

use 自己的数据库名字
select Sno,Sname               
from    Student                          
where Sno  IN
         (select Sno                     
          from    SC                        
          where  Cno IN
                 (select Cno             
                   from Course           
                   where Cname= '高等数学'                      
                )
          );

9、求2号课程的成绩高于李勇任意一门成绩的学生学号和成绩;

use 自己的数据库名字
select sno,grade from sc
where cno='2'
and grade>any(select grade from sc,Student
			  where sc.sno=Student.sno
			  and sname='李勇')

10、求其它系中比计算机系中某一学生年龄小的学生情况;

use 自己的数据库名字
select sno from Student
where sage < (select max(sage) from student where sdept = '计算机')
and sdept != '计算机';

11、求其它系中比计算机系学生年龄都小的学生情况;

use 自己的数据库名字
 select sname,sage 
 from Student 
 where sdept!='计算机' AND 
 sage<all(select sage from Student where sdept='计算机');

12、求选修了2号课程的学生姓名;

use 自己的数据库名字
select Student.sname 
from Student,sc 
where sc.cno='2' and sc.sno=Student.sno;

13、求没有选修2号课程的学生姓名;

use 自己的数据库名字
SELECT sname
FROM Student
WHERE NOT EXISTS
          (SELECT *
             FROM sc
             WHERE Student.sno=sc.sno AND cno='2');

14、求选修了全部课程的学生姓名;

use 自己的数据库名字
select Sname
from Student
where not exists( 
  select *
  from course
  where not exists(
    select *
    from sc
    WHERE sc.sno = Student.sno  AND 
			  sc.cno = course.cno
  )
);

15、求至少选修了学号为95002的学生所选修的全部课程的学生学号和姓名。

use 自己的数据库名字
select distinct X.Sno
from sc X 
where not exists(
    select *
    from SC Y 
    where Y.Sno = 95002 
	and not exists(
        select *
        from SC Z
        where Z.Cno = Y.Cno AND 
		Z.Sno = X.Sno
        )
    );
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值