目录
在数据库查询数据过程中往往需要将不同表的某个字段组合成一个新的表作为查询结果返回,通过JOIN能够同时看到我们想看到的有关联的信息。
如果只是想要同时查询不同表的不同字段的话,完全可以使用SELECT同时选取多个字段,再使用WHERE添加筛选条件达到同样的效果。
JOIN 是什么?
JOIN 是一种基于两个表的拥有共同字段的将两个表的行结合起来的操作。
以下是文章用到的表:table_1,table_2
JOIN 的主要类型
INNER JOIN (内连接)
INNER JOIN 返回两个表中相匹配的行,如果一个表的某一行在另一个表中没有匹配项,则不会出现在结果集中。
INNER JOIN 的基本形式:
SELECT column_1,column_2,...
FROM table_1
INNER JOIN table_2
ON condition;
解释:
1、column_1,column_2,... ——连接的字段名称,可以是两个或多个字段,字段之间使用逗号隔开。
2、table_1 , table_2 ——连接的表的名称。
3、INNER JOIN ——连接方式
4、condition ——连接条件
注意:其他几种连接方式的解释与此一致。
使用 INNER JOIN 查询选手的上场次数:
LEFT JOIN(左连接)
LEFT JOIN 返回左表中所有的行,如果右表中没有相匹配的项,那么该行将会以NULL值返回。
LEFT JOIN 的基本形式:
SELECT column_1,column_2,...
FROM table_1
LEFT JOIN table_2
ON condition;
上述基本形式的解释与INNER JOIN 一致。
使用 RIGHT JOIN 查询选手的上场次数:
可以看到,4、5号的上场次数显示为NULL值,这是因为在 表table_2中没有与之匹配的行。
RIGHT JOIN(右链接)
RIGHT JOIN 与 LEFT JOIN 的情况相反,返回右表中所有的行,如果左表中没有相匹配的项,那么该行将会以NULL值返回。
RIGHT JOIN 的基本形式:
SELECT column_1,column_2,...
FROM table_1
RIGHTJOIN table_2
ON condition;
上述基本形式的解释与INNER JOIN 一致。
使用 RIGHT JOIN 查询所有上场情况:
在结果集中,table_1 中没有匹配的项,所以为NULL值。
FULL JOIN(全连接)
FULL JOIN与INNER JOIN相反,他会返回左右表中所有的行,没有匹配项的行包含NULL值。
FULL JOIN 的基本形式:
SELECT column_1,column_2,...
FROM table_1
FULL JOIN table_2
ON condition;
上述基本形式的解释与INNER JOIN 一致。
使用 FULL JOIN 查看所有的选手和上场情况:
CROSS JOIN(交叉连接)
CROSS JOIN 返回的第一个表的每一行与第二个表的每一行的组合,结果集的行的总数是两个表的行的乘积,使用WHERE添加条件,防止一些记录多的表与其他表使用CROSS JOIN时产生更大的表。
CROSS JOIN 的基本形式:
SELECT column_1,column_2,...
FROM table_1
FULL JOIN table_2
[WHERE condition];
解释:CROSS JOIN 的形式与其他的连接方式相差不发,主要区别在于其他连接方式使用 ON 添加条件,而 CROSS JOIN 使用WHERE添加条件。
CROSS JOIN 的使用实例:
不添加加条件时:
添加条件后:
总结
在数据库中查询数据时,一个表查询一次属实麻烦,而使用关联查询能够帮助我们更好地整合不同表中地信息,以获得更全面地数据视图。关联查询也让查询多个表地数据变得方便,让我们更高效地管理数据库。