如表   
  -------------------------------------------------   
  table1 | table2 |   
  -------------------------------------------------   
  id name |id score |   
  1 lee |1 90 |   
  2 zhang |2 100 |   
  4 wang |3 70 |   
  -------------------------------------------------   

  以下均在查询分析器中执行   

  一、外连接   
  1.概念:包括左向外联接、右向外联接或完整外部联接   

  2.左连接:left   join   或   left   outer   join   
  (1)左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。   
  (2)sql语句   
  select   *   from   table1   left   join   table2   on   table1.id=table2.id   
  -------------结果-------------   
  id name id score   
  ------------------------------   
  1 lee 1 90   
  2 zhang 2 100   
  4 wang NULL NULL   
  ------------------------------   
  注释:包含table1的所有子句,根据指定条件返回table2相应的字段,不符合的以null显示   

  3.右连接:right   join   或   right   outer   join   
  (1)右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。   
  (2)sql语句   
  select   *   from   table1   right   join   table2   on   table1.id=table2.id   
  -------------结果-------------   
  id name id score   
  ------------------------------   
  1 lee 1 90   
  2 zhang 2 100   
  NULL NULL 3 70   
  ------------------------------   
  注释:包含table2的所有子句,根据指定条件返回table1相应的字段,不符合的以null显示   

  4.完整外部联接:full   join   或   full   outer   join     
  (1)完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。     
  (2)sql语句   
  select   *   from   table1   full   join   table2   on   table1.id=table2.id   
  -------------结果-------------   
  id name id score   
  ------------------------------   
  1 lee 1 90   
  2 zhang 2 100   
  4 wang NULL NULL   
  NULL NULL 3 70   
  ------------------------------   
  注释:返回左右连接的union(见上左、右连接)   

  二、内连接   
  1.概念:内联接是用比较运算符比较要联接列的值的联接   

  2.内连接:join   或   inner   join     

  3.sql语句   
  select   *   from   table1   join   table2   on   table1.id=table2.id   
  -------------结果-------------   
  id name id score   
  ------------------------------   
  1 lee 1 90   
  2 zhang 2 100   
  ------------------------------   
  注释:只返回符合条件的table1和table2的列   

  4.等价(与下列执行效果相同)   
  A:select   a.*,b.*   from   table1   a,table2   b   where   a.id=b.id   
  B:select   *   from   table1   cross   join   table2   where   table1.id=table2.id     (注:cross   join后加条件只能用where,不能用on)   

  三、交叉连接(完全)   

  1.概念:没有   WHERE   子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1和table2交叉连接产生3*3=9条记录)   

  2.交叉连接:cross   join   (不带条件where...)   

  3.sql语句   
  select   *   from   table1   cross   join   table2   
  -------------结果-------------   
  id name id score   
  ------------------------------   
  1 lee 1 90   
  2 zhang 1 90   
  4 wang 1 90   
  1 lee 2 100   
  2 zhang 2 100   
  4 wang 2 100   
  1 lee 3 70   
  2 zhang 3 70   
  4 wang 3 70   
  ------------------------------   
  注释:返回3*3=9条记录,即笛卡尔积   

  4.等价(与下列执行效果相同)   
  A:select   *   from   table1,table2

