一篇文章带你了解数据库中JOIN的用法

所属分类: 数据库 / 数据库其它 阅读数: 332
收藏 0 赞 0 分享

前言

本章主要介绍数据库中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之间的区别与联系,以及其他方面的小知识点,也是面试过程中会出现的内容点。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

在PostgreSQL的基础上创建一个MongoDB的副本的教程

这篇文章主要介绍了在PostgreSQL的基础上创建一个MongoDB的副本的教程,使在使用NoSQL的同时又能用到PostgreSQL中的东西,需要的朋友可以参考下
收藏 0 赞 0 分享

使用Bucardo5实现PostgreSQL的主数据库复制

这篇文章主要介绍了使用Bucardo5实现PostgreSQL的主数据库复制,作者基于AWS给出演示,需要的朋友可以参考下
收藏 0 赞 0 分享

详细讲解PostgreSQL中的全文搜索的用法

这篇文章详细介绍了的PostgreSQL中的全文搜索的用法,包括对全文搜索的一些优化的实现,需要的朋友可以参考下
收藏 0 赞 0 分享

介绍PostgreSQL中的jsonb数据类型

这篇文章主要介绍了介绍PostgreSQL中的jsonb数据类型,jsonb是PostgreSQL9.4中开始内置的类型,能够支持GIN索引,需要的朋友可以参考下
收藏 0 赞 0 分享

介绍PostgreSQL中的Lateral类型

这篇文章主要介绍了介绍PostgreSQL中的Lateral类型,Lateral是PostgreSQL9.3版本以来加入的内置类型,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql、mssql及oracle分页查询方法详解

这篇文章主要介绍了mysql、mssql及oracle分页查询方法,实例分析了数据库分页的实现技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

telnet连接操作memcache服务器详解

这篇文章主要介绍了telnet连接操作memcache服务器详解,本文讲解了连接、添加修改、读取、删除、清空所有缓存等操作命令,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL语句实现删除重复记录并只保留一条

这篇文章主要介绍了SQL语句实现删除重复记录并只保留一条,本文直接给出实现代码,并给出多种查询重复记录的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

50条SQL查询技巧、查询语句示例

这篇文章主要介绍了50条SQL查询技巧、查询语句示例,本文以学生表、课程表、成绩表、教师表为例,讲解不同需求下的SQL语句写法,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例

这篇文章主要介绍了SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例,本文直接给出代码实例,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多