文档库

最新最全的文档下载
当前位置:文档库 > 数据库原理实验四

数据库原理实验四

实验四、数据库的嵌套查询实验

班级:学号:姓名:日期:12月18日

1. 实验目的

使学生进一步掌握SQL Server查询分析器的使用方法,学会利用

Transact-SQL语言表达嵌套查询语句,理解相关的SQL语句。

2. 实验内容

用Transact-SQL表达嵌套查询操作,包括使用IN、比较符、ANY或ALL和EXISTS等操作符,通过SQL Server查询分析器输入、分析并显示正确结果。3. 实验要求

在学生选课库中,用T-SQL嵌套查询语句表示并通过查询分析器实现下列操作:

1)求选修了高等数学的学生学号和姓名。

2)求C1课程的成绩高于张三的学生学号和成绩。

3)求其他系中比计算机系某一学生年龄小的学生。

4)求其他系中比计算机系学生年龄都小的学生。

5)求选修了C2课程的学生姓名。

6)求没有选修C2课程的学生姓名。

7)查询选修了全部课程的学生的姓名。

8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。4. 实验步骤及结果:

(1)准备测试数据

(2)写出查询Transact-SQL语句对照学生-选课库中的测试数据找出查询结果。

1)求选修了高等数学的学生学号和姓名。

Transact-SQL语句:

SELECT 学号,姓名 FROM 学生谭宏军

WHERE 学号 IN(SELECT 学号 FROM 选课谭宏军

WHERE课程号 IN( SELECT 课程号 FROM 课程谭宏军

WHERE 课程名='高等数学'))

查询结果:

数据库原理实验四

图1 运行界面图(1)

2)求C1课程的成绩高于张三的学生学号和成绩。

Transact-SQL语句:

SELECT 学号,成绩 FROM 选课谭宏军

WHERE 课程号='C1' AND 成绩>(SELECT 成绩 FROM 选课谭宏军

WHERE 课程号='C1' AND 学号=(SELECT 学号 FROM 学生谭宏军

WHERE 姓名='张三'))

查询结果:

数据库原理实验四

图2 运行界面图(2)

3)求其他系中比计算机系某一学生年龄小的学生。

Transact-SQL语句:

SELECT * FROM 学生谭宏军WHERE 年龄

FROM 学生谭宏军

WHERE 所在系='计算机系')AND 所在系<>'计算机系'

查询结果:

数据库原理实验四

图3 运行界面图(3)

4)求其他系中比计算机系学生年龄都小的学生。

Transact-SQL语句:

SELECT * FROM 学生谭宏军

WHERE 年龄

WHERE 所在系='计算机系')AND 所在系< > '计算机系' 查询结果:

数据库原理实验四

图4 运行界面图(4)

5)求选修了C2课程的学生姓名。

Transact-SQL语句:

SELECT 姓名 FROM 学生谭宏军WHERE EXISTS(SELECT * FROM 选课谭宏军WHERE 学生谭宏军.学号=学号 AND 课程号='C2')查询结果:

数据库原理实验四

图5 运行界面图(5)

6)求没有选修C2课程的学生姓名。

Transact-SQL语句:

SELECT 姓名 FROM 学生谭宏军 WHERE NOT EXISTS (SELECT *

FROM 选课谭宏军 WHERE 学生谭宏军.学号=学号 AND 课程号='C2')查询结果:

数据库原理实验四

图6 运行界面图(6)

7)查询选修了全部课程的学生的姓名。

Transact-SQL语句:

SELECT 姓名 FROM 学生谭宏军

WHERE NOT EXISTS(SELECT * FROM 课程谭宏军

WHERE NOT EXISTS (SELECT * FROM 选课谭宏军

WHERE 学生谭宏军.学号=学号 AND 课程谭宏军.课程号=课程号))查询结果:

数据库原理实验四

图7 运行界面图(7)

8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。

Transact-SQL语句:

SELECT 学号,姓名 FROM 学生谭宏军 WHERE NOT EXISTS

(SELECT * FROM 选课谭宏军选课1

WHERE 选课1.学号='S2' AND NOT EXISTS (SELECT *

FROM 选课谭宏军选课2 WHERE 学生谭宏军.学号=选课2.学号

AND 选课2.课程号=选课1.课程号))

查询结果:

数据库原理实验四

图8 运行界面图(8)

5. 实验总结

在本次实验中我感觉最麻烦的问题就是在进行输入SQL语句时,经常容易把标点符号弄错成中文输入从而就会引起了大量的语法错误。在输入语句时一定要用英文标点才会正确。通过本实验使我也进一步掌握了SQL Server查询分析器的使用方法,学会利用Transact-SQL语言表达嵌套查询语句,理解了相关的SQL 语句。