sql 内连接和外链接的更多相关文章

  1. SQL - 内连接与外连接

    PDF下载地址:SQL-内连接与外连接.pdf 连接查询在关系型数据库中经常用到,是多表联合查询的基础. 主要包含:内连接,外连接,交叉连接. SQL - 内连接与外连接 内连接 等值连接 不等值连接 ...

  2. 内连接,外链接(左连接、右连接、全连接),交叉连接大总结+附SQL JOINS图解[转]

    1.什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 2.分类: 首先划分一下,连接分为三种:内连接.外连接.交叉连接 内连接(INNER ...

  3. 关于SqlServer的内连接,外链接以及left join,right join之间的一些问题与区别。

    就我个人理解通俗点来说内连接和外连接区别: 内连接 inner join或者 join (被默认为内连接) : 内连接的原理是:先进行语句判断和运行得出结果,然后在将结果连接起来,一般是横着连接. 外 ...

  4. My SQL的内连接,外链接查询

    1.内连接:只连接匹配的行. 2.左外连接:包含左边表的全部行,以及右边表中所有匹配的行,无论右边的表有没有和左边匹配的行,左边的所有行都必须要显示. 3.右外连接:包含右边表的全部行,以及左边表中所 ...

  5. sql 内连接、外连接、自然连接等各种连接

    1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和c ...

  6. SQL内连接与外连接的区别【转】

    --表stuid name 1, Jack2, Tom3, Kity4, nono--表examid grade1, 562, 7611, 89 内连接 (显示两表id匹配的)select stu.i ...

  7. MySQL (五)--连接查询简介、 交叉连接、 内连接、外连接、自然连接、温馨小提示

    1 连接查询简介 将多张表(可以大于2)进行记录的连接(按照某个指定的条件进行数据拼接). 最终结果:记录数可能会有变化,字段书一定会增加(至少两张表的合并). 连接查询:join,使用方式:左表 j ...

  8. 你真的会玩SQL吗?和平大使 内连接、外连接

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  9. SQL Server中内连接和外连接的区别

    SQL Server中内连接和外连接的区别 假设一个数据库中有两张表,一张是学生表StudentInfo,一张是班级表ClassInfo,两张表之间用ClassId字段进行关联. 如果用内连接,正常的 ...

随机推荐

  1. 谈谈javascript语法里一些难点问题(一)

    1)    引子 前不久我建立的技术群里一位MM问了一个这样的问题,她贴出的代码如下所示: var a = 1; function hehe() { window.alert(a); var a = ...

  2. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之材质了解Materials

    [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之材质了解Materials 既上一篇分享了中文字幕的灯光介绍Lights后,本篇分享一下第3个已完工 ...

  3. (翻译)正确实施DevOps-The Lay of the Land

    原文地址:http://www.drdobbs.com/architecture-and-design/getting-devops-right-the-lay-of-the-land/2400626 ...

  4. zk系列-zookeeper的使用

    zk支持java/c访问,java常用的有apache-zkclient.社区版的i0tec-zkclient.github.adyliu,apache-zkclient是zk自身提供的接口,i0te ...

  5. java内功 ---- jvm虚拟机原理总结,侧重于GC

    写作日期 2016-08-22-23 交流qq:992591601 参考资料:<深入理解java虚拟机>.<thinking in java>.<Effective Ja ...

  6. netstat 1

    lsof -i   :8086 第二个参数需要:开头 netstat linux  -a (all)显示所有选项,默认不显示LISTEN相关 理解这个很关键, 这是为什么我们netstat -a 不显 ...

  7. JS判断鼠标移入元素的方向

    最终效果 这里的关键主要是判断鼠标是从哪个方向进入和离开的 $("li").on("mouseenter mouseleave",function(e) { v ...

  8. Model-View-Controller(MVC) is an architectural pattern that frequently used in web applications. Which of the following statement(s) is(are) correct?

    Model-View-Controller(MVC) is an architectural pattern that frequently used in web applications. Whi ...

  9. ListView优化为何ViewHolder用static类(转载)

    如果有人还不了解ViewHolder为什么可以起到优化作用,我这边再做下简单说明:Android的findViewById动作是比较耗时的,需要遍历布局的树形结构,才能找到相应的视图.所以如果想在这一 ...

  10. UML基础系列:用例图

    1. 概述 用例图(Use Case Diagram)描述“用户.需求.系统功能单元”之间的关系,是参与者所能观察和使用到的系统功能模型图. 用例图用于需求分析阶段 用例图包含6个基本元素:参与者(A ...