sql连接查询(inner join、full join、left join、 right join)

sql连接查询(inner join、full join、left join、 right join)

一、内连接(inner join)

首先我这有两张表

1、顾客信息表customer

2、消费订单表orders

注意:顾客与订单之间是一对多关系

需求:查询哪个顾客(customer_name)在哪一天(create_time)消费了多少钱(money)

sql语句:

select c.customer_name, o.create_time, o.money
from customer c, orders o
where c.id = o.customer_id

sql语句也可以这样写:

select c.customer_name, o.create_time, o.money
from customer c inner join orders o
on c.id = o.customer_id

结果:

内连接的过程:

将符合条件的记录组合起来,放在一张新表里面

二、左连接(left join)

需求:查询哪个顾客(customer_name)在哪一天(create_time)消费了多少钱(money)

sql语句:

select c.customer_name, o.create_time, o.money
from customer c 
left join orders o
on c.id = o.customer_id

结果:

从结果可以很清楚的明白左连接的含义:

将左边表的所有记录拿出来,不管右边表有没有对应的记录

三、右连接(right join)

需求:查询哪个顾客(customer_name)在哪一天(create_time)消费了多少钱(money)

sql语句:

select c.customer_name, o.create_time, o.money
from customer c 
right join orders o
on c.id = o.customer_id

结果:

从结果可以很清楚的明白右连接的含义:

将右边表的所有记录拿出来,不管右边表有没有对应的记录

四、全连接(full join)

这里要注意的是mysql本身并不支持全连接查询,但是我们可以使用UNION关键字实现

sql语句:

select c.customer_name, o.create_time, o.money
from customer c 
left join orders o
on c.id = o.customer_id

UNION

select c.customer_name, o.create_time, o.money
from customer c 
right join orders o
on c.id = o.customer_id

结果:

从sql语句中可以清楚的看到:

使用UNION关键字将左连接和右连接,联合起来

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

藏在表分区统计信息背后的小秘密

作者介绍 ? 曾令军 云和恩墨技术专家,8年数据库运维经验。思维敏捷,擅长于数据库开发、解决棘手的数据库故障和性能问题,在数据库故障诊断、运维监控、性能优化方面...

2725
来自专栏杨建荣的学习笔记

通过外部表改进一个繁琐的大查询 (r8笔记第32天)

今天处理了一个比较有意思的案例,说是有意思,因为涉及多个部门,但是哪个部门似乎都不愿意接。最后还是用了一些巧力,化干戈为玉帛。 问题的背景是这样的,业务部门需要...

3399
来自专栏杨建荣的学习笔记

数据库运维中的周期表维护

在数据库运维中, 有一种类型的表需要格外重视,在Oracle中可能是分区表,在MySQL中更多是日期表,其实无论哪种形式,他们的属性是相通的,属于周期表。这里就...

1113
来自专栏杨建荣的学习笔记

自动化平台中的ORM和权限设计

最近在梳理平台里的一些基础架构和设计,力争把平台里的通用的部分能够抽象出来,迭代复用。 在数据库设计上我秉承了从简的原则,如果能用一个表搞定,我绝对不会把它拆分...

3345
来自专栏编程坑太多

有哪些程序员特有的习惯?

1032
来自专栏Hadoop数据仓库

HAWQ取代传统数仓实践(十四)——事实表技术之累积快照

一、累积快照简介         累积快照事实表用于定义业务过程开始、结束以及期间的可区分的里程碑事件。通常在此类事实表中针对过程中的关键步骤都包含日期外键,并...

4005
来自专栏杨建荣的学习笔记

一则备库CPU报警的思考(r7笔记第69天)

今天收到一封报警邮件,这引起了我的注意。当然过了一会,有收到了CPU使用率恢复的邮件。 报警邮件内容如下: ZABBIX-监控系统: ---------...

3233
来自专栏杨建荣的学习笔记

一次归档报错的处理和分析(r7笔记第60天)

昨天在睡觉前接到了一条报警短信,本来已经疲倦的身轻如燕,但是看到报警,还是警觉了起来 ZABBIX-监控系统: --------------------...

3074
来自专栏Java技术分享

MyCat是什么?为什么要用MyCat?

实习的时候,在一个项目当中,项目经理要求把原先的MySQL数据连接基于mycat来进行改造 。当时就在想MyCat是什么东西?为什么要用它呢? 一、什么是MyC...

29210
来自专栏about云

kafka sql入门

问题导读 1.kafka sql与数据库sql有哪些区别? 2.KSQL有什么作用? 3.KSQL流和表分别什么情况下使用?

2272

扫码关注云+社区

领取腾讯云代金券