SQL中inner join、left join、right join、outer join之间的区别

举个例子你就能知道了!

A表(a1,b1,c1)      B表(a2,b2)

a1   b1   c1       a2    b2

01   数学 95       01    张三

02   语文 90       02    李四

03   英语 80       04    王五

select A.*, B.* from A

inner join B on(A.a1=B.a2)

结果是:  www.2cto.com

a1   b1   c1       a2    b2

01   数学 95       01    张三

02   语文 90       02    李四

select A.*, B.* from A

left outer join B on(A.a1=B.a2)

结果是:

a1   b1   c1       a2    b2

01   数学 95       01    张三

02   语文 90       02    李四

03   英语 80       NULL  NULL

select A.*, B.* from A

right outer join B on(A.a1=B.a2)

结果是:

a1   b1   c1       a2    b2

01   数学 95       01    张三

02   语文 90       02    李四

NULL NULL NULL     04    王五

select A.*,B.* from A

full outer join B on(A.a1=B.a2)

结果是:

a1   b1   c1       a2    b2

01   数学 95       01    张三

02   语文 90       02    李四

03   英语 80       NULL  NULL

NULL NULL NULL     04    王五

时间: 2024-10-24 13:13:15

SQL中inner join、left join、right join、outer join之间的区别的相关文章

转【】浅谈sql中的in与not in,exists与not exists的区别_

浅谈sql中的in与not in,exists与not exists的区别 1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表大小相当,那么用in和exists差别不大:如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表) select * from A where cc in(sele

Spring中Bean的命名问题及ref和idref之间的区别

一直在用Spring,其实对其了解甚少,刚去了解了一下Spring中Bean的命名问题以及ref和idref之间的区别,略作记录,以备后查. Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此

SQL中order by;group up;like;关联查询join on的用法

排序order by的用法: 1.order by 字段名1 asc/desc, 字段名2 asc/desc,... 先按照字段名1的升序/降续给表进行排列 然后 按照字段名2的升序/降续给表进行排列. 其中排在前面的字段名优先进行排列,排在后面的在前面的基础上在进行排列. 2. order by 字段序号 asc/desc, 字段序号 asc/desc,... 按照字段的序号进行排列,字段的序号就是表中每个字段从左到右依次排列的顺序,从1开始.字段序号对应相应的字段名. 3. asc(升序)/

浅谈sql中的in与not in,exists与not exists的区别

1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表大小相当,那么用in和exists差别不大:如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表) select * from A where cc in(select cc from B) -->效率低,用到了A表上cc列的索引:sele

sql中的in与not in,exists与not exists的区别

1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询,一直以来认为exists比in效率高的说法是不准确的.如果查询的两个表大小相当,那么用in和exists差别不大:如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表) select * from A where cc in(select cc from B) -->效率低,用到了A表上cc列的索引: sel

sql中update,alter,modify,delete,drop的区别和使用(整理)(转)

关于update和alter: 百度知道上关于update和alter有一个很形象的总结: 一个表有很多字段,一个字段里有很多数据. 一个家有很多房间,一个房间里有很多家具. update是用来将衣柜改成书架的. alter是用来将厨房改成厕所的. 把卧室改成厕所: alter table 你家 change 厨房 厕所 varchar(8); 在你的家里面加一个厕所: alter table 你家add 厕所 varchar(8);(8表示厕所8平米) 修改厕所大小: alter table

sql中update,alert,modify,delete,drop的区别和使用(整理)

关于update和alert: 百度知道上关于update和alert有一个很形象的总结: 一个表有很多字段,一个字段里有很多数据. 一个家有很多房间,一个房间里有很多家具. update是用来将衣柜改成书架的. alert是用来将厨房改成厕所的. 把卧室改成厕所: alert table 你家 change 厨房 厕所 varchar(8); 在你的家里面加一个厕所: alert table 你家add 厕所 varchar(8);(8表示厕所8平米) 修改厕所大小: alert table

java中的装饰设计模式,浅谈与继承之间的区别

最初接触装饰设计模式,一直搞不懂这么做的意义是什么,看了网上很多的资料,对于与继承的区别并没有很清楚的分析,直到看到这篇博客:http://www.cnblogs.com/rookieFly-tdiitd/p/4914593.html 这篇就很清楚的解释了装饰设计模式与继承之间的区别.下面是我自己的一些理解. 一.概念 装饰模式又称为包装模式,动态地给对象添加功能,是继承关系的一种替代方法. 二.选择 子类通过继承也能增加功能,但是关于装饰模式与继承之间如何选择,请看下面的例子. 假设:煎饼是父

jQuery中append appendTo prepend prependTo insertBefore insertAfter after before之间的区别

jQuery中有一个很关键的元素操作,他们的使用方法都一样,但是呈现的结果有所不同. <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>test</title> <script src="jquery.js"></script> </head> <

SQL中的left outer join,inner join,right outer join用法详解

这两天,在研究SQL语法中的inner join多表查询语法的用法,通过学习,发现一个SQL命令,竟然涉及到很多线性代数方面的知识,现将这些知识系统地记录如下: 使用关系代数合并数据1 关系代数合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的.在关系代数的形式化语言中:?          用表.或者数据集合表示关系或者实体.?          用行表示元组.?          用列表示属性.关系代数包含以下8个关系运算符?          选取――返回满足指定条