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