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

SQL里几种JOIN连接

数据信息:

员工表EMP

部门表DEPT

一、INNER JOIN(内连接)

作用:只返回两个表中完全匹配的行,相当于取交集。

场景:查询「有部门的员工信息」。

示例

SELECT 员工.姓名, 部门.部门名称

FROM 员工

INNER JOIN 部门 ON 员工.部门ID = 部门.部门ID;

结果

说明:只显示有匹配部门的员工,未分配部门的员工(如王五)和空部门(如财务部)都不会出现。

二、LEFT JOIN(左连接)

作用:返回左表(员工表)所有行,右表无匹配时用NULL填充。

场景:查询「所有员工信息,包括未分配部门的员工」。

SELECT 员工.姓名, 部门.部门名称

FROM 员工

LEFT JOIN 部门 ON 员工.部门ID = 部门.部门ID;

结果

说明:王五没有部门,但仍显示在结果中。

三、RIGHT JOIN(右连接)

作用:返回右表(部门表)所有行,左表无匹配时用NULL填充。

场景:查询「所有部门信息,包括没有员工的部门」。

SELECT 员工.姓名, 部门.部门名称

FROM 员工

RIGHT JOIN 部门 ON 员工.部门ID = 部门.部门ID;

结果

说明:财务部没有员工,但仍显示在结果中。

四、FULL JOIN(全连接)

作用:返回两个表所有行,无匹配部分用NULL填充。

场景:同时查看「所有员工和所有部门」。

SELECT 员工.姓名, 部门.部门名称

FROM 员工

FULL JOIN 部门 ON 员工.部门ID = 部门.部门ID;

结果

五、CROSS JOIN(笛卡尔积)

作用:返回两表所有可能的组合,结果行数=左表行数×右表行数。

场景:生成所有「员工-部门组合」(如排班场景)。

SELECT 员工.姓名, 部门.部门名称

FROM 员工

CROSS JOIN 部门;

结果

http://www.lryc.cn/news/2391673.html

相关文章:

  • 基于通义千问的儿童陪伴学习和成长的智能应用架构。
  • 生产环境Mysql推荐配置参数
  • LVS-DR 负载均衡群集
  • 理解并解决高丢包率问题,构建清晰流畅的实时音视频通话
  • Ubuntu系统Todesk进度卡在100%
  • [Dify] 如何应对明道云API数据过长带来的Token超限问题
  • Axure动态面板学习笔记
  • eNSP企业综合网络设计拓扑图
  • 工程化架构设计:Monorepo 实战与现代化前端工程体系构建
  • BugKu Web渗透之备份是个好习惯
  • 华为AP6050DN无线接入点瘦模式转胖模式
  • uniapp 配置本地 https 开发环境(基于 Vue2 的 uniapp)
  • 十、【核心功能篇】项目与模块管理:前端页面开发与后端 API 联调实战
  • 【大模型/MCP】MCP简介
  • [Godot][游戏开发] 如何在 Godot 中配置 Android 环境(适配新版 Android Studio)
  • Vue-Router中的三种路由历史模式详解
  • 机器学习多分类逻辑回归和二分类神经网络实践
  • 社交类网站设计:经典feed流系统架构详细设计(小红书微博等)
  • K6 是什么
  • RISC-V PMA、PMP机制深入分析
  • git常见命令说明
  • 深入解析 Tomcat 线程管理机制:从设计思想到性能调优
  • 【NebulaGraph】查询案例(七)
  • 从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本
  • Java与Docker容器化优化:从核心技术到生产实践
  • QT单例模式简单讲解与实现
  • Vite Vue3 配置 Composition API 自动导入与项目插件拆分
  • React从基础入门到高级实战:React 生态与工具 - React Query:异步状态管理
  • Grafana-Gauge仪表盘
  • 按照状态实现自定义排序的方法