数据库原理及应用实验五 连接查询和嵌套查询



一、实验目的

1.掌握Management Studio的使用。
2.掌握SQL中连接查询和嵌套查询的使用。

二、实验内容及要求(请同学们尝试每道题均使用连接和嵌套两种方式来进行查询,如果可以的话)

1. 找出所有任教“数据库”的教师的姓名。

SELECT  Teac_name
FROM Teacher t,Course c,CourseTeacher ct
WHERE c.Course_name='数据库' and c.Course_id=ct.Course_id 
and ct.Teac_id=t.Teac_id

2. 取出学号为“980101011”的学生选修的课程号和课程名。

SELECT  c.Course_id,c.Course_name
FROM Course c,StudentGrade sc
WHERE sc.Stu_id='980101011'  and
		sc.Course_id=c.Course_id

3.“涂杰杰”所选修的全部课程号及成绩。(注意:school中有同名,即有两名学生叫“涂杰杰”。)

SELECT  c.Course_id,Grade,s.Class_id
FROM Student s,Course c,StudentGrade sc
WHERE s.Stu_name='涂杰杰' and s.Stu_id=sc.Stu_id and
		sc.Course_id=c.Course_id

4.找出“苏贤兴”同学所学课程的名称和成绩。


SELECT  c.Course_name,Grade
FROM Student s,Course c,StudentGrade sg
WHERE s.Stu_name='苏贤兴' and s.Stu_id=sg.Stu_id and
		sg.Course_id=c.Course_id

5.显示所有课程的选修情况。

SELECT DISTINCT sg.Stu_id,c.Course_id,c.Course_name,sg.Grade
FROM Course c,StudentGrade sg
WHERE c.Course_id=sg.Course_id 

6.检索选修课程号为“0109”或“0111”的学生学号、姓名和所在班级。

SELECT  Stu_id ,Stu_name,Class_name
FROM Student s,Course c,Class cc
WHERE cc.Class_id=s.Class_id and (Course_id='0109' or Course_id='0111')

7.查询“0203”课程的最高分的学生的学号。

SELECT  Stu_id 
FROM StudentGrade
WHERE Course_id='0203' and Grade=(
SELECT MAX(Grade)
FROM StudentGrade
)

8.没有选修以“01”开头的课程的学生信息。(用子查询完成,提示not in或not exists。需考虑没选课的学生)

1.
SELECT s.*
FROM Student s,Course c,StudentGrade sg
WHERE c.Course_id=sg.Course_id and s.Stu_id=sg.Stu_id and c.Course_id not in(
 SELECT Course_id
 FROM Course
 WHERE Course_id like '01%'
)
2.
SELECT s.*
FROM Student s,Course c,StudentGrade sg
WHERE c.Course_id=sg.Course_id and s.Stu_id=sg.Stu_id and c.Course_id  not like '01%'

三、实验小结

1.思考简单查询、连接查询与嵌套查询有什么不同?连接查询与嵌套查询有何区别与联系?

若一个查询只涉及一个表,则称之为简单查询。
若一个查询同时涉及两个或两个以上的表,则称之为连接查询。
嵌套查询又称子查询,是指在父查询的where条件语句中再插入一个子查询语句。

连接查询与嵌套查询区别:
1、含义上的不同
嵌套查询是包含一个或多个子查询或者子查询的另一个术语的SELECT语句。在一个外层查询中包含有另一个内层查询子查询是SQL语句的扩展。
连接查询是关系数据库中最主要的查询。在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。
2、特性上的不同
嵌套查询的主要特性是SQL允许多层嵌套,是由内而外地进行分析,子查询的结果作为主查询的查询条件。
连接是关系数据库模型的主要特点,通过连接运算符可以实现多个表查询。连接操作给用户带来很大的灵活性,可以在任何时候增加新的数据类型。

联系:连接查询都可以用嵌套查询完成,反之不然。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值