当前位置: 首页 > news >正文

sql中连接方式

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

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

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

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

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

语法:

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;

2. LEFT JOIN (左连接)

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

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

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

语法:

SELECT columns
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

3. RIGHT JOIN(右连接)

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

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

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

语法:

SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;

4. FULL OUTER JOIN (全外连接)

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

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

图示:两个集合的并集

语法:

SELECT columns
FROM table1
FULL OUTER JOIN table2 ON table1.column = table2.column;

5. CORSS JOIN (交叉连接)

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

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

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

语法:

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(自连接)

表与自身连接

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

SELECT A.name, B.name AS manager
FROM employees A
JOIN employees B ON A.manager_id = B.emp_id;

2. NATURAL JOIN (自然连接)

自动匹配相同名称的列

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

SELECT columns
FROM table1
NATURAL JOIN table2;

连接条件类型

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

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

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

实际应用示例

-- 查找所有非部门经理的员工
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;

http://www.dtcms.com/a/491721.html

相关文章:

  • 个人网站转为企业网站百度推广怎么登录
  • 模型预估值分布
  • YOLOv1与YOLOv2:目标检测的快速进化之路
  • 建设网站用什么软件排版网站服务器怎么做的
  • 《算法通关指南---OJ题目常见的错误效果》
  • 好看的创意网站设计蓝牙小程序开发教程
  • 高阶数据结构 --- Trie 树
  • PCIe协议之 flit 模式 之 flit bytes placing 图示说明
  • 如何做网站大管家Apple 手机网站制作
  • Unity 导出 AAR包 到 Android 项目并以 Fragment渲染显示
  • 把 AI“种”进闪存:基于极值量化与分块蒸馏的 7B 大模型 U 盘部署实战
  • 中兴电信B860AV3.2-T/B860AV3.1-T2(S905L3SB)2+8G_安卓9.0_线刷固件包
  • 网站建设主要工作内容动漫制作专业一定要艺术生吗
  • .livp,.HEIC格式图片转换成jpg格式图片
  • NewStarCTF2025-Week1-Web
  • 网站根目录 本地共享阿里指数在哪里看
  • 浏阳市商务局网站溪江农贸市场建设有什么平台可以发广告
  • FPGA强化-VGA显示设计与验证
  • 【2025最新】ArcGIS for JavaScript 快速实现热力图渲染
  • 怎么设置网站的logowordpress通知邮件美化
  • SpringCloud-Gateway实战使用与深度源码分析
  • 上海网站建设|网站制作浙江新手网络推广
  • 健康管理实训室厂家报价:精准明细,按需提供
  • Git学习笔记(三)
  • 通达信组合平台
  • 怎么做微网站推广泉州建设银行网站
  • 企业网站形象建设企业申请完域名以后 怎么把网站运行起来
  • 序列的力量——Python 内置方法的魔法解密
  • 跨数据源操作
  • 数据库圣经——第三章CRUD(一)