MySQL 中内连接、左连接和右连接的区别在于:内连接只返回同时在两个表中匹配的行,而左连接返回左表所有行,包含匹配右表行,右连接返回右表所有行,包含匹配左表行。内连接语法:SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2;左连接语法:SELECT * FROM table1 LEFT JOIN table2 ON table1.column1 = table2.column2;右连接语法:SELE
MySQL 中内连接、左连接和右连接的区别
内连接 (INNER JOIN)
只返回两个表中具有匹配行的记录。
匹配失败的记录将被丢弃。
左连接 (LEFT JOIN)
返回左表中的所有记录,即使右表中没有匹配的行。
右表中没有匹配行的记录将用 NULL 值填充。
右连接 (RIGHT JOIN)
返回右表中的所有记录,即使左表中没有匹配的行。
左表中没有匹配行的记录将用 NULL 值填充。
用法
内连接:
用于查找两个表之间具有匹配行的记录,并丢弃不匹配的记录。
左连接:
用于查找左表的所有记录,并包含右表中匹配行的记录。
右连接:
用于查找右表的所有记录,并包含左表中匹配行的记录。
语法
内连接:
左连接:
右连接:
MySQL(Linux)
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
下载
例子
假设我们有以下两个表:
内连接:
结果:
idnameaddress1John123 Main St2Mary456 Elm St
左连接:
结果:
idnameaddress1John123 Main St2Mary456 Elm St3BobNULL
右连接:
结果:
idnameaddress1John123 Main St2Mary456 Elm St4NULL789 Oak St
SELECT *
FROM table1
INNER JOIN table2
ON table1.column1 = table2.column2;SELECT *
FROM table1
LEFT JOIN table2
ON table1.column1 = table2.column2;SELECT *
FROM table1
RIGHT JOIN table2
ON table1.column1 = table2.column2;Table1:
| id | name |
|---|---|
| 1 | John |
| 2 | Mary |
| 3 | Bob |
Table2:
| id | address |
|---|---|
| 1 | 123 Main St |
| 2 | 456 Elm St |
| 4 | 789 Oak St |SELECT *
FROM Table1
INNER JOIN Table2
ON Table1.id = Table2.id;SELECT *
FROM Table1
LEFT JOIN Table2
ON Table1.id = Table2.id;SELECT *
FROM Table1
RIGHT JOIN Table2
ON Table1.id = Table2.id;