数据库作业:数据查询 连接查询

2023-05-16

若一个查询同时涉及两个以上的表,称之为连接查询。连接查询是数据库中最主要的查询,包括等值连接查询,自然连接查询,自身连接查询等

一 等值和非等值连接查询
1.1连接查询的WHERE子句中用来连接两个表的条件称为连接条件,当连接运算符为=时称为等值连接,使用其他运算符称为非等值连接
例:查询每个学生及其选修课程的情况
Student和SC表的联系通过公共属性Sno实现

SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.Sno;/*将同一学生元组连接起来*/

这里属性名前都加上了表名前缀,为了避免混淆
在这里插入图片描述

1.2若在等值连接中把目标列中的重复属性列去掉则为自然连接
例:查询每个学生及其选修课情况用自然连接完成

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student.SC
WHERE Student.Sno=SC.Sno;

在这里插入图片描述

其他限定条件可用AND进行连接得到要求的最终结果
例:查询选修2号课程且成绩在90分以上的所有学生的学号和姓名

SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND SC.Cno='2' AND SC.Grade>90;

在这里插入图片描述
显示没有 说明不存在
二 自身连接
一个表与自己进行连接称为表的自身连接
例:查询每一门课的间接先修课
由于Crouse表要与自身连接,所以为了区分开来,要为Crouse取两个别名,一个是FIRST另一个是SECOND

SELECT FIRST.Cno,SECOND.Cpno
FROM Course FIRST,Course SECOND
WHERE FIRST.Cpno=SECOND.Cno;

在这里插入图片描述

三 外连接
有时候查询表时 没有找到相应的元组这时候就会被舍弃,如果想要将悬浮元组保存在结果关系中,属性上填上空值,就需要使用外连接
例:查询每个学生及其选修课程情况,没有选的课置空值

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SC ON(Student.Sno=SC.Sno);

左外连接列出左边关系所有元组 用LEFT OUTER JOIN 右外连接列出右边关系所有的元组用RIGHT OUTER JOIN

在这里插入图片描述

四 多表连接
两个以上的表的进行连接
例:查询每个学生的学号。姓名 选修的课程名及成绩

SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;

先进行两个表的连接 先将Student和SC表进行连接,然后在与第三个表进行连接 再与Course表进行连接 得到结果
在这里插入图片描述
以上就是连接查询的一些基本功能,让我对数据查询有了更深的理解

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库作业:数据查询 连接查询 的相关文章

随机推荐