24 MySQL 多表联合查询·上(4)

在前几章中,大致了解了如何在一张表中读取数据,但是在真正的应用中,经常需要从数据库的两个或多个数据表中匹配读取数据。

注:以下SQL语句示例全部基于下面「user表」、「department表」「job表」:

user表

uid uname depid jid
1 张三 2 1
2 李四 2 2
3 王铿 3 4
4 彭昶 3 4
5 王小二 4 3

department表

depid depname master
1 总裁办 李大宝
2 研发部 张三
3 测试部 王铿
4 开发小组A 王潇潇
5 开发小组B 尼古拉叶
6 财务部 佳琪佳

job表

jid jname
1 高级开发工程师
2 Java工程师
3 前端开发
4 测试工程师
5 产品经理
6 财会
  • INNER JOIN(内连接,或等值连接): 获取两个表中字段匹配关系的记录,即查询两表交集部分的数据。
  • LEFT JOIN(左连接): 获取左表所有记录,即使右表没有对应匹配的记录。
  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

两表联合查询

sql 复制代码
--内连接:INNER JOIN
SELECT * FROM user
INNER JOIN department on user.depid = department.depid ;
或
SELECT * FROM user,department WHERE user.depid = department.depid; 
--查询「user表」「department表」中共有的数据。

结果如下:

uid uname depid jid depid depname master
1 张三 2 1 2 研发部 张三
2 李四 2 2 2 研发部 张三
3 王铿 3 4 3 测试部 王铿
4 彭昶 3 4 3 测试部 王铿
5 王小二 4 3 4 开发小组A 王潇潇
sql 复制代码
--左连接:LEFT JOIN
SELECT * FROM user u 
LEFT JOIN department d ON u.uname = d.master;
--查询「user表」中所有的数据,和匹配上「department表」中的数据。

结果如下:

uid uname depid jid depid depname master
1 张三 2 1 2 研发部 张三
2 李四 2 2 Null Null Null
3 王锵 3 4 3 测试部 王锵
4 彭昶 3 4 Null Null Null
5 王小二 4 3 Null Null Null
sql 复制代码
--右连接:RIGHT JOIN
SELECT * FROM user u 
RIGHT JOIN department d ON u.uname = d.master;
--查询「department表」中所有的数据,和匹配上「user表」中的数据。

结果如下:

depid depname master uid uname depid jid
1 总裁办 李大宝 Null Null Null Null
2 研发部 张三 1 张三 2 1
3 测试部 王铿 3 王铿 3 4
4 开发小组A 王潇潇 Null Null Null Null
5 开发小组B 尼古拉叶 Null Null Null Null
6 财务部 佳琪佳 Null Null Null Null
相关推荐
液态不合群1 小时前
[特殊字符] MySQL 覆盖索引详解
数据库·mysql
计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
瀚高PG实验室2 小时前
PostgreSQL到HighgoDB数据迁移
数据库·postgresql·瀚高数据库
打码人的日常分享3 小时前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
三水不滴3 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
-孤存-4 小时前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
2301_822366354 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
万邦科技Lafite6 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
自可乐6 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
weixin_307779136 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算