在使用数据库是常常用到连接,我就对各种连接的区别做一个总结。

  首先在我们常用的sql语句中使用与连接相关的无非是select语句中的where连接条件,表示这些条件的谓词就是:

  • <、<=、=、>、>=、!=、<>、!< 和 !>

下面介绍各种连接的特点

1.等值连接(相等连接)

多表中直接使用 “=” 来进行查询相等的所有列,包括其中重复的列。

Select student.*,  class.* 
from student,class
where student.userId = class.userId;

-- 通过学生id把学生所有的个人信息和班级信息表所对应的所有东西都查出来

2.内连接(inner join)

  指定了INNER关键字的连接是内连接,内连接按照ON所指定的连接条件合并两个表,返回满足条件的行。内连接是系统默认的,可以省略INNER关键字。使用内连接后仍可使用WHERE子句指定条件。

例1

select * 
from student inner join class
on student.userId = class.userId;

例2

select student.name, class.score
from student join class
on student.userId = class.userId
where class.score >= 60;

3.外连接

左连接(left join)

左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来。

select * 
from student left join class
on student.userId = class.userId;

右连接(right join)

右连接:右连接是只要右边表中有记录,数据就能检索出来。

select * 
from student right join class
on student.userId = class.userId;

总结:

内连接:A INNER JOIN B ,在A中也有,在B中也有的数据才能查询出来。

左连接:是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。

右联接:是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值

Logo

本社区面向用户介绍CSDN开发云部门内部产品使用和产品迭代功能,产品功能迭代和产品建议更透明和便捷

更多推荐