实验五 数据库的查询 实验报告

实验5 数据库的查询(二)

一.实验名称:数据库的查询(二)

二.目的和要求:

(1)掌握连接查询的表示方法。

(2)掌握子查询的表示方法。

三.实验准备

(1)了解连接查询的表示方法。

(2)了解子查询的表示方法。

四。实验时间:2011年4月14日

五。实验设备和实验环境:

(1) PC机。

(2) SQL Server 2000。

六.实验内容:

1.连接查询的使用

(1)查询选修2号课程且成绩为90分以上的学生学号、姓名、系别及成绩。在查询分析器的编辑窗口输人如下的语句并执行:

SELECT Student.sno,sname,Sdept,grade
FROM Student ,Sc
WHEREE Student.sno =Sc.sno
And Sc.Cno=’2’ and Sc.Grade>90

思考与练习:查询成绩在80~90分之间的学生学号、姓名、课程名及成绩。

在查询分析器的编辑窗口输人如下的语句并执行:

select student.sno,sname,course.cname,sc.grade
from student,sc,course
where student.sno=sc.sno
and sc.cno=course.cno
and sc.grade between 80 and 90;

(2)查找每一门课程的间接先行课程(即先行课的先行课)。在查询分析器的编辑窗口输入如下语句并执行:

SELECT First.Cno, Second.Cpno
FROM Course First , Course Second.
WHEREE First.Cpno = Second.Cno

思考与练习:查询没有选修课程及其成绩的学生详情。

2.子查询的使用

(1)查找学习成绩不及格的学生的情况。在查询分析器的编辑窗口输人如下语句并执行:

SELECT*
FROM Student
WHERE Sno In
(SELECT Sno
FROM Sc
WHERE Grade<60)

思考与练习:用子查询的方法查找所有成绩在90分以上的学生的情况。

select *
from student
where sno in
(select sno
from sc
where grade>90);

(2)查找数学系年龄不低于信息系年龄的学生的姓名。在查询分析器的编辑窗口输入如下语句并执行:

SELECT Sname
FROM Student
WHERE Sdept=’MA’
AND
Sage>=ALL(SELECT Sage
FROM Student
WHERE Sdept=’IS’)

思考与练习:求数据库课程成绩比任一个信息系学生成绩都高的数学系学生的姓名。

(3)查找选修了课程名为“数据库系统”的学生学号和姓名。在查询分析器的编辑窗口输人如下的语句并执行:

SELECT Sno,Sname
FROM Student
WHERE Sno In
( SELECT Sno
FROM Sc
WHERE Cno =
Select Cno
From Course
WHERE Cname= ’数据库系统’))

思考与练习:用连接查询的方法完成上题。

select student.sno,sname
from student,sc,course
where student.sno=sc.sno
and sc.cno=course.cno
and cname='数据库';

(4)查找选修了2号课程的学生清单。在查询分析器的编辑窗口输人如下的语句并执行:

SELECT *
FROM Student
WHERE Exists
( SELECT *
FROM Sc
WHERE Sc.Sno=Student.Sno And Sc.Cno=’2’)

思考与练习:查找选修了2号课程的学生学号、姓名、课程名及成绩。

SELE