SQL SERVER内连接和外连接的区别是什么?

作者&投稿:地菲 (若有异议请与网页底部的电邮联系)
数据库的内连接和外连接有什么区别?~


你是要弄清楚区别在什么地方还是单纯想要文字说明
文字说明的楼上说了一大堆了,不说了。
弄个例题,直观一点。两个表:
--表stu
id name
1, Jack
2, Tom
3, Kity
4, nono
--表exam
id grade
1, 56
2, 76
11, 89

内连接 (显示两表id匹配的)
select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id
stu.id exam.id name grade
--------------------------------
1 1 Jack 56
2 2 Tom 76

左连接(显示join 左边的表的所有数据,exam只有两条记录,所以stu.id,grade 都用NULL 显示)
select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL

右连接(与作连接相反,显示join右边表的所有数据)
select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89

数据表的连接有:

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;

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

总之,

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

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

内连接是只显示满足条件的!


温县18269253231: SQL Server中内连接和外连接的区别 -
扶衫力特: SQL Server中内连接和外连接的区别 关键字: 左右连接数据表的连接有: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

温县18269253231: SQL SERVER内连接和外连接的区别是什么? -
扶衫力特: 数据表的连接有:1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现2、外连接: 包括(1)左外连接(左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制)3、自连接(连...

温县18269253231: sql 内连接与外连接有什么区别? -
扶衫力特: 个人说明: 内连接:主要包括 等值连接,不等值连接,inner join连接 外连接呢:左、右、全连接 三种,左连接呢就是左表显示全部相应的数据,右表显示对应的数据 右连接呢就是右表显示全部相应的数据,左表显示对应的数据 而全连接呢 就是两表的数据全部出来,消除重复的 而内连接与外连接有什么区别呢,只能说是查询的扩充

温县18269253231: sql 内连接和外连接的是什么意思 -
扶衫力特: 内连接又分为等值连接、自然连接和不等连接三种. 外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种.与内连接不同的是,外连接...

温县18269253231: SQL Server中, 内联接查询和外联接查询的区别是甚么.? -
扶衫力特: 数据库中有两种联接:内连接,外连接.一、其中内连接就是一般的相等连接. 如:select * from a, b where a.id = b.id 二、外连接 对于外连接,可以分为左外连,右外连,全外连.详细介绍如下:1. LEFT OUTER JOIN:左外关联 SELECT e....

温县18269253231: SQL的内部连接和外部连接到底有什么区别啊? -
扶衫力特: SQL--JOIN之完全用法外联接.外联接可以是左向外联接、右向外联接或完整外部联接.在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定: LEFT JOIN 或 LEFT OUTER JOIN.左向外联接的结果集包括 LEFT OUTER 子...

温县18269253231: sql server 2005 中的内连接和外连接 怎么理解?
扶衫力特: 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集--包括两张表中数据行的计划.简单地说,就是两张表有了子集,虽然只是暂时的 - 有两者基本类型的的连接,inner和outer连接.两种类型的主要区别在于,即使是在连接条件不满足的情况下,外部连接也会在结果集内返回行,而内部连接不会在结果集类返回行 - 当外部连接不满足连接条件时,通常返回一个表中的列,但是第二个表中没有返回值--为null

温县18269253231: SQL外连接和内连接有什么区别? -
扶衫力特: 外连接分左连接和右连接, 左连接以左表为基表,左表全部显示包括空值,右表关联展示,右连接反之. 内连接可以理解为左连接和右连接的交集.

温县18269253231: SQL内联接和外联接的区别?什么时候用?怎么用? -
扶衫力特: 内连接只产生所有表中存在匹配的记录,最常见的就是我们常用的where语句连接,两边的表返回的都是匹配的记录; 外连接是不对称连接,分为左联接和右联接,应该说他们的语法都是一样的,只是一个左,一个右,结果是:相匹配的左(右)部的表的记录 _都_ 出现在结果集中,而另一部分(满足前一条原则下)有匹配显示记录,无匹配则是显示NULL,可以用where过滤不是null的 或 是null的,相当于只满足一边返回匹配值; 个人认为连接过程也是一个查询过程.

温县18269253231: sql中外连接和内连接有什么区别和联系? -
扶衫力特: 你是要弄清楚区别在什么地方还是单纯想要文字说明 文字说明的楼上说了一大堆了,不说了.弄个例题,直观一点.两个表:--表stu id name 1, jack2, tom3, kity4, nono--表exam id grade1, 562, 7611, 89 内连接 (显示两表id匹配的) select stu.id...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网