-- 示例代码: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):只返回两个表中匹配的记录。即只有当 students 和 courses 表中 id 和 student_id 相等时,才会返回结果。
左连接 (LEFT JOIN):返回左表 (students) 中的所有记录,即使右表 (courses) 中没有匹配的记录。对于右表中没有匹配的记录,结果集中右表的字段将填充为 NULL。
右连接 (RIGHT JOIN):返回右表 (courses) 中的所有记录,即使左表 (students) 中没有匹配的记录。对于左表中没有匹配的记录,结果集中左表的字段将填充为 NULL。
全外连接 (FULL OUTER JOIN):返回两个表中所有的记录,无论是否匹配。MySQL 没有直接支持 FULL OUTER JOIN,但可以通过 LEFT JOIN 和 RIGHT JOIN 的结合来实现。
上一篇:mysql instr函数
下一篇:mysql递归查询所有子节点
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站