当前位置:   article > 正文

MySQL数据库所有的表连接方式_mysql多表连接的方式

mysql多表连接的方式

表连接介绍

1、内连接(Inner Join):

内连接返回两个表中满足连接条件的匹配行。只有在连接条件成立的情况下,才会返回结果

隐式使用: SELECT 字段列表 FROM 表1 , 表2 where 条件 ... ;

显式使用: SELECT 字段列表 FROM 表1 [ inner] join 表2 on 连接条件 ... ;(括号表示可有可无)

案例:

  1. -- 查询学生及其所在班级信息
  2. SELECT students.name, classes.name AS class_name
  3. FROM students
  4. INNER JOIN classes ON students.class_id = classes.id;

2、外连接

左连接(Left Join):左连接返回左表中所有的行,以及与右表匹配的行。如果右表中没有匹配的行,则返回NULL值。

语法:SELECT * FROM table1 left join table2 on table1.column = table2.column

右连接(Right Join):右连接返回右表中所有的行,以及与左表匹配的行。如果左表中没有匹配的行,则返回NULL值。

语法:SELECT * FROM table1 right join table2 on table1.column = table2.column

案例:

  1. -- 查询班级及其学生数量
  2. SELECT classes.name, COUNT(students.id) AS 学生数量
  3. FROM classes
  4. LEFT JOIN students ON classes.id = students.class_id
  5. GROUP BY classes.name;

  1. -- 查询科目及其对应的老师信息
  2. SELECT s.name, t.name AS 老师名字
  3. FROM subjects s
  4. RIGHT JOIN teachers t ON s.teacher_id = t.id;

3、全连接(full join)

全连接返回左右表中所有的行,无论是否匹配。如果没有匹配的行,则返回NULL值。

MySQL不直接支持全连接,可以通过 左连接+右连接 的组合来实现并使用 union 连接两个查询)。

案例:

  1. -- 查询科目及其对应的老师信息
  2. SELECT s.name, t.name AS 老师名字
  3. FROM subjects s
  4. left join teachers t on s.teacher_id = t.id;
  5. UNION
  6. -- 查询科目及其对应的老师信息
  7. SELECT s.name, t.name AS 老师名字
  8. FROM subjects s
  9. RIGHT JOIN teachers t ON s.teacher_id = t.id;

4、交叉连接(cross join)

是一种无条件的连接方式,它返回左表和右表的所有可能组合。这种连接方式会生成两个表的笛卡尔积。例如,如果左表有 m 行,右表有 n 行,CROSS JOIN 将返回 m * n 行。

语法:select * from table1 cross join table2;

案例:

  1. -- 查询学生对应的所有科目的成绩
  2. SELECT students.name, subjects.name AS subject_name
  3. FROM students
  4. CROSS JOIN subjects;

5、自连接 (self join):

将表与自身进行连接。它在表中存在对自身的关联关系时很有用。通过为表指定不同的别名并使用别名进行连接,可以在表中创建自引用关系。

语法:SELECT a.column, b.column FROM table AS a JOIN table AS b ON a.key = b.key;

案例     [as] 表示取别名,可有可无:

  1. -- 查询同班学生里面的朋友关系
  2. SELECT a.name AS 学生名, b.name AS 朋友名字
  3. FROM students AS a
  4. INNER JOIN students AS b ON a.id <> b.id
  5. WHERE a.class_id = b.class_id;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/433582
推荐阅读
相关标签
  

闽ICP备14008679号