sql左连接 右连接 内连接 外连接都是啥

Posted

tags:

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

内外连接:
内连接:取的两个表的(有能连接的字段),的交集,即字段相同的。利用内连接可获取两表的公共部分的记录,
select * from A,B where A.Aid=B.Bnameid
与 Select * from A JOIN B ON A.Aid=B.Bnameid的运行结果是一样的。
外连接:左右连接。
外连接分为两种,一种是左连接(Left JOIN)和右连接(Right JOIN)
(1)左连接(Left JOIN):即图3公共部分记录集C+表A记录集A1。语句如下: select * from A Left JOIN B ON A.Aid=B.Bnameid A的字段全有,查询出来在结果集的左边。
(2)右连接(Right JOIN):即图3公共部分记录集C+表B记录集B1。语句如下:select * from A Right JOIN B ON A.Aid=B.Bnameid

左右连接的sql语句实例:(+),中间函数NVL给空值赋值。
sql="select name,id,area_name from (select a.name,a.id,NVL(c.area_name,'未分配') area_name "+
"from department a, area_department b,area_table c "+
"where a.id= b.f_branch_id(+) "+
"and b.area_code= c.area_code(+)) d where 1=1 ";
参考技术A 如果你数学的集合思想可以的话,就很简单了,集合(余集、补集、全集)
Inner join 匹配有关联的 (两集合的-----余集)
Left join 匹配与左表有关联的 (两集合的-----补集)
Right join 匹配与右表有关联的 (两集合的-----补集)
Full join 两表的所有字段 (两集合的-----全集)

个人认为:左、右连接 就是 select * from A表 left jion B表 where 。。。。 其中A表就是 左表
参考技术B 多表查询:包括内联接和外联接(例子是我以前写的)
内联接:inner join
select c.cusname,l.lkmname
from
cusinfo c inner join cuslinkman l
on c.cusno=l.cusno
外联接:(左,右)left outer join,right outer join(outer可省略)
select cusName,lkmname
from cuslinkman l right outer join cusinfo c
on c.cusNo=l.cusNo

select c.cusno,c.cusname,a.atvdate,a.atvtitle
from cusinfo c left outer join cusactivity a
onc.cusno=a.cusno

mysql 左连接 右连接 内链接

一般所说的左连接,右连接是指左外连接,右外连接。做个简单的测试你看吧。
先说左外连接和右外连接:
[[email protected]#16-12月-11] SQL>select * from t1;

ID NAME
---------- --------------------
1 aaa
2 bbb

[[email protected]#16-12月-11] SQL>select * from t2;

ID AGE
---------- ----------
1 20
3 30
左外连接:
[[email protected]#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id;

ID NAME ID AGE
---------- -------------------- ---------- ----------
1 aaa 1 20
2 bbb
右外连接:
[[email protected]#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id;

ID NAME ID AGE
---------- -------------------- ---------- ----------
1 aaa 1 20
3 30

从上面的显示你可以看出:左外连接是以左边的表为基准。通俗的讲,先将左边的表全部显示出来,然后右边的表id与左边表id相同的记录就“拼接”上去,比如说id为1的记录。如果没有匹配的id,比如说t1中id为2的t2中就没有。那边就以null显示。
右外连接过程正好相反。

再看内连接:
[[email protected]#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id;

ID NAME ID AGE
---------- -------------------- ---------- ----------
1 aaa 1 20

看到没有? 只有一条记录。内连接就是只取出符合过滤条件的记录 也就是t1.id=t2.id 那么符合t1.id=t2.id的记录只有id=1这一条,所以只显示一条。 不像外连接,是将你作为基准的表(左外连接就是左边表为基准,右外连接就是右边表为基准)的所有行都显示出来。









































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

学习总结SQL的连接:内连接外连接左连接右连接

SQL:内连接左外连接右外连接全连接交叉连接区别

SQL Server内连接左外连接右外连接完全连接交叉lianjie

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

mysql 左连接 右连接 内链接

内连接,外链接(左连接右连接全连接),交叉连接大总结+附SQL JOINS图解[转]