我很喜欢那些概念,然而,似乎这然我们认为可以用它应用到实际。假设我们已经有了以下两个表,表A 在左边,表B在右边。我们要用4个标记来填充它们。
id name id name
1 pirate 1 Rutabaga
2 Monkey 2 pirate
3 ninja 3 Darth vader
4 spaghetti 4 ninja
让我们连接这些表,利用名称字段通过不同的方式来解决。来看看我们是否可以总结些概念匹配这些漂亮的韦恩图
select * from Table A inner join Table B
内连接产生的结果只匹配那些既符合表A和表B的结果,
select * from Table A Full outer Join TableB
on Table A.name=Table.name
完全外连接是产生既有表A又有表B的记录
当表B没有与表A匹配的字段时就会对应null值
Left outer join 左连接。表A的字段完全显示,并且只显示表B与表A匹配的字段,表B其他的值为null
select * from TableA left out join tableB on tableA.name=tableB.name
where tableB.Id is null
显示的只有表A特有的部分
select * from tableA full outer join tableB on TableA.name=TableB.name
where TableA.id Is null or TableB.Id is null
查找出来的将是 表A和表B非公共的部分
select * from TableA Cross join TableB
将产生笛卡尔集 4*4=16