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

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

1、内链接(inner join)

首先我这有两张表mysql

一、顾客信息表customer

二、消费订单表orders

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

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

sql语句:code

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

sql语句也能够这样写:blog

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

结果:class

内链接的过程:select

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

2、左链接(left join)

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

sql语句:查询

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

结果:

从结果能够很清楚的明白左链接的含义:

将左边表的全部记录拿出来,无论右边表有没有对应的记录

3、右链接(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

结果:

从结果能够很清楚的明白右链接的含义:

将右边表的全部记录拿出来,无论右边表有没有对应的记录

4、全链接(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关键字将左链接和右链接,联合起来

相关文章
相关标签/搜索