sql中各种join的笔记

首先声明,当你看到这篇文章时,或许看不懂,因为这是我自己通过自己理解而写的笔记、

两个参照表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()。(此处不规范,但是自己做的笔记能明白就可以了)。
即笛卡尔积。

posted on 2008-10-31 20:43 duduli 阅读(311) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

公告

welcome to my place.

常用链接

留言簿(5)

我参与的团队

随笔分类

随笔档案

新闻分类

石头JAVA摆地摊儿

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

@duduli