sql中连接方式

在sql中,主要有五种连接类型,每种连接在处理表之间的关系时有不同的行为。一下是详细的解释和比较。

  1. INNER JOIN(内连接) 直接join默认也是内连接

描述:返回两个表中匹配的行

结果:只返回两个表中共用的记录

图示:两个集合的交集部分

语法:

sql 复制代码
SELECT e.emp_no
FROM employees e
LEFT JOIN dept_manager dm ON e.emp_no = dm.emp_no
WHERE dm.emp_no IS NULL;
  1. LEFT JOIN (左连接)

描述:返回左表的所有行+右表的匹配行

结果:左表所有记录+匹配的右表记录(无匹配则为NULL)

图示:左表全集+右表交集部分

语法:

sql 复制代码
SELECT columns
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;
  1. RIGHT JOIN(右连接)

描述:返回右表的所有行+左表的匹配行

结果:右表所有记录+匹配的左表记录(无匹配则为NULL)

图示:右表全集+左表交集部分

语法:

sql 复制代码
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;
  1. FULL OUTER JOIN (全外连接)

描述:返回两个表的所有行

结果:左表所有记录+右表所有记录(无匹配则为NULL)

图示:两个集合的并集

语法:

sql 复制代码
SELECT columns
FROM table1
FULL OUTER JOIN table2 ON table1.column = table2.column;
  1. CORSS JOIN (交叉连接)

描述:返回两个表的笛卡尔积

结果:左表每行与右表每行组合

图示:两个集合的所有可能组合

语法:

sql 复制代码
SELECT columns
FROM table1
CROSS JOIN table2;

连接类型对比表

连接类型 别名 返回结果 使用场景
INNER JOIN JOIN 仅匹配的行 查找相关数据
LEFT JOIN LEFT OUTER JOIN 左表所有行 + 匹配的右表行 包含所有左表记录
RIGHT JOIN RIGHT OUTER JOIN 右表所有行 + 匹配的左表行 包含所有右表记录
FULL OUTER JOIN FULL JOIN 两个表的所有行 合并两个数据集
CROSS JOIN 所有可能的行组合(笛卡尔积) 生成所有组合

特殊连接方式:

  1. SELF JOIN(自连接)

表与自身连接

常用于层级数据(如员工-经理关系)

sql 复制代码
SELECT A.name, B.name AS manager
FROM employees A
JOIN employees B ON A.manager_id = B.emp_id;
  1. NATURAL JOIN (自然连接)

自动匹配相同名称的列

不推荐使用(隐式连接条件可能导致意外结果)

sql 复制代码
SELECT columns
FROM table1
NATURAL JOIN table2;

连接条件类型

1 等值连接:使用等号(=)的连接方式

2 非等值连接:使用其他的运算符(>,<,BETWEEN等)

3 Thete连接:任意条件的连接

实际应用示例

sql 复制代码
-- 查找所有非部门经理的员工
SELECT e.emp_no
FROM employees e
LEFT JOIN dept_manager dm ON e.emp_no = dm.emp_no
WHERE dm.emp_no IS NULL;

-- 查找所有员工及其部门(包括无部门的员工)
SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.dept_id;
相关推荐
cspttty3 小时前
需求预测校招入门:SQL、Excel、统计模型和业务指标怎么学
大数据·数据库
2501_933670793 小时前
面向物流数据分析校招:SQL、Excel、BI、WMS/TMS该怎么准备
数据库
Code_流苏3 小时前
AI 知识库和数据库有什么区别?从“查订单”到“问规则”讲清楚
数据库·ai·agent·知识库
YangYang9YangYan3 小时前
财务 BP 校招面试案例整理|业务场景题 + 数据案例,2027 届求职
大数据·数据库
隔窗听雨眠3 小时前
KingbaseES性能优化实战指南:从操作系统调优到SQL等价改写的完整方法论
数据库·kingbasees
NineData4 小时前
NineData 与统信服务器操作系统完成兼容认证
数据库·oracle·操作系统·软件·数据库管理工具·ninedata·统信
十二同学啊13 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技14 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐17 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB17 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析