各种连接(等值连接、内连接、外连接、左连接、右连接、全连接)
Jihongchang(讨论 | 贡献)2022年11月3日 (四) 14:11的版本
等值连接/显式内连接
等值连接也叫显式内连接,在进行多表联合查询时通过“=”(等号)来连接多张表之间字段对应的值,其产生的结果会出现重复列。
select *
from course,sc
where course.cnum = sc.cnum;
select *
from course inner join sc
on course.cnum = sc.cnum;
上面两个SQL会得到相同的结果:
自连接
自连接是一种特殊的连接,它的本质是将一个表与它自身做连接,若要在一个表中查找具有相同列值的行,则可以使用自连接。
使用自连接时需为表指定两个别名,且对所有列的引用均要用别名限定。
select *
from student stu1, student stu2
where stu1.snum = stu2.snum
自然连接
自然连接是一种特殊的等值连接,在进行多表联合查询时通过“natural join”关键字来连接多张表之间相同字段对应的值,其产生的结果会将重复列只保留一个。
如果对多张表进行自然连接操作,那么前提要求是这多张表之间必须有相同的字段名。
select *
from course natural join sc;
如果自然连接两个不存在相同字段名的表:
select *
from course natural join student;
得到的就是单纯的笛卡尔积:
同名字段的值在其中一张表中不存在对应值的记录不会出现。