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

首先两个表的数据如下:

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,根据前台的人反馈的信息,新增的数据,在分类查询的时候,出不来数据,后来想到是外键设置可以为空的了,因此查不出来数据。

转载于:https://www.cnblogs.com/zoli/p/11158152.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值