数据库join的用法
数据库常见的join方式有三种:inner join、left outter join、right outter join(还有一种full join,因不常用)。这三种连接方式都是将两个以上的表通过on条件语句拼成一个大表。以下是它们共同点:
1、关于左右表的概念。左表指的是在SQL语句中排在left join左边的表,右表
值得是排在left join右边的表。
2、在拼成的大表中,左表排在左边,右表排在右边。
3、On条件语句最好用=号对两表相应的主外键进行连接。当然,也可以用其他
操作符,如>,<来连接两个表的任一个字段,此时的关系将非常复杂,连接后
的记录数也随之而变得不确定。如果在一些特殊的场合中需要用到这种方式,
必须通过简单的实例加以确认,否则,连接结果很可能不是我们所想要的。 4、On条件语句不能省略。
5、可以连锁使用join,每次使用join都令另一表与当前的表或连接的结果相连
接。
Inner join
目的:将两表中符合on条件的所有记录都找出来。
规律:
1、拼出的大表记录不会增加。
2、如果左边与右边的关系是一对多的关系,在选出的任一记录中,假若右表有
多个记录与其对应,那么,连接后的左表,主键将不再唯一。 3、典型应用:将存在多关系的引用表放在左表,将存在一关系的被引用表放在
右表,通过=号将主外键进行连接,通过对右表设定过滤条件,选出相应的且
主键唯一的左表记录。
Left outter join
目的:将左表的所有记录列出,右表中只要符合on条件的,与左表记录相拼合,不符合条件的,填以null值。
规律:
1. 选出所有符合条件的左表,如果左表与右表的关系是一对一关系,则拼成的
大表记录不会改变。
2. 如果左表与右表的关系是多对一的关系,则拼成的大表记录也不会改变。 3. 如果左表与右表的关系是一对多的关系,则拼成的大表记录会增加。对于每
一具有一对多关系的左表记录,如果左表1:N与右表对应,那么会多出N-1
条记录。例如,如果左表第一条记录1:3对应右表,多出2条记录。如果左
表第二条记录1:2对应于右表,则再多出1条记录。这样,总共多出3条记
录。其他类推。
4. 如果左边与右表的关系是一对多的关系,在选出的任一记录中,假若右表有
多个记录与其对应,那么,连接后的左表,主键将不再唯一。 5. 如果左表与右表的关系是一对多的关系,对于左表任一记录,如果右表没有
记录与其对应,则全部填以null值。
典型应用:将存在多关系的应用放在左表,将存在一关系的被引用表放在右表,通过对右表设定过滤条件,选出相应的且主键唯一的左表记录。 right outter join
格式: select * from 部门 right join 组织 on 部门.组织编号 = 组织.编号
格式: select * from 组织 right join 部门 on 部门.组织编号 = 组织.编号
目的:将右表的所有记录列出,左表中只要符合on条件的,与右表记录相拼合,不符合条件的,填以null值。
规律:(与left outter join相反)
典型应用:可转化成left outter join。例如
select * from 组织 right join 部门 on 部门.组织编号 = 组织.编号
与
select * from 部门 left join 组织 on 部门.组织编号 = 组织.编号
的效果一样
备注:right outter join可用right join代替。在有些数据库中,如HSqlDb, 没有实现right join功能。
转化为where子句:
select * from 部门, 组织 where 部门.组织编号 = 组织.编号
本文档为【数据库join的用法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。