Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

mysql 多表查询

作者:平凡中的不凡   发布日期:2026-04-21   浏览:42

-- 示例代码:MySQL 多表查询

-- 假设有两个表:students 和 courses
-- students 表包含学生信息,courses 表包含课程信息

-- students 表结构:
-- id INT PRIMARY KEY, name VARCHAR(100), age INT

-- courses 表结构:
-- id INT PRIMARY KEY, student_id INT, course_name VARCHAR(100)

-- 1. 内连接 (INNER JOIN) 查询同时出现在两张表中的记录
SELECT students.name, courses.course_name
FROM students
INNER JOIN courses ON students.id = courses.student_id;

-- 2. 左连接 (LEFT JOIN) 查询所有学生信息,并显示他们选修的课程(如果没有选课,则课程信息为 NULL)
SELECT students.name, courses.course_name
FROM students
LEFT JOIN courses ON students.id = courses.student_id;

-- 3. 右连接 (RIGHT JOIN) 查询所有课程信息,并显示选修这些课程的学生(如果没有学生选课,则学生信息为 NULL)
SELECT students.name, courses.course_name
FROM students
RIGHT JOIN courses ON students.id = courses.student_id;

-- 4. 全外连接 (FULL OUTER JOIN) 在 MySQL 中没有直接支持,但可以通过 UNION 实现
SELECT students.name, courses.course_name
FROM students
LEFT JOIN courses ON students.id = courses.student_id
UNION
SELECT students.name, courses.course_name
FROM students
RIGHT JOIN courses ON students.id = courses.student_id;

解释说明:

  • 内连接 (INNER JOIN):只返回两个表中匹配的记录。即只有当 studentscourses 表中 idstudent_id 相等时,才会返回结果。

  • 左连接 (LEFT JOIN):返回左表 (students) 中的所有记录,即使右表 (courses) 中没有匹配的记录。对于右表中没有匹配的记录,结果集中右表的字段将填充为 NULL

  • 右连接 (RIGHT JOIN):返回右表 (courses) 中的所有记录,即使左表 (students) 中没有匹配的记录。对于左表中没有匹配的记录,结果集中左表的字段将填充为 NULL

  • 全外连接 (FULL OUTER JOIN):返回两个表中所有的记录,无论是否匹配。MySQL 没有直接支持 FULL OUTER JOIN,但可以通过 LEFT JOINRIGHT JOIN 的结合来实现。

上一篇:mysql instr函数

下一篇:mysql递归查询所有子节点

大家都在看

mysqlavg函数保留小数

mysql显示表内容

mysql经纬度距离计算

mysql 加密

存储过程mysql

mysql 1265

mysql with语句

mysql时间加减

mysql查询表名,模糊匹配

brew 启动mysql

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站