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

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 部门;

结果

相关文章:

  • 【已解决】windows gitbash 出现CondaError: Run ‘conda init‘ before ‘conda activate‘
  • Zsh/Bash Conda设置延迟启动,启动速度优化
  • zookeeper 操作总结
  • 打破网络次元壁:NAT 穿透与内网打洞的 “Matrix 式” 通信革命
  • 关于uv 工具的使用总结(uv,conda,pip什么关系)
  • 力扣 秋招 打卡第一天 2025年5月28日 Java
  • 力扣热题100(附刷题表版)
  • 5.2.2二叉树的存储结构
  • TextIn OCR Frontend前端开源组件库发布!
  • LeetCode 136:只出现一次的数字 - 巧用异或运算的极致解法
  • TypeScript 中的剩余参数:灵活处理可变数量参数
  • Weather app using Django - Python
  • 多因素身份鉴别组合方案及应用场景
  • SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能
  • 工业5.0视域下的医疗AI行业未来发展方向研究
  • SpringBoot 验证码练习
  • C++学习之STL学习:vector类的使用
  • Milvus向量Search查询综合案例实战(下)
  • 即插即用的全新算法改进策略——引导学习策略:一种用于元启发式算法设计和改进的新型更新机制
  • C语言| 函数参数传递指针
  • 收费小说网站怎么做/注册教育培训机构需要什么条件
  • 哪个做企业网站/免费做网站自助建站
  • 怎么做php登陆网站/跨境电商平台有哪些?
  • 网站优化大计/精准拓客软件哪个好
  • 网站建设人才有哪些/aso优化哪家好
  • 怎么查看网站是否做百度排名/北京seo百科