常见的多变查询,和遇到的一些坑。。。。
首先两个表的数据如下:
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
常见的多变查询,和遇到的一些坑。。。。相关推荐
- 最常见的 SQL 查询错误 - 第二章节
第二章节:非 SARGable 查询条件 像大多数编程人员一样,数据库开发人员或多或少倾向于编写直接翻译给定请求的代码.大多数编程语言(包括 SQL)被设计为更易于人们阅读,这也导致了一个问题.为什么 ...
- 4.性能下降原因和常见的Join查询
性能下降 SQL慢,执行时间长,等待时间长 1.查询语句写的烂 2.索引失效 单值索引失效 和 复合索引失效 3.关联查询太多join(设计缺陷或不得已的需求) 4.服务器调优及各个参数设置(缓冲.线 ...
- MySQL 常见的数据库查询性能优化手段
简单介绍了一些常见MySQL数据库优化手段,比如减少数据访问.使用索引.使用关联查询等等. 文章目录 1 优化数据访问 2 重构查询 2.1 优化子查询 2.2 优化GROUP BY和DISTINCT ...
- 常见优化Sql查询性能的方法收集
1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用"临时表"暂存中间结果 6.不 ...
- 测试必看:常见的SQL查询案例(带答案)
1.查询名字中含有"金"字的学生信息 select * from 学生表 where Sname like '%金%' 2.查询并统计同龄学生人数 select Sage,coun ...
- Oracle常见的经典查询语句
01. 查询员工表所有数据 select * from emp; 02. 查询职位(JOB)为'PRESIDENT'的员工的工资 select sal from emp where job=' ...
- MySQL分页查询中该避开的坑
参考文章:https://cloud.tencent.com/developer/article/1550771 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建 ...
- C语言常见的错误及解决办法,避坑笔记
一.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内存.浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.结构体成员指针未初始化 struct stud ...
- Django 分组查询与ordering字段 巨坑
样例: class Test(Model):class Meta:db_table = 'test'ordering = ['字段1', '字段2', '字段3'] django里常见的 group ...
最新文章
- My deep learning reading list
- 以太坊go-ethereum项目源码本地环境搭建
- boost::geometry模块多边形叠加示例
- java 调用cpp_java jni 调用cpp文件中的方法 | 学步园
- TypeScript入门-枚举
- C# 延时小函数 很好用
- 一起谈.NET技术,WPF Ribbon 开发资料分享
- mysql数据生成词云图_CVPR2018关键字分析生成词云图与查找
- JS处理Cookie
- Ghost配置2——添加代码高亮
- 使用scroll实现Elasticsearch数据遍历和深度分页
- lwip协议栈源码分析之pbuf
- android 如何清除应用数据恢复,手机删除数据如何恢复?手机数据恢复方法【图文教程】...
- Unity3D 串口连接
- “前首富”牟其中:欠的人情太多,要留着命来还
- 模电数电自动控制原理实验台QY-MS301C
- 51单片机期末课程作业之蓝牙、操控、测速、里程小车
- Chromebook2013 由Fyde os 升级为Deepin v20.2.1 (一)
- 运维自动化之系统部署
- cgal + sfcgal
热门文章
- java socket发送定长报文_socket编程
- mfc检测一个目录是否产生新文件_细数Java8中那些让人纵享丝滑的文件操作
- 1.3编程基础之算术表达式与顺序执行(20题)-2022.02.26
- P1287 盒子与球(python3实现)
- 1.5 编程基础之循环控制 10 满足条件的数累加
- 【docker】第五节:docker常用命令总结
- thinkPHP 阿里云OSS 上传文件、直接下载
- Android 自定义焦点框,Android给自定义按键添加广播和通过广播给当前焦点输入框赋值...
- Java笔记-使用ServerSocket构建HTTP服务器
- Arduino笔记-使用RFID-RC522读取IC卡卡号