您当前的位置:首页 > 电脑百科 > 数据库 > 百科

数据库查询join的知识总结

时间:2019-10-31 16:12:14  来源:  作者:

作者: topEngineerray

来源:CSDN

在sql当中,有下面这些join类型:

(INNER)JOIN:返回两个表中具有匹配值的记录

LEFT(OUTER)JOIN:返回左侧表中的所有记录,以及右侧表中的匹配记录

RIGHT (OUTER) JOIN:从右表返回所有记录,并从左表返回匹配的记录

FULL(OUTER)JOIN:当左表或右表中存在匹配项时,返回所有记录

分别如下图所示:

数据库查询join的知识总结

 

Inner join

INNER JOIN和JOIN是一个意思。

INNER JOIN选择两个表中具有匹配值的记录:

一个INNER JOIN的例子如下:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

示例database如下:

以下是Orders表中的一些数据:

数据库查询join的知识总结

 

下面是Customers表中的一些数据:

数据库查询join的知识总结

 

以下SQL语句选择所有包含客户信息的订单:

SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

该查询的查询结果为

数据库查询join的知识总结

 

再来看另一个例子,假设我们现在有如下的database:

Persons表如下:

数据库查询join的知识总结

 

Orders表如下:

数据库查询join的知识总结

 

我们希望查出所有人的订单,使用inner join查询如下:

数据库查询join的知识总结

 

则其查询结果为:

数据库查询join的知识总结

 

INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。

LEFT JOIN

LEFT JOIN关键字从左表(表1)返回所有记录,并从右表(表2)返回匹配的记录。 如果不匹配,则右侧结果为NULL。

示例database如下:

下面是Customers表中的一些数据:

数据库查询join的知识总结

 

下面是Orders表中的数据:

数据库查询join的知识总结

 

下面是一个LEFT JOIN的例子:

数据库查询join的知识总结

 

上面的查询结果为:

数据库查询join的知识总结

 

LEFT JOIN 关键字会从左表 (Customers) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。

RIGHT JOIN

在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN, RIGHT JOIN的写法如下:

数据库查询join的知识总结

 

示例database如下:

下面是orders表中的一些数据:

数据库查询join的知识总结

 

下面是Employees表中的一些数据:

数据库查询join的知识总结

 

一个right join的例子为:

数据库查询join的知识总结

 

上面查询的查询结果为:

数据库查询join的知识总结

 

RIGHT JOIN 关键字会从右表 (Employees) 那里返回所有的行,即使在左表 (orders) 中没有匹配的行

FULL JOIN

full join的语法如下:

数据库查询join的知识总结

 

示例database如下:

下面是Customers表中的一些数据:

数据库查询join的知识总结

 

下面是Orders表中的一些数据:

数据库查询join的知识总结

 

使用full join查询的sql如下:

数据库查询join的知识总结

 

其查询结果为:

数据库查询join的知识总结

 

再来看另一个例子

Person表如下:

数据库查询join的知识总结

 

Orders表如下:

数据库查询join的知识总结

 

现有full join如下:

数据库查询join的知识总结

 

则其查询结果为:

数据库查询join的知识总结

 

FULL JOIN 关键字会从左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 "Persons" 中的行在表 "Orders" 中没有匹配,或者如果 "Orders" 中的行在表 "Persons" 中没有匹配,这些行同样会列出。



Tags:数据库 join   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关推荐
在sql当中,有下面这些join类型:(INNER)JOIN:返回两个表中具有匹配值的记录LEFT(OUTER)JOIN:返回左侧表中的所有记录,以及右侧表中的匹配记录...【详细内容】
2019-10-31  Tags: 数据库 join  点击:(85)  评论:(0)  加入收藏
▌简易百科推荐
初学者的数据库索引简介> Congratulations今天在ORM的时代,我们作为开发人员不必经常触摸数据库。我自己自己建立了我的第一个项目而不在项目内写一行的原始SQL。它起初工作...【详细内容】
2021-07-12  闻数起舞    Tags:SQL查询   点击:(5)  评论:(0)  加入收藏
如果一切似乎都在控制下,你就不会够快”> Photo by Christina Morillo (original). Thank you!几乎所有用于最终用户的Web服务都需要存储数据。它们几乎所有所有人都将它们存...【详细内容】
2021-07-12  闻数起舞    Tags:数据库性能   点击:(5)  评论:(0)  加入收藏
系统数据库和用户数据库数据库有两种:系统数据库,另一种是需要用户创建的数据库,右键新建数据库(称之为用户数据库) 创建数据库必须了解的概念要创建自己的数据库,首先要弄清楚两...【详细内容】
2021-07-09  技术小菜    Tags:数据库   点击:(6)  评论:(0)  加入收藏
分库分表介绍:分库分表的目的是为了系统高并发、高可用。分库和年发表是两回事,两个概念,都是为了防止数据库服务因为同一时间内访问量过大导致宕机而设计的一种应对策略。一、...【详细内容】
2021-06-28  从孩子开始学编程    Tags:分库分表   点击:(16)  评论:(0)  加入收藏
本文讲解窗口函数的概念,窗口函数与数据分组的功能相似,可以指定数据窗口进行统计分析,但窗口函数与数据分组又有所区别,窗口函数对每个组返回多行,而数据分组对每个组只返回一行...【详细内容】
2021-06-25  大话数据分析    Tags:SQL数据分析   点击:(15)  评论:(0)  加入收藏
MongoDB 简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的最大特点是:•特别适合存储大量的无结...【详细内容】
2021-06-25  锐玩道    Tags:MongoDB   点击:(25)  评论:(0)  加入收藏
class Integration(Base, ModelBase, ModelSerializer): __tablename__ = 'integration' id = Column(Integer, primary_key=True) domain = relationship...【详细内容】
2021-06-24  lizhihua0625    Tags:sqlalchemy   点击:(16)  评论:(0)  加入收藏
我们渴望通过数据来增强和改善商业和生活的各个方面,这驱使我们在大规模管理数据方面进行范式转变。 尽管过去十年的技术进步已解决了数据量和数据处理计算的规模问题,但它们无法解决其他方面的规模问题:数据格局的变化,...【详细内容】
2021-06-23  ThoughtWorks  今日头条  Tags:Data Mesh   点击:(19)  评论:(0)  加入收藏
一. 前台管理1. 轮播图(5张),首页头部大图,注册登录页左侧大图,logo图,导航条广告二. 后台管理1. 站点用户管理1. 系统用户 SystemUser 列名 数据类型 ...【详细内容】
2021-06-23  大壮二壮学剪辑    Tags:数据库表   点击:(15)  评论:(0)  加入收藏
阿里云Tair云原生内存数据库线上名字为阿里云数据库Redis企业版(又称阿里云Tair),从2009年开始正式承载集团业务,是一款历经磨练的企业级产品。它完全兼容Redis的数据结构和通讯协议,包括API接口,并且在内部逐步打磨的过程...【详细内容】
2021-06-21  数据库技术达摩院    Tags:Tair云   点击:(18)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条