内连接(INNER JOIN)(典型的连接运算,使用像   =   或   <>   之类的比较运算符)。包括相等连接和自然连接。 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行 
左连接(LEFT   JOIN   或   LEFT   OUTER   JOIN)是右左边表中的数据为基准,若左表有数据右表没有数据,否则显示左表中的数据右表中的数据显示为空 
右连接(RIGHT  JOIN  或  RIGHT   OUTER   JOIN)是以右边表中的数据为基准,若右表有数据左表没有数据,否则显示右表中的数据左表中的数据显示为空 
全连接( FULL   JOIN   或   FULL   OUTER   JOIN)   完整外部连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 
下面用几个实例来详细说明 
两个表: 
A(id,name) 
数据:(1,张三)(2,李四)(3,王五) 
B(id,name) 
数据:(1,学生)(2,老师)(4,校长)

内连接结果: 
select A.*,B.* from A inner join B on A.id=B.id; 
1 张三 1    学生 
2 李四 2    老师

左连接结果: 
select A.*,B.* from A left join B on A.id=B.id; 
1 张三 1    学生 
2 李四 2    老师 
3 王五 NULL NULL

右连接结果: 
select A.*,B.* from A right join B on A.id=B.id; 
1    张三 1 学生 
2    李四 2 老师 
NULL NULL 4 校长

全连接结果 
select A.*,B.* from A full join B on A.id=B.id; 
1 张三 1    学生 
2 李四 2    老师 
3 王五 NULL NULL 
NULL NULL 4 校长

**************** 
补充:下面这种情况就会用到外连接 
比如有两个表一个是用户表,一个是交易记录表,如果我要查询每个用户的交易记录就要用到左外外连接,因为不是每个用户都有交易记录。 
用到左外连接后,有交易记录的信息就会显示,没有的就显示NULL,就像上面我举得例子一样。 
如果不用外连接的话,比如【王五】没有交易记录的话,那么用户表里的【王五】的信息就不会显示,就失去了查询所有用户交易记录的意义了。 
**************** 
对于JOIN参与的表的关联操作,如果需要不满足连接条件的行也在我们的查询范围内的话,我们就必需把连接条件放在ON后面,而不能放在WHERE后面,如果我们把连接条件放在了WHERE后面,那么所有的LEFT,RIGHT,等这些操作将不起任何作用,对于这种情况,它的效果就完全等同于INNER连接。对于那些不影响选择行的条件,放在ON或者WHERE后面就可以。
看一下结果就能明白各种连接的区别了。

最新文章

  1. [OC笔记] Category分类之见解
  2. 优秀的技术Leader
  3. POJ 1845 (约数和+二分等比数列求和)
  4. 第1章 UML基础:类的关系
  5. QTP10&amp;QTP11&amp;UFT11.5的安装和破解
  6. hdu 1573 x问题(中国剩余定理)HDU 2007-1 Programming Contest
  7. delphi 2010 资源文件使用
  8. 详解Android ActionBar之二:ActionBar添加Tabs标签和下拉导航
  9. [转]显示文件命令:cat、more、less、tail、touch详解
  10. github在eclipse中的配置
  11. Linux usb子系统(二):USB设备驱动usb-skeleton.c
  12. NAS简介
  13. php curl cookie 读写
  14. Python Tornado搭建高并发Restful API接口服务
  15. Google file system
  16. ONVIF让NVR与网络监控摄像机更&quot;亲密&quot;
  17. docker registry2
  18. MyBatis Generator XML 配置
  19. 003 Python与类C语言的区别(未完)
  20. 利用JS提交表单的几种方法和验证(必看篇)

热门文章

  1. 解决iframe缓存机制导致页面不清除缓存不刷新页面的bug
  2. js自执行函数
  3. 6.纯css绘制叮当猫
  4. Solr IK分词器配置
  5. heartbeat如何避免脑裂
  6. PAT Basic 1067 试密码 (20 分)
  7. Linux日常之数据重定向
  8. 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏
  9. /etc/fstab 下的配置参数
  10. 点对点协议PPP