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 只显示符合条件的记录

  

 

转载于:https://www.cnblogs.com/jilijiu/p/6008792.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值