left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

inner join(等值连接) 只返回两个表中联结字段相等的行

举例如下:

--------------------------------------------

表A记录如下:

aID     aNum

1     a20050111

2     a20050112

3     a20050113

4     a20050114

5     a20050115

表B记录如下:

bID     bName

1     2006032401

2     2006032402

3     2006032403

4     2006032404

8     2006032408

--------------------------------------------

1.left join

sql语句如下:

select * from A

left join B

on A.aID = B.bID

结果如下:

aID     aNum     bID     bName

1     a20050111    1     2006032401

2     a20050112    2     2006032402

3     a20050113    3     2006032403

4     a20050114    4     2006032404

5     a20050115    NULL     NULL

(所影响的行数为 5 行)

结果说明:

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.

换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).

B表记录不足的地方均为NULL.

--------------------------------------------

2.right join

sql语句如下:

select * from A

right join B

on A.aID = B.bID

结果如下:

aID     aNum     bID     bName

1     a20050111    1     2006032401

2     a20050112    2     2006032402

3     a20050113    3     2006032403

4     a20050114    4     2006032404

NULL     NULL     8     2006032408

(所影响的行数为 5 行)

结果说明:

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

--------------------------------------------

3.inner join

sql语句如下:

select * from A

innerjoin B

on A.aID = B.bID

结果如下:

aID     aNum     bID     bName

1     a20050111    1     2006032401

2     a20050112    2     2006032402

3     a20050113    3     2006032403

4     a20050114    4     2006032404

结果说明:

很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

--------------------------------------------

注:

LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。

field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。

compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。

如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.

SQL中left join、right join、inner join的区别相关推荐

  1. SQL中varchar和nvarchar的基本介绍及其区别

    SQL中varchar和nvarchar的基本介绍及其区别 varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储 ...

  2. 【转】SQL中where, group by, having的用法和区别

    group by,where,having 是数据库查询中最常用的几个关键字.在工作中,时常用到,那么,当一个查询中使用了where ,group by ,having及聚集函数时 ,执行顺序是怎么样 ...

  3. SQL中EXISTS的用法以及和IN的区别

    感谢大神分享,原链接在此 http://www.cnblogs.com/xuanhai/p/5810918.html (原文中有实例,非常不错,我是搬运工) 关于 EXISTS的使用 EXISTS(包 ...

  4. sql中 count(*),count(1)以及count(字段)的区别

    前言 记得很早以前就听说,在使用count的时候要用count(1)而不要用count(*),因为使用count(*)的时候会对所有的列进行扫描,相比而言count(1)不用扫描所有列,所以count ...

  5. sql 中 limit 与 limit,offset连用的区别

    ① select * from table limit 2,1; #跳过2条取出1条数据,limit后面是从第2条开始读,读取1条信息,即读取第3条数据 ② select * from table l ...

  6. SQL 中 unicode字符和非unicode字符的区别

    unicode字符就是一些标准的字符,例如英文.数字,不支持汉字. 非unicode是包含汉字和一些特殊字符 nvarchar支持汉字,但是每一个字符占用两个字节 比如有这样的字段:[Name] [n ...

  7. Oracle学习笔记:oracle和serverver在过程sql中通过select对变量进行赋值的区别

    变量的声明: oracle的变量必须在在declare部分声明--意思是必须建立begin end块,块结构也强制变量必须先声明后使用,即oracle变量在过程内是有不同作用域.不同的生存期的:同一变 ...

  8. SQL 中round(),floor(),ceiling()函数的用法和区别

    round() 遵循四舍五入把原值转化为指定小数位数 floor()向下舍入为指定小数位数 如:floor(1.45)= 1;floor(1.55) = 1 ceiling()向上舍入为指定小数位数 ...

  9. Oralce 使用SQL中的exists 和not exists 用法详解

    exists表示() 内子查询返回结果不为空,说明where条件成立就会执行sql语句:如果为空,表示where条件不成立,sql语句就不会执行. not exists和  exists相反,子查询语 ...

  10. sql中的几种删除操作

    sql中的几种删除操作用法与区别 1.delete语句 Delete删除表数据,保留表结构,且可以加where,删除一行或多行. 执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记 ...

最新文章

  1. 一篇文章让你读懂Pivotal的GemFire家族产品
  2. [zt]petshop4.0 详解之八(PetShop表示层设计)
  3. 病毒周报(071029至071104)
  4. P6847-[CEOI2019]Magic Tree【dp,线段树合并】
  5. 逆向调试完成端口回包实践总结
  6. 直男不懂女人心?10953 条数据告诉你女王节送什么口红色号!
  7. 排序算法(三) —— 直接插入排序
  8. Atitit.提升语言可读性原理与实践
  9. 如何在 Git 里撤销(几乎)任何操作
  10. python上的表白代码_用Python实现表白代码
  11. Mac上的全局翻译利器 : Bob + PopClip
  12. 怎么制作html静态页面,如何做静态网页
  13. PGP加密的基本操作
  14. php 语句以句号结尾,短句末尾是否用句号
  15. android+widget日历开发,安卓日历小部件源码(AppWidgetProvider)
  16. 瀑布流布局浅析+常用插件介绍(转改编)
  17. python自动喷人工具
  18. WebDriver - 伪浏览器PhantomJs(ghost driver) HtmlUnit
  19. 下一代降维打击黑科技现身中国
  20. 一键GHOST使用图文教程

热门文章

  1. SQL基础操作_6_处理数字
  2. 深度学习Caffe实战笔记(19)Windows平台 Faster-RCNN 制作自己的数据集
  3. argparse.ArgumentParser()的用法
  4. 迁移学习---inceptionV3
  5. C++之变量的作用域,生存期,可见性
  6. 算法: 把字字符串转化为整数;
  7. 移动端自动化==什么是Appium
  8. OkapiBarcode生成条形码
  9. 【368天】跃迁之路——程序员高效学习方法论探索系列(实验阶段126-2018.02.08)...
  10. Struts2的配置文件——web.xml