数据库(三)

数据查询

在表S、C、SC上完成以下查询:

1、查询学生的基本信息;

select * from S;

2、查询“CS”系学生的基本信息;

select * from S where Sdept ='CS';

3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;

select Sno,Sname from S where Sdept ='CS' and Sage>19 and Sage<21;

4、找出最大年龄;

select MAX (Sage)from S;

5、找出“CS”系年龄最大的学生,显示其学号、姓名;

select Sno, Sname from S where Sdept ='CS'and Sage in (select MAX (Sage)from S where Sdept ='CS');

6、查询所有姓王的学生的学号、姓名、所在系;

select Sno ,Sname,Sdept from S where Sname like '王%';

7、统计“CS”系学生的人数;

select COUNT (*) from S where Sdept ='CS';

8、统计各系学生的人数,结果按升序排列;

select  Sdept ,COUNT (Sno) from S group by Sdept order by COUNT (Sno)asc;

9、按系统计各系学生的平均年龄,结果按降序排列;

select Sdept, AVG (Sage) from S group by Sdept order by AVG(Sage)desc;

10、查询每门课程的课程名;

select Cname from C;

11、统计无先修课的课程的学分总数;

select SUM (Ccridit) from C where Cpno is NULL;

12、查询选修了“1”或“2”号课程的学生学号和姓名;

select S.Sno,S.Sname from S where Sno in(select Sno from SC where Cno='1'or Cno='2');

13、查询选修了“1”和“2”号课程的学生学号和姓名;

select S.Sno,S.Sname from S where Sno in(select Sno from SC where Cno='1'and Sno in(select Sno from SC where Cno ='2'));

14、查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;

select S.Sno ,Sname,Grade from SC ,S where Cno in(select C.Cno from C where Cname ='数据库系统'and SC.Cno in (select SC .Cno from SC where Grade <60))and S.Sno =SC .Sno; 

15、查询每位选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);

select S.Sno ,S.Sname ,C.Cno ,C.Cname ,SC.Grade from S,C,SC where S.Sno =SC.Sno and C.Cno =SC.Cno ;

16、查询每位学生的信息(显示:学号,姓名,所在系,课程号,课程名,成绩。包括没选课的学生);

select S.Sno ,S.Sname ,S.Sdept ,C.Cno ,C.Cname ,SC.Grade from S,C,SC;

select S.Sno ,Sname ,Sdept ,SC.Cno,C.Cname,Grade 
from S LEFT OUTER JOIN SC on (S.Sno =SC.Sno) LEFT OUTER JOIN C on (C.Cno=SC.Cno);

17、查询没有选修课程的学生的基本信息;

select * from S where Sno not in(select SC.Sno from SC );

18、查询各系年龄最大的学生,显示其学号、姓名;

select S.Sno ,S.Sname from S where Sage in (select MAX(Sage) from S group by Sdept);

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

select Sno from SC group by Sno having COUNT (*)>3;

20、查询选修课程成绩至少有一门在80分以上的学生学号;

select Sno from SC where Sno>=1(select sno from SC where Grade >=80); 

21、查询选修课程成绩均在80分以上的学生学号;

select Sno from SC where Grade>80; 

22、查询选修课程平均成绩在80分以上的学生学号;

select sno from SC group by Sno having AVG(grade)>80;

23、统计每位学生选修课程的门数、学分及其平均成绩;

select Sno,COUNT(Sno),sum(Ccridit),AVG(grade) from C,SC group by Sno;

24、统计选修每门课程的学生人数及各门课程的平均成绩。

select cno,COUNT(Sno),AVG(grade)from SC group by Cno;

25、找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。

select S.Sdept ,AVG(grade)from S,SC,(select sno ,AVG(grade)from SC group by Sno)as avg_sc(avg_sno,avg_grade)
where avg_sc.avg_grade >85  group by S.Sdept order by AVG(Grade)desc;

  • 5
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
认识 DBMS...................................................................................1 实验 2 交互式 SQL(1)........................................................................ 6 实验 3 交互式 SQL(2)........................................................................ 8 实验 4 交互式 SQL(3)........................................................................ 9 ① 查询计算机系全体学生的信息 ② 查询姓“李”的学生的学号和姓名。 ③ 查询课程表中先行课为空的课程名。 ④ 查询考试成绩有不及格的学生的学号。 ⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。 ⑥ 查询全体计算机系学生姓名及其年龄。 ⑦ 查询计算机系在1986-1987 年之间出生的学生姓名。 ⑧ 查询姓“李”的前两个学生的学号和姓名。 ⑨ 查询选修了两门以上课程的学生学号与课程数。 ⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按 平均成绩降序排列。(1) 查询选修了【数据库原理】的计算机系的学生学号和姓名。 (2) 查询每一门课的间接先行课(即先行课的先行课)。 (3) 查询学生的学号、姓名、选修课程的名称和成绩。 (4) 查询选修了课程的学生姓名。 (5) 查询所有学生的信息和所选修的课程。 (6) 查询已被选修的课程的情况和所有课程的名字。 (7) 列出学生所有可能的选修情况。 (8) 查找计算机系的学生选修课程数大于2 的学生姓名、平均成绩和选课 门数,并按平均成绩降序排列。(1) 统计选修了【数据库原理】课程的学生人数。 (2) 查询没有选修【数据库原理】课程的学生信息。 (3) 查询其他系中比计算机系学生年龄都小的学生。 (4) 查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。 (5) 查询0602001 学生和0602002 学生同时选修的课程的课程号(用 INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。 (6) 查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程 号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。(1) 新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。 (2) 在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、 CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。 ① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机) 的记录。② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课 程号为C2。 SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号, 不知道成绩值。 ③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。 ④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、 Sname、Sdept 相同)3 个字段, 然后用INSERT SELECT 语句实现向 StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、 所在系的信息。 ⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含 1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。 ⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。 ⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。 ⑧ 将StudentCourseYYXXXX 数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。 ⑨ 删除计算机系选修成绩不及格的学生选修记录。课程成绩优秀。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

susan花雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值