有趣生活

当前位置:首页>科技>数据库有几种连接查询三数据库查询

数据库有几种连接查询三数据库查询

发布时间:2026-06-18阅读(1)

导读表a表b一般连接一般连接2.等值连接等值连接3.自然连接自然连接4.外连接外连接5.左外连接左外连接6.右外连接右外连接1、等值与非等值连接查询连接查询的W....

表a

表b

  1. 一般连接

一般连接

2.等值连接

等值连接

3.自然连接

自然连接

4.外连接

外连接

5.左外连接

左外连接

6.右外连接

右外连接

1、等值与非等值连接查询

连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词,其一般格式为:

[<表名1>.]<列名1><比较运算符>[<表名2>/]<列名2>

其中比较运算符主要有:=、>、<、>=、<=、!= 等。

此外连接谓词还可以使用下面形式:

[<表名1>.]<列名1>BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>

当连接运算符为=时,称为等值连接。使用其它运算符称为非等值连接。

查询每个学生及其选修课程的情况。

SELECT Student.* ,SC.*FROM Student,SCWHERE Student.Sno=SC.Sno;

查询结果如下:

DBMS执行该连接操作的可能过程是:

首先在表Student中找到第一个元组,然后从头开始扫描SC表,逐一查找与Student第一个元组的Sno相等的SC元组,找到后就将Student中的第一个元组与该元组拼接起来,形成结果表中的一个元组。SC全部查找完后,再找Student中第二个元组,然后再从头开始扫描SC,逐一查找满足连接条件的元组,找到后就将Student中的第二个元组与该元组拼接起来,形成结果表中一个元组。重复上述操作,直至Student中的全部元组都处理完毕为止。

若把等值连接中把目标列中重复的属性列去掉则为自然连接。

对上一例子用自然连接完成

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROM Student,SCWHERE Student.Sno=SC.Sno;

例中,由于Sno,Sname,Ssex,Sage,Sdept,Cno和Grade属性列在Student和SC表中是唯一的,因此引用是可以去掉表明前缀。而Sno在两个表都出现了,因此引用是必须加上表明前缀。

2、自身连接

连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。

查每门课的间接先修课。

FIRST表

SECOND 表

SELECT FIRST.Cno,SECOND.CpnoWHERE Course FIRST ,Course SECONDWHERE FIRST.Cpno=SECOND.Cno;

结果为:

3、外连接

如果把舍弃的元组保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接(outer jion);

如果只把左边关系中要舍弃的元组保存就叫做左外连接(LEFT OUTER JION 或LEFT JION);

如果只把右边关系中要舍弃的元组保存就叫做右外连接 (RIGHT OUTER JION 或RIGHT JION)。

SELECT Student.Sno,Sname,Ssex,Sdept,Cno,GradeFROM Student LEFT OUT JOIN ON(Student.Sno=SC.Sno);/*也可以使用USING来去掉结果中的重复值:FROM Student LEFT OUT JOIN SC USING (Sno);*/

4、复合条件连接

WHERE子句中可以有多个连接条件,称为复合条件连接。

查询选修2号课程且成绩在90分以上的所有学生的学号和名字。

SELECT Student.Sno,SnameFROM Student,SCWHERE Student.Sno=SC.Sno AND SC.Cno=2 AND SC.Grade>90;

多表连接

查询每个学生的学号、姓名、选修课程名及成绩

SELECT Student.Sno,Sname,Cname,GradeFROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图