实验3 SQL的高级查询

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验3 SQL的高级查询

一、实验目的

1.继续掌握基本的SELECT查询及其相关子句的使用

2.掌握复杂的SELECT查询、如多表查询,子查询,连接,分组和嵌套查询

3.掌握SQL中的集合并运算union

4.掌握SQL中元组的插入、修改、删除操作(insert,update,delete)。

二、预备知识:

SQL中的连接操作:

假设R与K是基本数据表。基本表的连接操作可以分为五类:

●内连接 R inner join K on <条件> 只返回满足条件的行

●左外连接 R left join K on<条件>返回满足条件的行及左表R中所有的行。如果左表的某条

记录在右表中没有匹配记录,则在查询结果中右表的所有选择属性列用NULL填充。

●右外连接 R right join K on <条件>返回满足条件的行及右表K中所有的行

●完全外连接 R full join K on <条件>返回满足条件的行及左右表R,K所有的行。当某条记录

在另一表中没有匹配记录,则在查询结果中对应的选择属性列用NULL填充。

●交叉连接R CROSS JOIN K:相当于广义笛卡尔积。不能加筛选条件。

三、实验环境

1.个人计算机或局域网

2.Windows 2000操作系统

3.SQL Server 2000数据库管理系统

四、实验步骤

1.启动查询分析器,选择学生选课数据库

2.在学生选课数据库中分别使用SQL命令完成指定任务。

五、实验内容:

1.查询所有学生的情况以及他们选修的课程和得分

2.查询所有学生的姓名以及他们选修的课程名和得分

3.检索已经选了课程的学生的姓名、选修课程和成绩(提示:使用inner join)

4.检索每个学生的姓名,选修课程和成绩,没有选修的同学也列出。

5.列出所有学生所有可能的选课情况(提示:使用cross join)

6.检索每个学生的姓名、选修课程,没有选修的同学和没有被选修的课程也列出

7.求学生的总人数和平均年龄

8.求选修了各课程的学生的人数

9.对计算机系的学生按课程列出选修了该课程的学生的人数

10.查询每个学生的平均成绩

11.求选修课程超过或等于2门的学生的学号

12.查询学生的学号、姓名、所有学生所有课程的最高成绩

13.查询学生的学号、课程号及对应成绩与所有学生中所有课程的最高成绩的差值

14.查询陈小红同学的学号及所选修的课程号

15.查询没有选修C02课程的学生姓名

16.查找所有成绩高于平均成绩的学生的学号

17.求选修了C02课程的学生的姓名

18.查询选修了课程C01,C02,C03的学生的学号

19.求选修了学生王小宏所选修的课程的那些学生的学号

20.检索没有选修课程C01的所有学生的姓名

21.检索不学C02课程的学生姓名与年龄

22.检索成绩小于任何一个选修C02课程的学生的成绩的学生学号

23.求没有选修C03课程的学生的姓名(提示:此处使用not exists,效果与not in 相同)24.求选修了‘VB’课程的学生的学号和姓名

25.给陈小红的成绩加2分

26.删除陈小红的所有选修记录

27.查找学号为J0401的成绩、全部课程的平均成绩,以及每门成绩与全部课程的平均成绩之间的距离

28.把目前为止还没有选修课程的学生的学号插入关系SC中。

29.把课程名为VB的成绩从基本表SC中删除

30.把C04课程中小于该课程平均成绩的成绩记录从基本表SC中删除

31.将最高成绩的学生的成绩减少20分

32.将前5名最高成绩的学生的成绩减少20分

33.按照成绩从高到低排序,将前10%名学生的成绩减少20分

34.查找最高成绩超过给定学生平均成绩10分的学生

35.求选修了课程C02或C04的学生的学号,姓名,课程号。

36.求选修了课程C02或C04的学生的学号、姓名,不包含重复的记录行

37.求选修了课程C02或C04的学生的学号、姓名,包括重复记录行(提示:使用union all)38.求选修了课程C01,C02,C03的学生的学号,姓名,不包含重复记录行

39.求选修了课程C02和C04的学生的学号和姓名

40.求选修了课程C02但没有选修课程C04的学生的学号和姓名。

相关文档
最新文档