数据库在我们的测试工作中,用到最频繁的就是查询了,而在查询中又数连接查询使用最多,对于小白来说连接查询又是他们的难点,本文就MySQL中的连接查询,单独给大家科普一下。
大家都知道,在项目中的数据组成往往是复合的,所以单独的一张表中的数据难以支撑数据的完整显示,所以这个时候就需要用到连接查询,把多个表中的数据联合起来显示,以达到我们的预期。
接下来我们分别学习内连接、左\右外连接、全连接。
l 内连接
显示左表及右表符合条件的记录(这里的左表和右表,你可以理解为TESTA表和TESTB表)。
示例:现在有TESTA表和TESTB表,表中的数据如下:
其中1、2是TESTA表独有的,3、4是共有的,5、6是TESTB表独有的,那我们使用内连接的数据显示结果如下(使用关键字INNER JOIN……ON)。
从结果来看,只显示了两个表共有的数据。
当然内连接中的INNER可以省略,它们执行结果是一样的:
l 左\右外连接
左连接是显示左表(TESTA表)的全部记录和右表(TESTB表)符合连接条件的记录,其中右表不符合条件的数据显示为NULL。
我们还是用上面的两个表示例:
当然右连接反之:显示右表(TESTB表)的全部记录和左表(TESTA表)符合连接条件的记录,左表不符合条件的数据显示为NULL。
执行结果如下:
l 全连接
显示左表(TESTA表)的全部记录和右表(TESTB表)的全部记录,两个表中没有的数据显示为NULL。
两个表的全连接结果如下
当然其中左/右外连接有可以叫左/右连接,所以语法中的OUTER关键字是可以省略的,如下
可以看出去掉后,它们的运行结果一致
当然全连接中的OUTER也可以去掉,运行的结果也是一致的
只不过在工作中很少有听到全外连接的说法。
l 其他写法
内连接可以写成一种全量数据的等值连接
结果可以看出,它们的运行结果一致
最后我们在工作中除了经常使用MySQL之外还有其他的常用的数据库,比如Oracle等,在后续的分享中我会对MySQL和Oracle中的区别进行科普,让我们能更好的理解数据库。