MySQL基础之多表关联查询

2.7 多表关联查询

我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。本章节我们将向大家介绍如何使用 MySQL JOIN 在两个或多个表中查询数据。你可以在 SELECT , UPDATE DELETE 语句中使用 MySQL JOIN 来联合多表查询。

JOIN 按照功能大致分为如下三类:

  1. CROSS JOIN (交叉连接)
  2. INNER JOIN (内连接或等值连接)。
  3. OUTER JOIN (外连接)

 

2.7.1 交叉连接

关键字:

CROSS JOIN

交叉连接也叫笛卡尔积连接。笛卡尔积是指在数学中,两个集合X Y 的笛卡尓积( Cartesian

product ),又称直积,表示为X*Y ,第一个对象是X 的成员而第二个对象是Y 的所有可能有序对的其中一个成员。

交叉连接的表现:

行数相乘、列数相加

 

隐式交叉连接:
MySQL基础之多表关联查询_第1张图片

显式交叉连接:

SELECT * FROM A CROSS JOIN B

 

2.7.2 内连接

关键字:

INNER JOIN
内连接也叫等值连接,内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。

 

隐式内连接:

MySQL基础之多表关联查询_第2张图片

显式内连接:

SELECT * FROM A INNER JOIN B ON A.id = B.id

 

2.7.3 外连接

外联接可以是左向外联接、右向外联接或完整外部联接。也就是说外连接又分为:

左外连接、右外连接、全外连接

外连接需要有主表或者保留表的概念。

FROM 子句中指定外连接时,可以由下列几组关键字中的一组指定:

左外连接:

LEFT JOIN 或者 LEFT OUTER JOIN

MySQL基础之多表关联查询_第3张图片

 

右外连接:

RIGHT JOIN 或者 RIGHT OUTER JOIN

MySQL基础之多表关联查询_第4张图片

 

全外连接(MySQL不支持):

FULL JOIN FULL OUTER JOIN

SELECT * FROM A FULL JOIN B ON A.id = B.id

 

外连接总结

  1. 通过业务需求,分析主从表
  2. 如果使用LEFT JOIN ,则主表在它左边
  3. 如果使用RIGHT JOIN ,则主表在它右边
  4. 查询结果以主表为主,从表记录匹配不到,则补null

 

耐心的读者可以继续观看我下一篇文章:待续

你可能感兴趣的:(Mysql)