SQL中有几种连接?有什么区别?(左连右连内连和外连?)

SQL中有几种连接?有什么区别?(左连右连内连和外连?),第1张

两个主要的连接类型是内连接和外连接。到目前为止,所有示例中使用的都是内连接。内连接只保留交叉积中满足连接条件的那些行。如果某行在一个表中存在,但在另一个表中不存在,则结果表中不包括该信息。

外连接是内连接和左表和/或右表中未包括内连接中的那些行的并置。当对两个表执行外连接时,可任意将一个表指定为左表而将另一个表指定为右表。外连接有三种类型:

左外连接包括内连接和左表中未包括在内连接中的那些行。

右外连接包括内连接和右表中未包括在内连接中的那些行。

全外连接包括内连接以及左表和右表中未包括在内连接中的行。

内外连接:

内连接:取的两个表的(有能连接的字段),的交集,即字段相同的。利用内连接可获取两表的公共部分的记录,

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 "


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存