内外连接的区别及应用场景 (数据库外连接和内连接)

关系型数据库中,连接(Join)是一项十分重要的操作。连接用于将两张或多张表中的数据关联起来,以便使用者可以获得更加完整的信息。在所有连接中,最为常用的两种连接就是内连接(Inner Join)和外连接(Outer Join)。

内连接

内连接根据共同数据将两张表中的数据进行匹配,如果没有匹配的数据则会被滤除。内连接的语法是SELECT…FROM…JOIN…ON…,其中JOIN有两个参数——LEFT和RIGHT,代表要进行连接的两张表,而ON参数则是用来设置连接条件的。

内连接的应用场景是关联两个表中的数据。举个例子,比如一个学生表和一个课程表,这两个表分别记录了学生和课程的信息。此时,我们就可以使用内连接来查询每个学生所选的课程。内连接会将学生表和课程表中学生ID相同的数据进行匹配,从而得到每个学生所选的课程。

外连接

外连接分为左外连接(Left Outer Join)和右外连接(Right Outer Join),它们之间主要的区别是根据连接条件,是否保留左表或右表中没有匹配数据的记录。

左外连接将左表的所有记录保留下来,即便右表中没有与其匹配的数据也会被保留下来,不会被过滤。右外连接则是以右表为基准,将右表的所有记录都保留下来。

外连接的语法和内连接类似,只需要在JOIN参数后加上LEFT或RIGHT即可。如果要进行全外连接,则需要使用UNION ALL操作符对左外连接和右外连接的结果进行合并。

外连接的应用场景比较常见,例如在网站数据库系统中,用户表和订单表是两张最为常见的表。如果需要查询所有的用户信息,以及他们所下的订单信息,其中用户表有些用户没有下过订单,此时就需要使用左外连接。这样即使用户表中没有订单信息,也能将这些用户保留下来。右外连接的应用场景虽然较为少见,但实际上也是有一定的使用价值的。

内外连接是关系型数据库中非常重要的概念,它们可以将相关联的数据整合在一起,使得我们能够获得更加完整的信息。如果您正在进行数据库开发或者工作,那么深入了解内外连接的原理和应用场景是非常有必要的。

相关问题拓展阅读:

  • 内连接和外连接的区别
  • 内连接和外连接有什么区别?各适用于什么地方?

内连接和外连接的区别

连接结果和注意事项不同。

1、连接结果不同

内连接的连接结果仅包含符合连接条件的行,参与连接的两个表都必须符合连接条件;而外连接的连接结果不仅包含了符合连接条件的行,同时还闹局包括不符合自身条件的行,其中还包括左外连接哪腔、右外连接以及全外连接。

2、注意事项不同液缓让

内连接需要注意区分在嵌套查询时使用的any以及all的区别;外连接不需要区分,左表和右表都不受限制,所有记录都显示,两个表不足的地方可用null进行填充。

内连接和外连接有什么区别?各适用于什么地方?

楼主!看这个吧,讲解比较全面了

(一)内连接

  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的

列值。内连接分三种:

  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结

果中列出被连接表中的所有列,包括其中的重复列。

  2、不等连接:

在连接条件使用除等于运算符以外的其它比较运算符比较被连接的

列的列值。这些运算符包括>、>=、、!。

  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选

择列表指出查询结果中所包括的列,并删除连接表中的重复列。

  例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版

社:

 

SELECT

*

  FROM

authors

AS

a

INNER

JOIN

publishers

AS

p

  ON

a.city=p.city

  又如使用自然连接,在选择列表中删除authors

和publishers

表中重复列(city和

state):

  SELECT

a.*,p.pub_id,p.pub_name,p.country

  FROM

authors

AS

a

INNER

JOIN

publishers

AS

p

  ON

a.city=p.city

  (二)外连接

  内连接时,返回查询结果中的仅是符合查询条件(

WHERE

搜索条件或

HAVING

条件)和连接条件的行。而采用外连接时,它返回到查询结果中的不仅包含符合连

