欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

带你了解数据库中JOIN的用法

程序员文章站 2022-06-04 20:03:41
前言 欢迎关注公众号: Coder编程 获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识! 本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点。本次会介绍数据库中的 、`left join right join` 的用法以及它们之间的区别。 文章如有错误还请 ......

前言

欢迎关注公众号:coder编程
获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识!

本章主要介绍数据库中join的的用法,也是我们在使用数据库时非常基础的一个知识点。本次会介绍数据库中的inner joinleft joinright join 的用法以及它们之间的区别。 文章如有错误还请大家及时指出~

以下都是采用mysql数据库

join

相信大家在学习数据库的使用时,都有使用过join,对数据库中的两张或两张以上表进行连接操作。
join 分为:

  • 内连接(inner join)
  • 外连接(outer join)

其中外连接分为:

  • 左外连接(left outer join)
  • 右外连接(right outer join)
  • 全外连接(full outer join)

说明:

1.其中外连接的“outer”关键字可以省略不写。
2.内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录。

笛卡尔积

在我们进行多表联合查询的时候会出现的一种情况——笛卡尔积现象

我们以下面两张表举例:

学生表(student)
|id | studentname | studentclassid|
|---|---|---|
|1 | 小明| 1|
|2 | 小红| 2|
|3 | 小兰 | 3|
|4 | 小吕 | 2|
|5 | 小梓 | 1|

班级表(class)
|classid| classname|
|---|---|
|1 | 软件一班|
|2 | 软件二班|
|3 | 软件三班|

当我们进行查询操作的时候:

select * from student,class;


带你了解数据库中JOIN的用法
就会出现上面的情况,也就是笛卡尔现象,表student中有5条记录,表class中有3条记录,那么对于表student而言有5种选择,对于表class来说有3种选择。所以一共有 5 * 3 = 15种选择了,也就是笛卡尔积


内连接——inner join

内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接。
例如:查询xx学生在xx班级 沿用上面的数据表

select stu.studentname,cl.classname from student stu inner join class cl on stu.studentclassid=cl.classid;


查询结果
带你了解数据库中JOIN的用法

左外连接——left join

左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。
我们在原student 表中新增学生:小美
带你了解数据库中JOIN的用法
例如: 查询xx学生在xx班级 沿用上面的数据表

select stu.studentname,cl.classname from student stu left join class cl on stu.studentclassid=cl.classid;


查询结果
带你了解数据库中JOIN的用法

右外连接——right join

右外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行。
我们在原class表中新增班级:软件四班

带你了解数据库中JOIN的用法
例如: 查询xx学生在xx班级 沿用上面的数据表

select stu.studentname,cl.classname from student stu right join class cl on stu.studentclassid=cl.classid;


查询结果
带你了解数据库中JOIN的用法

全连接——full join

全连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的其他行。

注:mysql默认不支持full join。

这里我们就不做介绍了。


文末

本章节主要介绍了iterable与iterator之间的区别与联系,以及其他方面的小知识点,也是面试过程中会出现的内容点。
欢迎关注公众号:coder编程
获取最新原创技术文章和相关免费学习资料,随时随地学习技术知识!

带你了解数据库中JOIN的用法

推荐阅读

一篇让你理解进程与线程的区别与联系

通过“表白”的方式,让我们快速了解网络协议

一篇带你读懂tcp之“滑动窗口”协议

参考文章:

github个人主页目录
gitee个人主页目录

欢迎大家关注并star~