SQL Join —— 左联接、右联接、内联接等


今天听到有位童鞋说cvte面试问到数据库左联接、右联接的问题了,才发现自己不知道,所以总结了下。

如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join具备联接表或函数进行查询的特性。
举个例子,有两个表学校表(school)和教师表(teacher)
school(num,name,leader)num:学校编号;name:学校名;leader:学校领导
teacher(name,school)name:教师名;school:教师所属学校

1、左联接(Left join)

即包含所有join左边表中的记录甚至是右边表中没有与之匹配的记录,没有与之匹配的记录用null表示。
sql语句:SELECT school.name,teacher.name 
FROM school LEFT JOIN teacher ON school = num
这句话就是说查询所有学校以及其中的老师,如果一个学校中没有老师,那么就是null。
它以左表为主。

2、右联表(Right join)

即包含所有join右边表中的记录甚至是左边表中没有与之匹配的记录,没有与之匹配的记录用null表示。
sql语句:SELECT school.name,teacher.name 
FROM school RIGHT JOIN teacher ON school = num
这句话就是说查询所有老师以及其所在的学校,如果老师没有学校,那么就是null。
它以右表为主。

3、内联接(Inner join)

sql语句:SELECT school.name,teacher.name 
FROM teacher INNER JOIN school ON school=num
这句话就是说要列出同时存在的老师的名字和他所属的学校,内联接满足交换律:“A inner join B”和“B inner join A”是相等的。

4、全联接(full join 或者 full outer join)

是要将两个表中所有数据都列出来,有空为null

等等还有一些交叉联接等联接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值