MySQL之表连接

表连接

当需要同时显示多个表的字段时,就可以用表连接来实现这样的功能。从大类上分,表连接可分为内连接和外连接,它们之间的最主要区别是,内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。

MySQL之表连接
查找出雇员的名字和所在的部门,雇员名称和部门分别存在表emp和dept中,因此需要使用表连接进行查询:
MySQL之表连接

外连接可分为左连接和右连接

  1. 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
  2. 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
    MySQL之表连接

子查询

在某些条件下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询,用于子查询的关键字主要包括 in,not in,= ,!=,exists,not exists等

查出emp表跟dept表相对应部门的人
MySQL之表连接

如果子查询记录数为一行,还可以用=代替In
MySQL之表连接
在某些情况下,子查询可以转换成表连接,例如

MySQL之表连接

记录联合
将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候,就需要用union和union all关键字来实现这样的功能,语法如下:

SELECT * FROM t1
UNIONUNION ALL
SELECT * FROM t2
...
UNIONUNION ALL
SELECT * FROM tn;

UNION和UNION ALL的主要区别是UNION ALL是把结果集直接合并在一起,而UNION是将UNION ALL后的结果进行一次DISTINCT,去除重复记录后的结果。
将emp和dept表中的部门编号集合显示出来:

MySQL之表连接
MySQL之表连接