重拾数据库05

联表查询

在数据库查询操作中,往往所需要的数据并不是一个表中就能完全查出来的,这就需要外卖操作两个或者多个表,那么如何实现几个表的数据同时查询获取呢?

JOIN ON

七种join理论
join 表名 on 条件判断
在这里插入图片描述

思路

1、分析需求,分析查询的字段来自哪些表(脸表查询)
2、确定用哪种查询方式(上图有7种)
3、确定交集

实际操作

测试数据库见之前的文章传送门
这数据库代码可能和我现在用的不太一样,毕竟我在此基础上操作了很多,但基本是可以使用的
比如我要查询学生学号、姓名、成绩

INNER JOIN

这个是用于查询两个存在交集数据库的语句

SELECT s.studentno,studentname,studentresult
FROM student AS s -- 因为studentno是student和result里面共有的
INNER JOIN result AS r -- 所以需要通过起别名的方式区分
WHERE s.studentno=r.studentno

查询结果就是这样的在这里插入图片描述

LEFT JOIN 与 FRGHT JOIN

结合上面的inner join归纳一下吧

语法描述
inner join表中至少有一个匹配,就都返回
left join即使右表没匹配成功,也会从左表中返回所有的值
right join即使左表没匹配成功,也会从右表中返回所有的值

那么左右怎么区分呢
在这里插入图片描述

语句放中间,就有相对位置了
比如我在student表中插入一个学生在这里插入图片描述
但结果表里并没有这个,结果表插入的是1008的成绩
在这里插入图片描述
执行语句

SELECT s.studentno,studentname,studentresult
FROM student AS s LEFT JOIN result AS r 
ON s.studentno=r.studentno

则会以左边的表为准
在这里插入图片描述
此处出现了刘行

反之用right

SELECT s.studentno,studentname,studentresult
FROM student AS s RIGHT JOIN result AS r 
ON s.studentno=r.studentno

在这里插入图片描述
出现了刚才录入的1008号学生的成绩

具体应用呢,比如要查询缺考的学生,那么就是上文的左查询,如果数据量较大的话,用where限定词筛选

SELECT s.studentno,studentname,studentresult
FROM student AS s LEFT JOIN result AS r 
ON s.studentno=r.studentno
WHERE studentresult IS NULL

在这里插入图片描述

多表查询

比如我要查询学生,学号,考试科目,考试成绩呢
这就要用到表 student result subject
怎么结合呢?

SELECT s.studentno,studentname,studentresult,subjectname
FROM student AS s LEFT JOIN result AS r 
ON s.studentno=r.studentno
INNER JOIN `subject` AS sub  -- 在加入一张表
ON r.subjectno = sub.subjectno

结果如图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值