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。使用三列排序,当第一列未能对相同值排序,则使用第二列排序,如果第二列还是不能排序,使用第三列排序。

相关文章
|
5月前
DQL-排序分页
DQL-排序分页
13 0
|
4月前
MyBatisPlus-范围查询、模糊查询及排序查询
MyBatisPlus-范围查询、模糊查询及排序查询
75 0
|
8月前
|
SQL API 数据库
Mybatits-plus实现简单的多表联查和分页操作
mybatits-plus提供了简单的curd单表操作API,可以使用多样的方式实现。但是多表联查的时候,我遇到了一些困难,不可以使用通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。于是就回归到了Mapper.xml文件,这种方法实现起来简单,也可以实现动态sql,非常方便。
106 0
|
SQL 关系型数据库 MySQL
基础DQL(数据查询)——排序查询和分页查询
基础DQL(数据查询)——排序查询和分页查询
127 0
基础DQL(数据查询)——排序查询和分页查询
基础DQL(数据查询)——条件查询
基础DQL(数据查询)——条件查询
93 0
基础DQL(数据查询)——条件查询
基础DQL(数据查询)——聚合函数&分组查询
基础DQL(数据查询)——聚合函数&分组查询
90 0
基础DQL(数据查询)——聚合函数&分组查询
|
SQL 关系型数据库 MySQL
DQL(数据查询语言)之条件查询 | 学习笔记
快速学习 DQL (数据查询语言)之条件查询
111 0
DQL(数据查询语言)之条件查询 | 学习笔记
|
SQL Oracle 关系型数据库
DQL 之聚合函数、分组查询及 Limit 方言|学习笔记
快速学习 DQL 之聚合函数、分组查询及 Limit 方言
113 0
DQL 之聚合函数、分组查询及 Limit 方言|学习笔记
|
自然语言处理 搜索推荐 开发者
高级查询(数组查询和组合查询)| 学习笔记
快速学习高级查询(数组查询和组合查询)。
127 0
高级查询(数组查询和组合查询)| 学习笔记
|
关系型数据库 MySQL 数据库
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2