目录

【数据库】5.连接查询

连接查询完整学习

连接查询-菜鸟教程

连接查询的含义

连接查询指使用多张表联合查询选取出最终的结果。实际开发中,一般一个业务都会对应多张表。

连接查询的分类

/sql/sql-join.png

根据表的连接方式来划分可以将连接查询划分为:

  • 内连接(Inner Join)
    • 等值连接
    • 非等值连接
    • 自连接
  • 外连接(Outer Join)
    • 左外连接
    • 右外连接
  • 全连接(Full Join)

笛卡尔积现象

百度百科:笛卡尔积

若两张表的连接查询没有任何条件限制,查询到的数据条数将是两张表数据条数的乘积。

若要避免最终结果的笛卡尔积现象,需要在联合查询时增加条件。(获取结果需要对数据进行比对的次数仍然是笛卡尔积次)

内连接(Inner Join)

查出的所有数据记录在table1table2都能够被匹配上。

SELECT ...
FROM <table1>
INNER JOIN <table2>
ON <condition>

等值连接

等值连接的最大特点是条件为等量关系

非等值连接

非等值连接的最大特点在于连接的条件是非等量关系

自连接

自连接的最大特点在于将一张表看成两张表,表和自己进行连接

外连接(Outer Join)

外连接中,连接的两张表有主副两表之分,其中,主表中的所有数据会被无条件的查找出来。

左外连接

table1是主表。

查出的数据必须和table1可以匹配上,但不一定要和table2匹配上。在table2中无法匹配的数据缺失字段会自动设置为NULL

SELECT ...
FROM <table1>
LEFT JOIN <table2>
ON <condition>

右外连接

和上述相似,主表变为table2

SELECT ...
FROM <table1>
RIGHT JOIN <table2>
ON <condition>

全连接

全连接中两张表都是主表,只要数据能在任意一张表匹配上,就可以输出数据。

SELECT ...
FROM <table1>
FULL OUTER JOIN <table2>
ON <condition>