数据库多个表关联的方式技巧

多个表关联就像把不同的Excel表格通过共同字段连接起来,让数据能够"对话"。

一. 表关联的基本原理

想象你有三张表:

  • 学生表(学号、姓名)

  • 课程表(课程ID、课程名)

  • 成绩表(学号、课程ID、分数)

它们通过共同字段连接:

  • 成绩表的"学号" ↔ 学生表的"学号"

  • 成绩表的"课程ID" ↔ 课程表的"课程ID"

二. 四种常用关联方式

(1) 内连接(INNER JOIN)→ "严格匹配"

SELECT 学生.姓名, 课程.课程名, 成绩.分数
FROM 成绩
INNER JOIN 学生 ON 成绩.学号 = 学生.学号
INNER JOIN 课程 ON 成绩.课程ID = 课程.课程ID;

只显示有成绩记录的学生和课程(三表都有的数据)

(2) 左连接(LEFT JOIN)→ "保大优先"

SELECT 学生.姓名, 课程.课程名, 成绩.分数
FROM 学生
LEFT JOIN 成绩 ON 学生.学号 = 成绩.学号
LEFT JOIN 课程 ON 成绩.课程ID = 课程.课程ID;

显示所有学生,即使他没成绩(左边表的数据全保留)

(3) 右连接(RIGHT JOIN)→ "保小优先"

SELECT 学生.姓名, 课程.课程名, 成绩.分数
FROM 成绩
RIGHT JOIN 学生 ON 成绩.学号 = 学生.学号
RIGHT JOIN 课程 ON 成绩.课程ID = 课程.课程ID;

显示所有课程,即使没人选修(右边表的数据全保留)

(4) 全连接(FULL JOIN)→ "我全都要"

SELECT 学生.姓名, 课程.课程名, 成绩.分数
FROM 学生
FULL JOIN 成绩 ON 学生.学号 = 成绩.学号
FULL JOIN 课程 ON 成绩.课程ID = 课程.课程ID;

显示所有学生和所有课程(不管有没有对应关系)

三. 左右连接的区别

SELECT * 
FROM 表A 
LEFT JOIN 表B ON 表A.字段 = 表B.字段
  • 左表(LEFT TABLE)FROM后面的表(这里是表A

  • 右表(RIGHT TABLE)JOIN后面的表(这里是表B

(1) 左右连接的核心区别

连接类型保留谁的数据?相当于
LEFT JOIN左表全部保留,右表不匹配的补NULL保护FROM后面的表
RIGHT JOIN右表全部保留,左表不匹配的补NULL保护JOIN后面的表

(2) 重要技巧

  1. LEFT JOIN更常用(因为SQL是从FROM后的主表开始处理的)

  2. RIGHT JOIN可以改写为LEFT JOIN(只需调换表位置)

    表A RIGHT JOIN 表B  ↔  表B LEFT JOIN 表A
  3. 多表连接时:前一个JOIN的结果会成为下一个JOIN的"左表"

  4. 只要记住:FROM后的表是左,JOIN后的表是右,你就永远不会搞混了!

四.关联技巧口诀

  1. 明确主表:FROM后第一个表是"主表"

  2. 确定关系:ON后面写关联条件(像桥梁)

  3. 选择类型

    • 要精确匹配 → INNER JOIN

    • 要保留主表全部 → LEFT JOIN

    • 要保留关联表全部 → RIGHT JOIN

    • 两边都要保留 → FULL JOIN

  4. 过滤数据:最后用WHERE加条件

这样是不是很清楚啦?实际写SQL时,先从简单的两个表关联练起,熟练后再增加多表关联哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值