MySql JOIN

MySql JOIN

背景

最近在做一些项目时需要对数据库进行简单的 select ,由于之前一直在做 HTML + JS + CSS 所有对数据库不是很了解,现在从 0 开始学习,每天学习一点,做个理解总结。有理解偏差欢迎留言指正。

简介

JOIN 用于根据两个或多个表之间关系,查询数据

  • inner join 内连接
  • left join 左连接
  • right join 右连接

准备两张表 customers、 orders 内容如下:

  • 表 customers

Alternative Text

  • 表:orders

Alternative Text

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 相同的记录

  • 结果:

Alternative Text

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;
  • 结果

Alternative Text

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 补全
  • 结果

Alternative Text

多连接查询

select * from customers
left join orders o on customers.city = o.city
right join suppliers s on customers.city != s.city
where o.city = '深圳';
  • 结果

Alternative Text

posted @ 2024-06-11 11:32  影的记忆  阅读(8)  评论(0编辑  收藏  举报