数据库——SQL中的join连接
来源:互联网 发布:爱迪生电弧打火机 淘宝 编辑:程序博客网 时间:2024/06/06 07:05
SQL中join的不同类型:
- INNER JOIN:仅返回匹配的行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:左右外连接结果的并集
分类:
内连接:包括等值连接和自然连接,使用=,<>之类的比较运算符
等值连接:必须要有等值的条件,列的属性可以不同,条件不同时连接结果也不同;自然连接:必须要有相同的列属性。例如: M:A B N:B C 1 2 2 1 3 3 7 2 5 9 3 5等值连接(M.A=N.C) A M.B N.B C 1 2 2 1 5 9 3 5等值连接(M.B=N.B) A M.B N.B C 1 2 2 1 3 3 3 5自然连接 A B C 1 2 1 3 3 5
外连接:包括左外连接,右外连接和完整外连接
交叉连接(cross join):又称笛卡尔积,返回左表中的所有行,左表中每行与右表中的所有行组合,即缺少连接谓词或连接谓词总为真的内连接。
--交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一的每个行都要与数据集合二中的每一个行分别组成一个新的行。 大多数交叉连接都是由于错误操作而造成的;但是它们却非常适合向数据库中填充例子数据,或者预先创建一些空行以便为程序执行期间所要填充的数据保留空间。--若表A有3条记录,表B有6条记录,则笛卡尔连接后会得到3*6=18条结果 注:在交叉连接中没有on条件子句
INNER JOIN
仅取出匹配的数据
select * from a inner join b on a.aid = b.bid注:inner和inner join等价,则inner可省略,a.aid和b.bid字段无需名称相同,但必须数据类型相同
LEFT JOIN
首先取出a表中所有数据,然后再加上与a,b匹配的的数据,b没有的为null
select * from a left join b on a.aid = b.bid 注:left outer join与left join等价,左连接属于外连接默认是outer属性,outer是相对于inner而言的,所以可以省略
RIGHT JOIN
首先取出b表中所有数据,然后再加上与a,b匹配的的数据 ,a没有的为null
select * from a right join b on a.aid = b.bid
FULL JOIN
首先取出a表和b表中所有数据,然后再加上a与b中没有匹配上的数据,空缺的值为null
其他相关:
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。
在使用left jion时,on和where条件的区别如下:
1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。
————————待求证?
外关联是Oracle数据库的专有语句
一般说来,外关联的等值条件等效于Left Outer Join中的on语句;两个where中其他语句是一样的。
但是Left Outer Join中的其他条件(非表连接)出现在On关键词后面还是出现在Where关键词后面是不一样的,这样的语句很难用外关联进行同义转义。
阅读全文
0 0
- 数据库——SQL中的join连接
- Sql 数据库 join 连接
- SQL中的join连接
- SQL中的join连接
- 数据库中的join连接
- 数据库中的连接(JOIN)
- SQL中的连接操作(join, left join, right join)
- sql语句中的连接(join)
- 数据库查询中的连接操作(join)
- SQL中的交叉连接(CROSS JOIN)、内连接(INNER JOIN)、外连接(OUTER JOIN)
- 数据库中的左连接(left join),右连接(right join)和内连接(inner join)
- SQL中的join连接查询(left join/right join/inner join)
- SQL点滴2—重温sql语句中的join操作
- SQL中的left outer join,inner join,right outer join各种连接用法
- SQL Server中的三种物理连接图文解析:Loop Join,Merge Join,Hash Join
- 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)
- Sql语句——limit、inner join(内部连接) left join (左链接)
- sql语句中的连接(join)左连接,右连接,全连接,交叉连接
- 解决Windows下启动mysql服务错误(系统进程意外终止,1067)
- 关于AIDL中的in、out和inout修饰符
- 如果在docker中部署tomcat,并且部署java应用程序
- 伪代码编程过程
- Json读写2017.9.23
- 数据库——SQL中的join连接
- 无穷小微积分的模型论思想
- 用OC和UI实现购物车功能 在iOS平台上
- SocketDemo 类似聊天室
- C语言程序,求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
- 动态规划-343. Integer Break
- Spring系列之Spring常用注解总结
- 使用Loader获取Android联系人列表
- leetcode--189.Rotate