接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连

接)中的所有数据行。如下面使敏哗用左外连接将论坛内容和作者信息连接起来:

 

SELECT

a.*,b.*

FROM

luntan

LEFT

JOIN

usertable

as

b

  ON

a.username=b.username

  下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在

的城市:

 

SELECT

a.*,b.*

  FROM

city

as

a

FULL

OUTER

JOIN

user

as

b

  ON

a.username=b.username

  (三)交叉连接

  交叉连接不带WHERE

子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到

结果中的数据行数等于之一个表中符合查询条件的数据行数乘以第二个表中符合查

询条件的数据行数。例,titles表中有6类图书,而publishers表中团启有8家出版桥或行社,则下

列交叉连接检索到的记录数将等于6*8=48行。

  SELECT

type,pub_name

  FROM

titles

CROSS

JOIN

publishers

  ORDER

BY

type

(一)内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的

列值。内连接分三种:

1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结

果中列出被连接表中的所有列,包括其中的重复列。

2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的

列的列值。这些运算符包括>、>=、、!。

3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选

择列表指出查询结果中所包括的列,并删除连接表中的重复列。

例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版

社:

SELECT *

FROM authors AS a INNER JOIN publishers AS p

ON a.city=p.city

又如使用自然连接,在选择列表中删除authors 和publishers 表庆态中重复列(city和

state):

SELECT a.*,p.pub_id,p.pub_name,p.country

FROM authors AS a INNER JOIN publishers AS p

ON a.city=p.city

(二)外连接

内连接时,返回查询结果中的仅是符合查询条件( WHERE 搜索条件或 HAVING

条件)和连接条件的行。而采用外连接时,它返回到查询结果中的不仅包含符合连

接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连

接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:

SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b

ON a.username=b.username

下面使用全外连接将city表中的所有作者以及汪镇user表中的所有作者,以及他们所在

的城市:

SELECT a.*,b.*

FROM city as a FULL OUTER JOIN user as b

ON a.username=b.username

(三)交叉连接

交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到

结果中的数据行数等于之一个表中符合查询条件的数据行数乘以第二个表中符合查

询条件的誉陵源数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下

列交叉连接检索到的记录数将等于6*8=48行。

SELECT type,pub_name

FROM titles CROSS JOIN publishers

ORDER BY type

楼主!看这个吧,讲解比较全面了

(一)内连接

  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的

列值。内连接分三种:

  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结

果中列出被连接表中的所有列,包括其中的重复列。

  2、不等连接:

在连接条件使用除等于运算符以外的其它比较运算符比较被连接的

列的列值。这些运算符包括>、>=、、!。

  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选

择列表指出查询结果中所包括的列,并删除连接表中的重复列。

  例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版

社:

 

SELECT

*

  FROM

authors

AS

a

INNER

JOIN

publishers

AS

p

  ON

a.city=p.city

  又如使用自然连接,在选择列表中删除authors

和publishers

表中重复列(city和

state):

  SELECT

a.*,p.pub_id,p.pub_name,p.country

  FROM

authors

AS

a

INNER

JOIN

publishers

AS

p

  ON

a.city=p.city

  (二)外连接

  内连接时,返回查询结果中的仅是符合查询条件(

WHERE

搜索条件或

HAVING

条件)和连接条件的行。而采用外连接时,它返回到查询结果中的不仅包含符合连

接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连

接)中的所有数据行。如下面使敏哗用左外连接将论坛内容和作者信息连接起来:

 

SELECT

a.*,b.*

FROM

luntan

LEFT

JOIN

usertable

as

b

  ON

a.username=b.username

  下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在

的城市:

 

SELECT

a.*,b.*

  FROM

city

as

a

FULL

OUTER

JOIN

user

as

b

  ON

a.username=b.username

  (三)交叉连接

  交叉连接不带WHERE

