MySQL 多表查询

多表查询的分类

  • 内连接
    • 隐式内连接
    • 显式内连接
  • 外连接
    • 左外连接
    • 右外连接

内连接

用左边表的记录去匹配右边表的记录,如果符合条件的则显示。如:从表.外键=主表.主键

隐式内连接

隐式内连接:看不到 JOIN 关键字,条件使用 WHERE 指定

复制
SELECT 字段名 FROM 左表, 右表 WHERE 条件

如:

创建一个学生个人信息表

复制
CREATE TABLE students(
Id INT(30),
Name VARCHAR(10),
Age INT(4),
Gender VARCHAR(25),
PRIMARY KEY(Id)
);

创建一个学习成绩表

复制
CREATE TABLE course(
Id INT(30),
Java INT(5),
Python INT(5),
MySQL INT(5),
Hadoop INT(5),
C INT(5),
PHP INT(5),
Linux INT(5),
English INT(5),
Math INT(5),
CONSTRAINT id_course FOREIGN KEY(Id) REFERENCES students(Id)
);

学习成绩表的外键连接学生个人信息表的主键。这个时候,如果我们想要查询学生的Java成绩,

复制
SELECT name, Java FROM students, course WHERE course.Id = students.Id;

显式内连接

显示内连接:使用 INNER JOIN ... ON 语句, 可以省略 INNER

复制
SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件

如:

还是上面创建的students表和course表

复制
SELECT * FROM students INNER JOIN course c ON students.Id = c.Id;

查询students表的所有信息,按ID插入course表的数据,一并查询出来。

外连接

左外连接

左外连接:使用 LEFT OUTER JOIN ... ON,OUTER 可以省略

复制
SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件

用左边表的记录去匹配右边表的记录,如果符合条件的则显示;否则,显示 NULL 。可以理解为:在内连接的基础上保证左表的数据全部显示。

右外连接

右外连接:使用 RIGHT OUTER JOIN ... ON,OUTER 可以省略

复制
SELECT 字段名 FROM 左表 RIGHT [OUTER] JOIN 右表 ON 条件

用右边表的记录去匹配左边表的记录,如果符合条件的则显示;否则,显示 NULL。可以理解为:在内连接的基础上保证右表的数据全部显示。

posted @   LeeHua  阅读(337)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航