一篇文章带你了解数据库中JOIN的用法
前言
本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点。本次会介绍数据库中的 inner join、 left join、 right 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;

就会出现上面的情况,也就是笛卡尔现象,表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;
查询结果

左外连接——left join
左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。 我们在原Student 表中新增学生:小美

例如: 查询xx学生在xx班级 沿用上面的数据表
select stu.StudentName,cl.ClassName from Student stu left join Class cl on stu.StudentClassID=cl.ClassID;
查询结果
右外连接——right join
右外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行。 我们在原Class表中新增班级:

软件四班
例如: 查询xx学生在xx班级 沿用上面的数据表
select stu.StudentName,cl.ClassName from Student stu right join Class cl on stu.StudentClassID=cl.ClassID;
查询结果

全连接——full join
全连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的其他行。
注:mysql默认不支持full join。
这里我们就不做介绍了。
文末
本章节主要介绍了Iterable与Iterator之间的区别与联系,以及其他方面的小知识点,也是面试过程中会出现的内容点。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。
相关文章
Navicat Premium自定义 sql 标签的创建方式
Navicat 中可以自定义一下sql语句的标签,方便开发者使用,这篇文章主要介绍了Navicat Premium自定义sql标签的创建方式,包括自定义标签创建方式,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下2022-09-09
在windows上用docker desktop安装部署StoneDB
这篇文章主要介绍了在windows上用docker desktop安装部署StoneDB的相关资料,整个过程记录的十分详细,推荐给大家,需要的朋友可以参考下2022-08-08
dbeaver创建create临时表之后查询不到问题排查及解决方案
文章介绍了在使用DBeaver创建临时表后无法查询到数据的问题排查过程,主要步骤包括检查表名唯一性、确认会话正确性、清理会话、检查权限、语法检查以及刷新视图或重启工具,感兴趣的朋友跟随小编一起看看吧2025-01-01
sqlserver和oracle中对datetime进行条件查询的一点区别小结
系统中涉及公文列表的部分,需要支持对时间列的搜索功能,但必须要同时支持sqlserver和oracle两种数据库,而这在这两种数据库中编写查询语句的时候有一些不大一样的地方,无法实现一条语句实现两个数据库的正常查询,所以需要做一些调整。2009-06-06


最新评论