多个表关联查询需要依据多表之间列关系将其连接起来,这种连接方式分为三种:内连接(inner join)、外连接(outer join)及交叉连接(cross join)。
举例:
1、内连接(多个表的交集):
如果依据多个表之间列关系进行内连接,查询结果集仅包括满足连接条件的数据行。内连接分为等值连接、不等值连接以及自然连接,其中等值连接最为常见。
等值连接:在连接条件中使用等号(=)运算符比较被连接列的列值是否相等,分显式等值连接和隐式等值连接:
① 显式等值连接:
inner可加可不加。
↓
② 隐式等值连接:
↓
2、外连接:
外连接分为:左外连接、右外连接。
① 左外连接(left join)特点:以left关键字为参照,关键字左边的表为主表,将其数据全部显示,哪怕从表没有数据。
↓
② 右外连接(right join)特点:以right关键字为参照,关键字右边的表为主表,将其数据全部显示,哪怕从表没有数据。
↓
③ 全外连接(full [outer] join)特点:返回的结果集中不仅包含表之间满足on连接条件的全部数据行,还包含左表(“full [outer] join”关键字左边的表)和右表(“full [outer join”关键字右边的表)中不满足on连接条件的数据行。
↓
注意:MySQL数据库不支持全外连接!
3、交叉连接:
左表(“cross join”关键字左边的表)中的每一行与右表(“cross join”关键字右边的表)中的所有行组合,交叉联接的结果是一个笛卡尔积。
↓