左右连接

       今天写分页功能的时候,成都说之前用的连接方式(隐性连接,也就是和内连接的功能是一样的)不能实现分页,左连接可以。我说不信,于是百度了一番,加上测试,理出了一些头绪。

      之前一直疑惑我写的语句里面没有on也没有像inner,left,right这些关键字,但是也能够实现连接两张表的功能。原来我用的带where的这种方式叫做隐性连接,他的功能和内连接的功能是一样的,而带on的连接方式叫做显性连接。现在随着数据库的规范和发展,大多用显性连接,很少用隐性连接。但是我还是想用,哈哈哈哈哈。

      内连接表示两张表里面都满足连接条件的数据才会显示(和 select * from flowers f ,flowerType t where f.fid=t.fid 的功能是一样的);左连接表示显示左表的全部数据,右表满足连接条件的数据;右连接表示显示右表的全部数据,左表满足连接条件的数据。

      举个例子,比如花卉和花卉类型两张表,flowers.fid=flowerType.fid 作为两张表连接的条件。当花卉中的一条数据中的fid为空,也就是没有所属类型的时候,左连接  select * from flowers f left join flowerType t on f.fid=t.fid 查询到的是两张表的全部数据,但是其中花卉中fid为空的那条数据所对应的类型表的数据为空。而右连接  select * from flowers f right join flowerType t on f.fid=t.fid 查询到的是两张表的全部数据,但是其中花卉中fid为空的那条数据对应的类型表数据存在,花卉表的数据为空。

原文地址:https://www.cnblogs.com/BKhp/p/11157811.html