数据库—查询语句中left join怎么用?以及right join怎么用?

从数据库中查询数据时,会经常使用到多张表的数据,有些数据需要从两张或多张表中共同获取。
举个例子,这里有两张表格,分别是学生信息表(表A)、学生成绩表(表B)。

stunumstunamemajorage
20200101张三软件工程18
20200102李莉计算机科学与技术19
20200103王五信息技术20
20200104张小软件工程20
stunumstumnamemathenglishshujujiegou
20200101张三678060
20200102李莉808589
20200103王五757590
20200104张小757595

例一 假设我们要查询专业为转件工程的同学的各科成绩,可以看到专业信息在表A,成绩信息在表B,如果我们要查询的话,要以表A为基础,因为首先要查到专业为软件工程专业的学生,这时我们把表A作为左表,用左连接来查询。
查询语句为:

select  A.stunum,A.stuname,A.major,B.math,B.english,B.shujujiegou #查询A表的学号、A表的姓名、A表的专业、以及B表数学、英语、数据结构成绩。
from A left join B #从A与B的左连接表中
where major="软件工程" and  A.stunum=B.stunum #条件是专业为软件工程且学号相等
order by A.stumun asc; 按学号升序排列

查询结果为,从左到右字段分别为学号、姓名、专业、数学分数、英语分数、数据结构分数。

20200101张三软件工程678060
20200104张小软件工程757595

这就是left join的用法,以左表为基础来查询。

例二 假设要查询数据结构分数在80分以上的同学的学号,姓名、专业、年龄。从表中可以看到成绩在表B中,所以要先从表B中查询到数据结构分数大于80分的同学,然后再去表A查询专业、年龄字段。
查询语句为:

select A.stunum,A.stuname,A.major,A.age,B.shujujiegou #查询学号、姓名、专业、年龄、数据结构分数
from A right join B #从A与B的右连接表中
where B.shujujiegou >'80'and A.stunum=B.stunum #条件是数据结构分数大于80且A与B的学号相等
order by B.shujujiegou asc;#按数据结构分数升序排列

查询结果为,从左到右字段分别为学号、姓名、专业、年龄、数据结构分数。

20200102李莉计算机科学与技术1989
20200103王五信息技术2090
20200104张小软件工程2095

这就是right join的用法,以右表基础来查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值