SQL inner join、left join、right join用法

1.连接运算由两部分构成:连接类型与连接条件

连接类型可分为

INNER JOIN(等值连接)

LEFT  JOIN(左联接) 

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

连接条件可分为

NATURAL   自然连接(去掉重复属性)

ON   连接条件(保留重复属性)

USING 属性名1,属性名2… (保留指定重复属性)

 

2.操作实例

  表A记录如下:

  aID      aNum

   1         a2016001

   2         a2016002

   3         a2016003

   4         a2016004

   5         a2016005

 

  bID       bName

   1          bmumu001

   2          bmumu002

   3          bmumu003

   4          bmumu004

   6          bmumu006

 

 测试如下:

 1.left join

  sql语句如下:

  select * from A left join B on a.aID=b.bID

  结果如下:

 aID        aNum             bID         bNAME

 1           a2016001         1           bmumu001

 2           a2016002         2           bmumu002

 3           a2016003         3           bmumu003

 4           a2016004         4           bmumu004

 5           a2016005        NULL       NULL

   结果说明:

   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           a2016001         1           bmumu001

 2           a2016002         2           bmumu002

 3           a2016003         3           bmumu003

 4           a2016004         4           bmumu004

 NULL       NULL               6           bmumu006

   结果说明:

   仔细观察一下,就会发现和left join的结果刚刚相反, right join 是以B表的记录为基础的,A表记录不足的地方用NULL填充

 

3.inner join

  sql语句如下:

select * from A inner join B on a.aID=b.bID

  结果如下:

 aID        aNum             bID         bNAME

 1           a2016001         1           bmumu001

 2           a2016002         2           bmumu002

 3           a2016003         3           bmumu003

 4           a2016004         4           bmumu004

    结果说明:

    很明显,inner join 只显示了 a.aID=b.bID的记录,这说明inner join 只显示符合条件的记录

  

 

posted @ 2016-10-28 17:43  木木的博客  阅读(4087)  评论(1编辑  收藏  举报