<10>mysql:多表连接

原理

将多个表通过笛卡尔积形成一个虚表,再根据查询条件筛选符合条件的数据

笛卡尔积

笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员

例:

X = {a, b}
Y = {1, 2, 3}
X × Y = {(a,1), (a,2), (a, 3), (b,1), (b,2), (b,3)}
...

表连接

语法

select ... from <左表> <连接类型> <右表> on <连接条件> ...

连接类型

连接类型 语法 笛卡尔积 说明
内连接 inner join 获取两个表中字段相互匹配关系的记录,即两表记录都不为null才会返回
左外连接 left join 获取左表所有记录,右表为空的字段补null
右外连接 right join 获取右表所有记录,左表为空的字段补null
全链接 MySQL不支持全连接 - -

连接结果

符合连接条件的,合并两个表的各个列的临时表,列名相同时以表名区分

多表联查

select ... 
from
  <左表>
  <连接类型> <右表1> on <连接条件> 
  <连接类型> <右表2> on <连接条件> 
...

实例

演示表

查询演示

内连接

select * from Person inner join Address on Person.person_id=Address.person_id;

左外连接

select * from Person left join Address on Person.person_id=Address.person_id;

右外连接

select * from Person right join Address on Person.person_id=Address.person_id;

posted @ 2022-10-19 10:53  漓白  阅读(104)  评论(0编辑  收藏  举报