数据库系统概论 实验报告答案 实验六:数据表高级查询

实验六:数据表高级查询

一、实验目的

1.    掌握SELECT语句的基本语法和查询条件表示方法;

2.    掌握数据表的连接查询方法;

3.    掌握嵌套查询的表示及使用;

4.    掌握集合查询的表示及使用

二、实验学时

2学时

三、实验要求

1.    了解SELECT语句的基本语法格式和执行方法;

2.    了解连接查询的表示及使用;

3.    掌握嵌套查询和集合查询的使用的方法;

4.    完成实验报告;

四、实验内容

以实验5数据库为基础,请使用T-SQL 语句实现进行以下操作:

1.    查询名字中第2个字为‘向’的学生姓名和学号及选修的课程号、课程名;

select sname,XSKC.student.sno,XSKC.sc.cno,cname

from XSKC.student,XSKC.sc,XSKC.course

where XSKC.student.sno=XSKC.sc.sno and XSKC.sc.cno=XSKC.course.cno and sname like '_向%';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第1张图片

2.    列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;

select XSKC.student.sno,sname,sdept,XSKC.sc.cno,grade

from XSKC.student,XSKC.sc,XSKC.course

where XSKC.student.sno=XSKC.sc.sno and XSKC.sc.cno=XSKC.course.cno and XSKC.sc.cno='2' or XSKC.sc.cno='8';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第2张图片

3.    查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;

select*

from XSKC.student

where sage != (

           select sage

            from XSKC.student

            where sname='张力');

数据库系统概论 实验报告答案 实验六:数据表高级查询_第3张图片

4.    按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;

select XSKC.student.sno,sname,sdept,sum(ccredit) 已修学分

from XSKC.student,XSKC.sc,XSKC.course

where XSKC.student.sno=XSKC.sc.sno and XSKC.sc.cno=XSKC.course.cno and XSKC.sc.grade>='60'

group by XSKC.student.sno,XSKC.student.sname,XSKC.student.sdept

数据库系统概论 实验报告答案 实验六:数据表高级查询_第4张图片

5.    查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;

select XSKC.student.sno,sname,cno

from XSKC.student,XSKC.sc

where XSKC.student.sno=XSKC.sc.sno and XSKC.sc.cno =any

(select cno from XSKC.sc,XSKC.student where XSKC.sc.sno=XSKC.student.sno and sname='张力' ) and sname != '张力'

数据库系统概论 实验报告答案 实验六:数据表高级查询_第5张图片

6.    查询只被一名学生选修的课程的课程号、课程名;

select XSKC.sc.cno,cname

from XSKC.sc,XSKC.course

where XSKC.sc.cno=XSKC.course.cno

group by XSKC.sc.cno,cname

having count(*) = '1';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第6张图片

7.    使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;

select XSKC.student.sno,sname

from XSKC.student,XSKC.sc

where cno = (select cno from XSKC.course where cname='数据结构' )

数据库系统概论 实验报告答案 实验六:数据表高级查询_第7张图片

8.    使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;

select sname,sage,sdept

from XSKC.student

where sage< any (select sage

                 from XSKC.student

                  where sdept='cs')

       and sdept != 'CS';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第8张图片

9.    使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;

select sname

from XSKC.student

where sage< ALL (select sage

                 from XSKC.student

                  where sdept='WM')

       and sdept != 'WM';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第9张图片

10.   分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;

自身连接:

select two.*

from XSKC.student as one,XSKC.student as two

where one.sdept=two.sdept and one.sname='张力'and two.sname != '张力';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第10张图片

嵌套:

select *

from XSKC.student

where sdept = (select sdept

                 from XSKC.student

                  where sname='张力')

       and sname != '张力';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第11张图片

11.   使用集合查询列出CS系的学生以及性别为女的学生学号及姓名;

select sname

from XSKC.student

where sdept = 'CS'

union

select sname

from XSKC.student

where ssex = '女';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第12张图片

12.   使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;

交集:

select *

from XSKC.student

where sdept = 'CS'

intersect

select *

from XSKC.student

where sage <= '19';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第13张图片

差集:

select *

from XSKC.student

where sdept = 'CS'

except

select *

from XSKC.student

where sage <= '19';

数据库系统概论 实验报告答案 实验六:数据表高级查询_第14张图片

五、实验步骤

命令方式:在【SQL Server Management Studio】窗口左上方选择【新建查询】按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击【执行】按钮。

你可能感兴趣的:(数据库系统概论,sql,数据库)