MySql JOIN
MySql JOIN
背景
最近在做一些项目时需要对数据库进行简单的 select ,由于之前一直在做 HTML + JS + CSS 所有对数据库不是很了解,现在从 0 开始学习,每天学习一点,做个理解总结。有理解偏差欢迎留言指正。
简介
JOIN 用于根据两个或多个表之间关系,查询数据
- inner join 内连接
- left join 左连接
- right join 右连接
准备两张表 customers、 orders 内容如下:
- 表 customers
- 表:orders
inner join 内连接
- 查询两个表中,满足条件的记录
- 查询条件是两个表的公共部分
语法
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
- column_name(s) 表示需要查询的字段
- table1 表示第一个表
- table2 表示第二个表
- ON table1.column_name=table2.column_name 表示两个表的连接条件
示例
select * from customers
inner join
orders
on orders.city = customers.city;
-
查询 customers 表和 orders 表中 city 相同的记录
-
结果:
left join 左连接
- 查询以左表为主按照条件查询连接两张或多张表
语法
select * from
table1
left join
table2
on table1.column_name=table2.culumn_name
-
查询所有 table1 表中数据 按照 table1.column_name=table2.culumn_name 条件连接,table2 表中缺失数据 null 补全
-
表:customers orders
示例
select * from
customers
left join orders
on customers.city = orders.city;
- 结果
right join 有关联
- 输出右表所有值,左表输出两个表值相同项,缺失数据补null
语法
select * from
table1
right join
table2
on table1.column_name = table1.column_name
示例
select * from
customers
right join
orders o
on customers.city = orders.city
- 查询 table2 表中所有数据 按照 table1.column_name=table2.culumn_name 条件连接,table1 表中缺失数据 null 补全
- 结果
多连接查询
select * from customers
left join orders o on customers.city = o.city
right join suppliers s on customers.city != s.city
where o.city = '深圳';
- 结果