Mysql|Mysql连表查询JoinON详细笔记 作者:哇塞大嘴好帥

Mysql连表查询JoinON详细笔记 作者:哇塞大嘴好帥 作者:哇塞大嘴好帥(哇塞大嘴好帅)
数据库
user表

id studentid name
1 186310 哇塞大嘴好帥
成绩表
id studentid JavaLang
1 186310 666
方法一 连接查询
? 如果使用连接查询必须保证两个表之间有相同的字段,使用INNER JOIN 获取他们的并集 共有的字段。并且确保两个字段内容一致
/* 使用查询方法 连接查询 */ SELECT u.id, u.studentid, u.name, s.JavaLang FROM `user` AS u INNER JOIN score AS s ON s.studentid = u.studentid

查询出的数据
id studentid name JavaLang
1 186310 哇塞大嘴好帥 666
方法二 又查询
/* 使用查询方法 又查询 */ SELECT u.id, u.studentid, u.name, s.JavaLang FROM `user` AS u right JOIN score AS s ON s.studentid = u.studentid

id studentid name JavaLang
1 186310 哇塞大嘴好帥 666
方法三 左查询
/* 使用查询方法 左查询 */ SELECT u.id, u.studentid, u.name, s.JavaLang FROM user as u left join score as s on s.studentid = u.studentid

id studentid name JavaLang
1 186310 哇塞大嘴好帥 666
我们这时候做一个测试,我们在user表添加一行数据
id studentid name
1 186310 哇塞大嘴好帅
2 186311 大嘴小学生
这时候我们在使用三种查询方式查看结果
连接查询
id studentid name JavaLang
1 186310 哇塞大嘴好帥 666
又查询
id studentid name JavaLang
1 186310 哇塞大嘴好帥 666
左查询
id studentid name JavaLang
1 186310 哇塞大嘴好帥 666
2 186311 大嘴小学生 NULL
通过以上的三种查询方式我们可得一个结论
代码 描述
INNER JOIN 必须左右表匹配,才可以返回
LEFT JOIN 即使右表没有匹配也会返回左表所有值
RIGHT JOIN 即使左表没有匹配也会返回右表所有值
【Mysql|Mysql连表查询JoinON详细笔记 作者:哇塞大嘴好帥】通过连表左表查询JavaLang字段为null的数据
select u.id u.studentid u.name s.JavaLang FROM user as u left JOIN score s on u.studentid = s.studentid where JavaLang is null

id studentid name JavaLang
1 186310 大嘴小学生 NULL
? 因为我们左表查询会把左表所有的数据显示出出来,我们的项目需求只是要查询javaLang为Null的用户,所有我们再加一个判断where JavaLang is null就可以查询出来为null的用户
where与on的区别
语法 描述
on 连接查询
where 等值查询
复杂的sql连表查询
为了添加复杂性这时候我们在添加一个表
userclass表
id studentid class
1 186310 2
select u.id, u.studentid, u.`name`, s.JavaLang, sc.class from user asu left join score as s on u.studentid = s.studentidinner join userclass sc on u.studentid = sc.studentid

id studentid name JavaLang class
1 186310 哇塞大嘴好帥 666 2
首先先左表查询出来数据,接后又连表查询的数据,展示出我们想要的字段(u.id,u.studentid,s.JavaLang,u.name,sc.class)。

    推荐阅读