sql 内连接和外连接的是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 内连接和外连接的是啥意思?相关的知识,希望对你有一定的参考价值。

参考技术A 内连接又分为等值连接、自然连接和不等连接三种。 \\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: 选区

MySQL连接查询 内连接和外连接的区别

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。

右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。

全外连接:左外连接 union 右外连接。

示例:

数据库版本:Oracle

表TESTA,TESTB,TESTC,各有A, B两列。

A.内连接

内连接,即最常见的等值连接,例:

SELECT * 
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A

结果:

B.外连接

外连接分为左外连接,右外连接和全外连接。

1.  左外连接 left outer join 或者 left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

结果:

三个表做左外链接:

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A
LEFT OUTER JOIN TESTC
ON TESTA.A=TESTC.A

结果:

2. 右外连接 right outer join 或者 right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT *
FROM TESTA 
RIGHT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

3.全外连接 full outer join 或者 full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上。

SELECT * 
FROM TESTA 
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A

结果:

参考技术A 概念解释:
长连接:长连接是相对于短连接来说的。长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。mysql的长连接如果长期闲置,mysql会8小时后(默认时间)主动断开该连接。
短连接:是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
连接的区别:
使用长连接,短连接各有优势,也各有缺点。我们看看长短连接,系统是怎么做的?
1、短连接:
客户端连接--创建socket认证连接--维护连接--数据传输--关闭连接
2、长连接
客户端连接--创建socket认证连接--维护连接--数据传输--维护连接--数据传输.....-关闭连接
2种连接方式都需要系统开销来维护连接,哪种连接最合适并没有准确的说法,主要还是看你客户端的行为。

以上是关于sql 内连接和外连接的是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

sql子查询和连接查询的区别是啥呢?

sql server 2005 中的内连接和外连接 怎么理解?

SQL中内连接和外连接的区别

比较内连接和外连接 SQL 语句

SQL Server中内连接和外连接的区别

sql中的内连接和外连接