常见的多变查询,和遇到的一些坑。。。。

首先两个表的数据如下:

drugs表:

drugsType表:

很显然drugs的外键是typeid,typeid这列对应的是drugsType的主键id.为了方便测试我把drugs表中的外键设置可以为空

常见的连接:

1:外连接

外连接可分为:左连接、右连接、完全外连接。

左连接关键词:left outer join和left join都可以用

 select * from drugs d left join drugsType t on d.typeid=t.id      的效果如下

很显然可以看出138条和157条数据,drugs表对应的外键的表中的数据没有显示出来,这就是所谓左连接查询,左连接查询意思就是显示左表中的全部数据,右表符合 on 条件的数据才显示出来,因为drugs表中的两条数据没有与之外键表对应也就没有显示出来。

右连接:关键词:right outer join和right join都可以用

select * from drugs d right join drugsType t on d.typeid=t.id  效果如下:

很显然可以看出138条和157条数据,只显示drugs对应的外键的表中的数据显示出来啦,这就是所谓右连接查询,右连接查询意思就是显示右表中的全部数据,左表符合 on 条件的数据才显示出来,因为drugsType表中的两条数据没有与之主键表对应也就没有显示出来。

2:内连接:关键词:inner join

  select * from drugs d INNER join drugsType t on d.typeid=t.id   效果如下:

很显然可以看出138条和157条数据,因为drugsType表中的两条数据没有与之主键表的数据所以都没有显示出来,这就是内连接查询,内连接查询意思就是显示符合条件全部数据。

3:隐性连接,俗称where连接:

关键词where

select * from drugs d,drugsType t where d.typeid=t.id    效果如下:

很显然可以看出138条和157条数据,因为drugsType表中的两条数据没有与之主键表的数据所以都没有显示出来,这就是隐性连接查询,隐性连接查询意思就是显示符合条件全部数据。跟内连接,结果相同,只不过这个内连接,不怎么推广,不推荐用,随着数据库的发展和更新,大多数人用显性连接,也就是内外连接

之所以写这个博客是因为今天写项目的时候出现的bug,根据前台的人反馈的信息,新增的数据,在分类查询的时候,出不来数据,后来想到是外键设置可以为空的了,因此查不出来数据。

posted @ 2019-07-09 16:16  I若水  阅读(307)  评论(0编辑  收藏  举报