子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到

结果中的数据行数等于之一个表中符合查询条件的数据行数乘以第二个表中符合查

询条件的数据行数。例,titles表中有6类图书,而publishers表中团启有8家出版桥或行社,则下

列交叉连接检索到的记录数将等于6*8=48行。

  SELECT

type,pub_name

  FROM

titles

CROSS

JOIN

publishers

  ORDER

BY

type

楼主!看这个吧,讲解比较全面了

(一)内连接

  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的

列值。内连接分三种:

  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结

果中列出被连接表中的所有列,包括其中的重复列。

  2、不等连接:

在连接条件使用除等于运算符以外的其它比较运算符比较被连接的

列的列值。这些运算符包括>、>=、、!。

  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选

择列表指出查询结果中所包括的列,并删除连接表中的重复列。

  例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版

社:

 

SELECT

*

  FROM

authors

AS

a

INNER

JOIN

publishers

AS

p

  ON

a.city=p.city

  又如使用自然连接,在选择列表中删除authors

和publishers

表中重复列(city和

state):

  SELECT

a.*,p.pub_id,p.pub_name,p.country

  FROM

authors

AS

a

INNER

JOIN

publishers

AS

p

  ON

a.city=p.city

  (二)外连接

  内连接时,返回查询结果中的仅是符合查询条件(

WHERE

搜索条件或

HAVING

条件)和连接条件的行。而采用外连接时,它返回到查询结果中的不仅包含符合连

接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连

接)中的所有数据行。如下面使敏哗用左外连接将论坛内容和作者信息连接起来:

 

SELECT

a.*,b.*

FROM

luntan

LEFT

JOIN

usertable

as

b

  ON

a.username=b.username

  下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在

的城市:

 

SELECT

a.*,b.*

  FROM

city

as

a

FULL

OUTER

JOIN

user

as

b

  ON

a.username=b.username

  (三)交叉连接

  交叉连接不带WHERE

子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到

结果中的数据行数等于之一个表中符合查询条件的数据行数乘以第二个表中符合查

询条件的数据行数。例,titles表中有6类图书,而publishers表中团启有8家出版桥或行社,则下

列交叉连接检索到的记录数将等于6*8=48行。

  SELECT

type,pub_name

  FROM

titles

CROSS

JOIN

publishers

  ORDER

BY

type

楼主!看这个吧,讲解比较全面了 (一)内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的 列值。内连接分三种: 1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结 果中列出被连接表中的所有列,包括其中的重复列。 2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的 列的列值。这些运算符包括>、>=、、!。 3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选 择列表指出查询结果中所包括的列,并删除连接表中的重复列。 例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版 社: SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city 又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和 state): SELECT a.*,p.pub_id,p.pub_name,p.country FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city (二)外连接 内连接时,返回查询结果中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接胡中条件的行。而采用外连接时,它返回到查询结果中的不仅包含尺做世符合连 接条件的行,而且还包括左表(左外连接时)、右表(右陵肢外连接时)或两个边接表(全外连 接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来: SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b ON a.username=b.username 下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在 的城市: SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as b ON a.username=b.username (三)交叉连接 交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到 结果中的数据行数等于之一个表中符合查询条件的数据行数乘以第二个表中符合查 询条件的数据行数。例,titles表中有6类图书,而publishers表中有8家出版社,则下 列交叉连接检索到的记录数将等于6*8=48行。 SELECT type,pub_name FROM titles CROSS JOIN publishers ORDER BY type

数据库外连接和内连接的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库外连接和内连接,内外连接的区别及应用场景,内连接和外连接的区别,内连接和外连接有什么区别?各适用于什么地方?的信息别忘了在本站进行查找喔。

原创文章,作者:admin,如若转载,请注明出处:https://www.vaicdn.com/news/45514.html

(0)
adminadmin
上一篇 2024 年 4 月 14 日
下一篇 2024 年 4 月 14 日

相关推荐