首先声明,当你看到这篇文章时,或许看不懂,因为这是我自己通过自己理解而写的笔记、
两个参照表table1和table2都存在id字段,但是table1、table2中其余字段不同.
如果table1.id存在有1,2,3而table2.id中有1,3,4三个值
使用各种连接的语法,
select * from table1
left join table2 on table1.id=table2.id;
紫色字段可以填充 left join(左连接),right join(右连接),full join(全连接),join(内连接).
交叉连接
select * from table1 cross join table2;
根据不同的链接,产生出不同的结果。
左连接,参照为table1,
那么结果则是参照table1.id给出。也就是1,2,3而table2.id并没有对应值为3的参照,其相应用null填充。
右连接参照table2.id给出,而用法与左连接类似。此处不再赘述。
全连接。要参照table1.id和table2.id给出,会产生4个字段结果。table1存在而table2不存在的字段用null填充。反之亦然。多说一句。可以说全链接是左、右连接的并。
内连接产生两个字段,即左、右连接的交。只产生table1.id=table2.id的结果。可以认为就是select * from table1 table2 where table1.id = table2.id;
交叉连接产生的结果比较多,有9个结果,即table1.id。size()×table2.size()。(此处不规范,但是自己做的笔记能明白就可以了)。
即笛卡尔积。