SQL内连接与外连接用法与区别

SQL内连接与外连接用法与区别

1、内连接:从结果表中删除与其他被连接表中没有匹配行的所有行。

2、外连接:返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。

二、语法不同

1、内连接:select fieldlist from table1 [inner] join table2 on table1.column=table2.column

2、外连接:select * from dave a full join bl b on a .id = b .id;


三、注意事项不同

1、内连接:需要区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“||”而all则相当于逻辑运算“&&”

2、外连接:左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充。 全外连接不支持(+)这种写法。


参考资料来源:百度百科-外连接

参考资料来源:百度百科-内连接

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-29
关键字: 左右连接

数据表的连接有:

1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现

2、外连接: 包括

(1)左外连接(左边的表不加限制)

(2)右外连接(右边的表不加限制)

(3)全外连接(左右两表都不加限制)

3、自连接(连接发生在一张基表内)

select a.studentno, a.studentname, b.classname

from students a, classes b

where a.classid(+) = b.classid;

STUDENTNO STUDENTNAM CLASSNAME

---------- ---------- ------------------------------

1 A 一年级一班

2 B 一年级二班

一年级三班

以上语句是右连接:

即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有

记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无

论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在

查询结构中出现。

反之:

select a.studentno, a.studentname, b.classname

from students a, classes b

where a.classid = b.classid(+);

STUDENTNO STUDENTNAM CLASSNAME

---------- ---------- ------------------------------

1 A 一年级一班

2 B 一年级二班

3 C

则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,

这个学生的记录都会被显示。

select a.studentno, a.studentname, b.classname

from students a, classes b

where a.classid = b.classid;

这个则是通常用到的内连接,显示两表都符合条件的记录

总之,

左连接显示左边全部的和右边与左边相同的

右连接显示右边全部的和左边与右边相同的

内连接是只显示满足条件的!本回答被提问者采纳
第2个回答  2009-12-09

SQL内连接与外连接用法与区别
二、语法不同 1、内连接:select fieldlist from table1 [inner] join table2 on table1.column=table2.column 2、外连接:select * from dave a full join bl b on a .id = b .id;三、注意事项不同 1、内连接:需要区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“||”而al...

SQL内连接与外连接用法与区别
SQL的连接操作分为内连接和外连接,它们的主要区别在于结果集的处理方式和语法。内连接,如同筛选器,它只保留那些在两个关联表中都有匹配行的结果。其基本语法为:select fieldlist from table1 inner join table2 on ***.column=***.column。在嵌套查询中,理解any和all的区别至关重要,any表示至...

SQL内连接与外连接用法与区别
不管是内连接还是外连接都只显示符合条件的数据,区别是集合空间不同。内连接:在两个表的数据的笛卡尔集合中显示符合条件的记录。SQL--JOIN之完全用法外联接。外联接可以是左向外联接、右向外联接或完整外部联接。在FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:LEFTJOIN或LEFTOUTERJOIN。

SQL内连接与外连接的区别
1、两者的分类不同:内连接分为相等连接和自然连接两种连接方式;而外连接分为左外连接、右外连接和全外连接三种连接方式(左外连接即LEFT OUTER JOIN;右外连接即RIGHT OUTER JOIN)。2、两者所连接的对象表不同:内连接进行连接的两个表是对应的相匹配的字段完全相同的。左外连接中进行连接的两个表...

外连接和内连接的区别
外连接和内连接的区别是比较多的,首先需要了解的是,外连接不仅可以返回符合连接和查询条件的数据行,而且还可以返回不符合条件的一些行。而内连接只能返回连接表中符合连接条件和查询条件的数据行,是不可以返回不符合条件的一些数据行。外连接主要分为三类,分别是左外连接、右外连接和全外连接,而内...

sql中内联 和外联是什么意思,光看书太死板了,
(3)INNER是默认方式,可以省略 二、外连接 1、左(外)连接 定义:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL 关键字:LEFT JOIN 2、右(外)连接 定义:在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NULL 关键字:...

sql中什么时候用内连接查询,什么时候用外连接查询?用起来好像一样啊...
1)左外连接(LEFTOUTER JOIN)如果在连接查询中,连接管子左端的表中所有的元组都列出来,并且能在右端的表中找到匹配的元组,那么连接成功。如果在右端的表中,没能找到匹配的元组,那么对应的元组是空值(NULL)。这时,查询语句使用关键字LEFT OUTERJOIN,也就是说,左外连接的含义是限制连接关键字...

SQL中inner join,outer join和cross join的区别
使用join连表,缺陷的情况下是inner join,开发中使用的leftjoin和rightjoin属于outer join,outer join还包括full join 现有两张表,Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的:1.INNER JOIN 产生的结果是AB的交集 SELECT* FROMTableA INNER JOIN Table...

SQL中inner join,outer join和cross join的区别
内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行,和我们写普通的sql相同。显式:select [cols_list] from a inner join b on [condition] where [condition]隐式:select [cols_list] from a, b where [condition]外连接(OUTER JOIN):外连不但...

SQL中inner join,outer join和cross join的区别
内连接:只显示主表和从表之间满足连接条件(可以是等值连接也可以是不等值连接)的内容,一个表中的记录在另一个表中找不到满足连接条件记录的情况下,将不显示此条记录 外连接:一个表中的记录在另一个表中找不到满足连接条件记录的情况下,也显示此条记录,但在另一个表中的相关列会显示为NULL。

相似回答