DQL 之条件查询、模糊查询及排序|学习笔记

简介: 快速学习 DQL 之条件查询、模糊查询及排序

开发者学堂课程【数据处理:DQL 之条件查询、模糊查询及排序】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/64/detail/1155


DQL 之条件查询、模糊查询及排序


内容介绍:

一.条件查询

二.模糊查询

三.排序


其实查询,删除以及 select  同样,在查询时需要查询指定行所以查询也需要使用条件,很少需要查询整张表,如果表中数据非常之多不需要每一行都查询出来。


一.条件查询

例如需要查询 emp 表中工资大于两万的员工:select* from emp where sal>20000;

image.png

查询 emp 表中有奖金的员工:select* from emp where comm is not null;有奖金即不为空

image.png

查询 emp 表中20部门的所有员工:select* from emp where deptno=20;查询后显示20部门有甘宁,刘备,诸葛亮,周泰,庞统

image.png

查询 emp 表中30部门的所有员工:select* from emp where deptno=30;

其中关羽是部门经理,黛绮丝,殷天正,谢逊,韦一笑为销售员,程普为文员

image.png

上面进行的是条件查询,现在把难度加大查询 emp 表中工资在20000到30000的员工(包含20000和30000):select* from emp where sal 吧 between 20000 and 30000;

image.png

查询 emp 表中所有经理和分析师:select* from emp where job in(’经理’,‘分析师’);在使用可能会出现问题:使用中文会出现乱码。

image.png


二.模糊查询

接下来讲解模糊查询,模糊查询是指查询模糊的数据。例如查询所有姓张的员工,select* from emp where ename like ‘张’ ;不能使用等号代替 like。执行语句还是不能查询,需要在张后加下划线(张_)下划线表示匹配一个字符,如果表中有个一个名为张无忌,使用该语句不能查询因为名字的第一个为张第二个字为任意字,已经确定人名以张开头共两个字。使用 select* from emp where ename like ‘张_’ ;可以查询出两个人。当张后有两个下划线可以查询公司姓张且姓名为三个字,这时如果公司有张无忌这个员工可以查询出。

image.png

查询公司员工姓名为三个字:select* from emp where ename like ‘___’ ;

image.png

查询公司员工姓名为两个字:select* from emp where ename like ‘__’ ;

image.png

查询公司员工工资为五位数,最好使用条件查询(where sal >=10000),如果有个员工工资为十万那么使用模糊查询五位数员工会查询不到工资为十万的员工。

查询公司中员工姓名中有 刚 字,不能使用下划线进行匹配因为条件中没有说明名字有几个字。这时不能使用下划线而要使用百分号,select* from emp where ename like ‘%刚;查询以刚结尾,%表示匹配0到 n 个字符。由于 emp 表中没有以刚结尾的员工,使用 sname 表进行查询:select* from sname where ename like ‘%刚’;如果有人叫刚使用语句同样可以查询出来,因为%匹配0到n个字符。

image.png

查询姓赵的同学:select* from emp where ename like ‘赵%’;

image.png

查询姓王的同学:select* from emp where ename like ‘王%’;

image.png

查询名字中有小字的:select* from emp where ename like ‘%小%’;可以查询名字中有小字的,而不是查询名字中间有小字的

image.png

上面案例即是模糊查询,模糊查询非常有用。应记住关键字 like ,特殊符号 _ ,%。下划线表示匹配一个任意字符,百分号表示匹配0

到 n 个任意字符


三.排序

查询结果需要按条件排序,查询 emp 中所有行默认使用 empno 数据升序进行排序。如果使用员工工资排序(排序需要使用关键字 ORDER BY):select* from emp order by sal;

image.png

查询结果为升序排列,select* from emp order by sal asc;同样是升序但建议使用关键字。如果想要实现降序排列:select* from emp order by sal desc;

image.png

此时排序难度不大,多列排序难度较大。排序中学习了一个关键字 order by ,asc(升序),desc(降序)如果不使用 asc 和 desc 则默认为升序。如果排序列出现相同值(如殷天正与谢逊工资相同,但谢逊排在殷天正下),那么如何解决。需要引入第二列进行排序,即第一列数据相同时,如果第一列能够排序那么不需要第二列再次排序。

Select* from emp order by sal asc,comm desc;当第一列相同时使用奖金做降序排列,执行语句后谢逊排在殷天正上,虽然他俩工资相同但是谢逊奖金较高故按照语句语法谢逊排在殷天正上面

image.png

但诸葛亮与庞统位置没有调换,可以引入第三列继续排序即前两列相同使用第三列比较:Select* from emp order by sal asc,comm desc ,empno asc;查询执行后诸葛亮排在庞统上,前两列相同但诸葛亮员工号较小所以按照升序排列排在庞统上面。

image.png

Order by 后是列名 ,列名后是 asc 或 desc。使用三列排序,当第一列未能对相同值排序,则使用第二列排序,如果第二列还是不能排序,使用第三列排序。

相关文章
|
SQL 关系型数据库 测试技术
PolarDB的Online DDL功能验证实验
本场景带您体验如何在PolarDB-X中进行Online DDL。
|
4月前
|
存储 算法 Java
2025 年一线互联网大厂完整 Java 面试题及答案解析汇总
本文深入剖析一线互联网大厂Java面试题,涵盖Java核心基础(如数据类型、面向对象特性)、JVM(内存模型与垃圾回收机制)、并发编程(线程同步与线程池)及框架(Spring与Spring Boot)。通过技术方案解析与实际应用案例,助力掌握面试要点。资源地址:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
418 1
|
2月前
|
编解码 数据可视化 5G
MATLAB中对不同类型的雷达信号进行仿真
MATLAB中对不同类型的雷达信号进行仿真
|
12月前
|
机器学习/深度学习 人工智能 数据挖掘
GPU加速:解锁高性能计算的未来
【10月更文挑战第20天】GPU加速:解锁高性能计算的未来
735 1
|
人工智能 小程序 API
文字转语音神器+Python编程搞定语音报时小程序
文字转语音神器+Python编程搞定语音报时小程序
193 2
|
前端开发 NoSQL Redis
智能排班系统 【开源说明】
智能排班系统 【开源说明】
641 1
|
编译器 API 调度
JAX 中文文档(十二)(1)
JAX 中文文档(十二)
242 0
|
存储 算法 数据可视化
Qt与Excel:从底层原理到上层应用的全面探索
Qt与Excel:从底层原理到上层应用的全面探索
706 0
|
存储 缓存 监控
内存优化 | Bitmap优化
在内存优化中,优化 Bitmap 占用的内存效果最为明显,在 Android 里面,大部分 OOM,都是 bitmap 占用资源过大导致的,那么问题来了 如何防止 bitmap 占用资源过大导致 OOM?Android 系统何时会发生 OOM?怎样搭建线上线下一体化内存监控体系?Drump 文件过大,我们线上如何查看?线下监控那些工具你会用吗?关于 Native 层的内存泄漏该如何解决?图片监控你做过哪些努力?内存抖动为什么会引起 OOM?内存监控里面采集方式有哪些? 看完本文,希望可以以本文为索引,然后依次排雷解决上述问题,这样你也是这个领域的专家了
630 0
内存优化 | Bitmap优化
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggplot2频率分布直方图和散点图添加误差线
跟着Nature学作图:R语言ggplot2频率分布直方图和散点图添加误差线