数据库的内连接和外连接有什么区别?

数据库的内连接和外连接有什么区别?,第1张

1、连接结果不同

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

2、注意事项不同

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

内连接又分为等值连接、自然连接和不等连接三种。 \x0d\x0a\x0d\x0a外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。 \x0d\x0a\x0d\x0a交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。 \x0d\x0a\x0d\x0a连接 *** 作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。 \x0d\x0a\x0d\x0a无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如: \x0d\x0a\x0d\x0aSELECT p1.pub_id,p2.pub_id,p1.pr_info \x0d\x0aFROM pub_info AS p1 INNER JOIN pub_info AS p2 \x0d\x0aON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) \x0d\x0a\x0d\x0a(一) 内连接 \x0d\x0a\x0d\x0a内连接查询 *** 作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种: \x0d\x0a\x0d\x0a1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 \x0d\x0a\x0d\x0a2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、、!&lt和。 \x0d\x0a\x0d\x0a3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 \x0d\x0a\x0d\x0a例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社: \x0d\x0a\x0d\x0aSELECT * \x0d\x0aFROM authors AS a INNER JOIN publishers AS p \x0d\x0aON a.city=p.city \x0d\x0a\x0d\x0a又如使用自然连接,在选择列表中删除authors 和publishers 表中重复列(city和state): \x0d\x0a\x0d\x0aSELECT a.*,p.pub_id,p.pub_name,p.country \x0d\x0aFROM authors AS a INNER JOIN publishers AS p \x0d\x0aON a.city=p.city \x0d\x0a\x0d\x0a(二) 外连接 \x0d\x0a\x0d\x0a内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。 \x0d\x0a\x0d\x0a如下面使用左外连接将论坛内容和作者信息连接起来: \x0d\x0a\x0d\x0aSELECT a.*,b.* FROM luntan LEFT JOIN usertable as b \x0d\x0aON a.username=b.username \x0d\x0a\x0d\x0a下面使用全外连接将city表中的所有作者以及user表中的所有作者,以及他们所在的城市: \x0d\x0a\x0d\x0aSELECT a.*,b.* \x0d\x0aFROM city as a FULL OUTER JOIN user as b \x0d\x0aON a.username=b.username \x0d\x0a\x0d\x0a(三) 交叉连接 \x0d\x0a\x0d\x0a交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。 \x0d\x0a\x0d\x0a例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48 行。 \x0d\x0a\x0d\x0aSELECT type,pub_name \x0d\x0aFROM titles CROSS JOIN publishers \x0d\x0aORDER BY type \x0d\x0a\x0d\x0a介绍了表连接,更确切的说是inner joins内连接. \x0d\x0a内连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来。 \x0d\x0a为更好的理解这个概念,我们介绍两个表作演示。苏格兰议会中的政党表(party)和议员表 (msp)。 \x0d\x0a\x0d\x0aparty(Code,Name,Leader) \x0d\x0aCode: 政党代码 \x0d\x0aName: 政党名称 \x0d\x0aLeader: 政党领袖 \x0d\x0a\x0d\x0amsp(Name,Party,Constituency) \x0d\x0aName: 议员名 \x0d\x0aParty: 议员所在政党代码 \x0d\x0aConstituency: 选区

1.意思不一样。

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

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

2.用法不一样。

右连接与左连接相反,左连接A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有。

3.空值不一样。

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

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

定义:

数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。

即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9960472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存