MySQL基础篇 | 简单的查询、条件查询、排序查询

这篇具有很好参考价值的文章主要介绍了MySQL基础篇 | 简单的查询、条件查询、排序查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✅作者简介:大家好我是@每天都要敲代码,希望一起努力,一起进步!
📃个人主页:@每天都要敲代码的个人主页

🔥系列专栏:MySQL专栏

目录

一:简单的查询

1. 查询一个字段

2. 查询多个字段 

3. 查询全部字段

4. 计算员工的年薪

5. 将查询出来的字段显示为中文

二:条件查询

1. = 操作符 

2. <> != 操作符

3. between … and …操作符

4. is null

5. and

6. or

7. and 和 or 联合使用

8. in

9. not

10. like

11.  算术运算符

12. 安全等于<=> 

 13. least & greatest

14. 逻辑运算符

15. 位运算符(了解)

三:排序查询

1. 单一字段排序

2. 手动指定排序顺序

3. 多个字段排序

4.  使用字段的位置(下标)来排序

5. 使用别名进行排序 


一:简单的查询

语法格式:  

select 字段名1,字段名2,字段名3,.... from 表名;

注意:

(1)任何一条sql语句以 “;” 结尾
(2)sql语句不区分大小写

1. 查询一个字段

例如:查询员工的姓名

select ename from emp;

MySQL基础篇 | 简单的查询、条件查询、排序查询

Select语句后面跟的是字段名称,select是关键字,select和字段名称之间采用空格隔开,from表示将要查询的表,它和字段之间采用空格隔开。

2. 查询多个字段 

例如:查询员工的编号和姓名

select empno, ename from emp;

MySQL基础篇 | 简单的查询、条件查询、排序查询

查询多个字段,select中的字段采用逗号间隔即可,最后一个字段,也就是在from前面的字段不能使用逗号了。

3. 查询全部字段

例如:查询当前数据库中,emp表中的所有字段

select * from emp;

MySQL基础篇 | 简单的查询、条件查询、排序查询

采用select * from emp,虽然简单,但是*号不是很明确,建议查询全部字段将相关字段写到select语句的后面;在以后java连接数据库的时候,是需要在java程序中编写SQL语句的,这个时候编写的SQL语句不建议使用select *  这种形式,建议写明字段,增强可读性!

4. 计算员工的年薪

例如:列出员工的编号,姓名和年薪

在select语句中可以使用运算符!但不会更改数据库中原始的数据!

select empno,ename,sal*12 from emp;

MySQL基础篇 | 简单的查询、条件查询、排序查询

sal*12看着很不舒服,我们可以用as给查询结果的列重命名,as可省略

MySQL基础篇 | 简单的查询、条件查询、排序查询

5. 将查询出来的字段显示为中文

采用as关键字重命名表字段,并且这里的as 是可以省略的!

注意:字符串必须添加单引号 或者 双引号;标准sql语句中要求字符串使用单引号括起来;虽然mysql支持双引号,尽量别用!

select empno as '员工编号',ename as '员工姓名',sal*12 as '年薪'from emp;
# 写成双引号的方式,只能在MySQL中运行,不通用;建议写成单引号的方式
select empno  "员工编号", ename  "员工姓名", sal*12  "年薪" from emp;

MySQL基础篇 | 简单的查询、条件查询、排序查询

二:条件查询

条件查询需要用到where语句,where必须放到from语句表的后面!

语法格式:     

       select 
            字段,字段...
        from
            表名
        where
            条件;

执行顺序:先from,然后where,最后select

支持如下运算符:

MySQL基础篇 | 简单的查询、条件查询、排序查询

1. = 操作符 

(1)查询薪水为5000的员工

select empno, ename, sal from emp where sal=5000;

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (2)查询job为MANAGER的员工

注意:manager字符串,要用单引号或者双引号括起来!

select empno, ename from emp where job='manager';

MySQL基础篇 | 简单的查询、条件查询、排序查询

(3)“=”只能看作是比较大小,不能字符串拼接!

如果是数字与字符串进行比较,会存在隐式转换(把字符串转换为数字)。若此字符串是数字型的字符串,例如:’1‘,那么会把它转换为整数1;若此字符串不是数字型的字符串,例如:’a‘,并不会转换成ASCII码值来进行比较,会把它转换为整数0来看待!

select 1 = '1'; -- 1
select 1 = 'a'; -- 0
select 0 = 'a'; -- 1

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

如果比较的两侧都不是数字型的字符串,例如:’a‘,'b'等,此时会转换成ASCII值后在进行比较

select 'a' = 'b';
select 'a' < 'b';

MySQL基础篇 | 简单的查询、条件查询、排序查询

只要有NULL参与判断结果就为NULL

1 = NULL; -- NULL
NULL = NULL; -- NULL

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

2. <> != 操作符

(1)查询薪水不等于5000的员工

注意:对于数值也可以采用单引号或者双引号引起来的,例如5000写成'5000'或者“5000”都是可以的,但是不建议这样写!

select empno, ename, sal from emp where sal <> 5000;
select empno, ename, sal from emp where sal != 5000;

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (2)查询工作岗位不等于MANAGER的员工

 select empno, ename, sal from emp where job<>'manager';

MySQL基础篇 | 简单的查询、条件查询、排序查询

3. between … and …操作符

①between and在使用的时候必须左小右大。

②between and除了可以使用在数字方面(左闭右闭)之外,还可以使用在字符串方面(左闭右开)!

(1)查询薪水为1600到3000的员工(左闭右闭)

第一种方法:使用between...and...

select empno, ename, sal from emp where sal between 1600 and 3000;

MySQL基础篇 | 简单的查询、条件查询、排序查询

between … and …,它是包含最大值和最小值的;就等价于>= and <=

第二种方式:使用>= and <=

select empno, ename, sal from emp where sal >=1600 and sal<=3000;

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)查看员工首字母是A到C开头的名字(左闭右开)

select ename from emp where ename between 'A' and 'C'; --包括A,不包括C

MySQL基础篇 | 简单的查询、条件查询、排序查询

4. is null

①null为空,但不是空串,为null可以设置这个字段不填值,空不是一个值,不能用等号衡量。

②如果查询为null的字段,采用is null;不能采用 =null !

(1)查询津贴为空null的员工

(1)首先先使用select * from emp; 查询到所有的comm信息,发现有很多是NULL 

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)如果直接只用 =null 是无法查询出符合条件的数据

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (3)应该采用 is null 作为查询条件

select * from emp where comm is null;
select * from emp where comm is not null;

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)找出那些员工没有津贴:这就包括为null的和0的

select * from emp where comm is null or comm=0;

MySQL基础篇 | 简单的查询、条件查询、排序查询

5. and

and表示并且的含义,表示所有的条件必须满足。

例如:查询工作岗位为MANAGER,薪水大于2500的员工

select * from emp where job='manager' and sal >= 2500;

MySQL基础篇 | 简单的查询、条件查询、排序查询

6. or

or,只要满足条件即可,相当于包含;满足条件之一即可!

例如:查询出job为manager或者job为salesman的员工

select * from emp where job='manager' or job = 'salesman';

MySQL基础篇 | 简单的查询、条件查询、排序查询

7. and 和 or 联合使用

找出薪资大于1000的并且部门编号是20或30部门的员工。

select ename,sal,deptno from emp where sal > 1000 and (deptno = 20 or deptno = 30);
-- and优先级比or高,要想让or先执行,必须加小括号

MySQL基础篇 | 简单的查询、条件查询、排序查询

8. in

in表示包含的意思,完全可以采用or来表示,采用in会更简洁一些

(1)查询出job为manager或者job为salesman的员工

使用or:select * from emp where job='manager' or job = 'salesman'; 
使用in:select * from emp where job in ('manager','salesman');

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)查询出薪水包含1600和薪水包含3000的员工

select * from emp where sal in(1600,3000);

MySQL基础篇 | 简单的查询、条件查询、排序查询

9. not

(1)查询出薪水不包含1600和薪水不包含3000的员工

第一种写法:使用不等<>

select * from emp where sal<>1600 and sal <>3000;

第二种写法: 使用等于= 和 not 联合使用

select * from emp where not(sal=1600 or sal=3000);

第三种写法:使用not in

select * from emp where sal not in(1600,3000);

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)查询出津贴不为null的所有员工

select * from emp where comm is not null;

MySQL基础篇 | 简单的查询、条件查询、排序查询

10. like

Like可以实现模糊查询,like支持 % 和 下划线_ 匹配。

②Like中%和下划线的差别?

%匹配任意字符出现的个数;

_下划线只匹配一个字符;

Like 中的表达式必须放到单引号中或者双引号中。

 (1)查询姓名以M开头所有的员工

select * from emp where ename like 'M%';

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (2)查询姓名以N结尾的所有的员工

select * from emp where ename like '%N';

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (3)查询姓名中包含O的所有的员工

select * from emp where ename like '%O%';

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (4)查询姓名中第二个字符为A的所有员工

select * from emp where ename like '_A%';

MySQL基础篇 | 简单的查询、条件查询、排序查询

(5) 查询既含有a的又含有e的last_name

方法一:写两个模糊查询,然后使用and进行连接

select last_name from employees where last_name like '%a%' and last_name like'%e%';

MySQL基础篇 | 简单的查询、条件查询、排序查询

方法二:放在一起写

 select last_name from employees where last_name like '%a%e%';

 此时发现只有16条记录,与前面的方法相比少了4条,这是因为顺序的问题;还有可能是e在前面a在后面:“%e%a%”

MySQL基础篇 | 简单的查询、条件查询、排序查询

最终写法

select last_name from employees where last_name like '%a%e%' or last_name like '%e%a%';

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

(6)补充:找出名字中下划线_的;利用转义字符\ !

select * from emp where ename like '%\_%';

常用函数补充:

①distinct:去重,去除重复的字段,只保留一个!

②ifnull(字段,0):如果当前字段是null当做0处理,因为null与其它数进行运算,最终的结果还是null!

③着重号``:如果当前字段或者表名是一个MySQL的关键字,那么就是用``来进行区分!

11.  算术运算符

算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加 (+)、减(-)、乘(*)、除(/)和取模(%)运算。

MySQL基础篇 | 简单的查询、条件查询、排序查询

 加法与减法:

①一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;

②一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;

③加法和减法的优先级相同,进行先加后减操作与进行先减后加操作的结果是一样的;

④在Java中,+的左右两边如果有字符串,那么表示字符串的拼接。但是在MySQL中+只表示数 值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。

补充:①MySQL中字符串拼接要使用字符串函数CONCAT()实现 

②字符串存在隐式转换,如果转换不成功,就当做0来处理!

select 1+'1'; -- 整数+整数型的字符串结果还是一个整数,会把整数型的字符串转换成数字(隐式转型)
select 1+'a'; -- 无法识别,会把字符串当成0进行处理
select 1+null -- 和null进行运算,最终结果也还是null;可以使用ifnull函数进行处理

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

 

乘法与除法:

①一个数乘以整数1和除以整数1后仍得原数;

②一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;

一个数除以整数后,不管是否能除尽,结果都为一个浮点数; 一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位

④乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。 在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL

select 10 / 2;
select 10 / 3; -- 无论是否除尽,最终都是一个浮点型数据,保留小数点后四位
select 10 / 0; -- 除以0不会报错,最终结果是一个null

MySQL基础篇 | 简单的查询、条件查询、排序查询

求模(求余)运算符:

结果的符号与被模数的符号保持一致,与模数的符号无关!

select 12 % -5; -- 2
select -12 % 5; -- -2
select -12 % -5; -- -2

MySQL基础篇 | 简单的查询、条件查询、排序查询

12. 安全等于<=> 

安全等于运算符(<=>)与等于运算符(=)的作用是相似的, 唯一的区别 是‘’可 以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

-- 使用=,只要有NULL参与运算,结果就是NULL
select 1 = NULL; #NULL
select NULL = NULL; #NULL
-- 使用安全等于<=>,专门用来比较有NULL参与的运算,结果是0或者1,而不是NULL
select 1 <=> NULL; #0
select NULL <=> NULL; #1

MySQL基础篇 | 简单的查询、条件查询、排序查询

:获取emp表中津贴comm为null的数据

首先我们知道不能使用 “等于=” ,只要有NULL参与,使用“等于=”结果就是NULL,没有任何数据

第一种方式:使用is null 前面已经讲过

select * from emp where comm is null;

MySQL基础篇 | 简单的查询、条件查询、排序查询

第二种:使用isnull(),连在一起写,相当于一个函数

select * from emp where isnull(comm);

MySQL基础篇 | 简单的查询、条件查询、排序查询 

 

第三种:不能使用“等于=”,但可以使用 “安全等于<=>” 参与NULL的运算

select * from emp where comm <=> null;

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

 13. least & greatest

①least:最小值运算符,在多个值中返回最小值!

②greatest:最大值运算符,在多个值中返回最大值!

select lest('e','c','a','f','b');
select greatest('e','c','a','f','b');

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

14. 逻辑运算符

逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。 MySQL中支持4种逻辑运算符如下:

MySQL基础篇 | 简单的查询、条件查询、排序查询

not、and、or前面已经讲过了,这里重点讲解XOR(逻辑异或)---》相同为0相异为1

逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1

-- 相异为1,相同为0
select 1 XOR 0; -- 1
select 1 XOR 1; -- 0
select 0 XOR 0; -- 0

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

15. 位运算符(了解)

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算, 最后将计算结果从二进制变回十进制数。 MySQL支持的位运算符如下:

MySQL基础篇 | 简单的查询、条件查询、排序查询

 

三:排序查询

1. 单一字段排序

排序采用order by子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序如果存在where子句那么order by必须放到where语句的后面!

(1)按照薪水由小到大排序

select * from emp order by sal;

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)先取得job为MANAGER的员工,再按照薪水由小到大排序

select * from emp where job='manager' order by sal; 
-- 先执行from,然后执行where,再执行selelct,最后才执行order by按照sal进行排序输出

MySQL基础篇 | 简单的查询、条件查询、排序查询

(3)按照多个字段排序,如:首先按照job排序,再按照sal排序;多个字段排序只有前面个字段相等时才会按照后面一个字段进行排序。

select * from emp order by job,sal;
-- 先按照job字段排序,当job相等才会按照sal排序

MySQL基础篇 | 简单的查询、条件查询、排序查询

2. 手动指定排序顺序

(1)手动指定按照薪水由小到大排序:asc;默认也是asc从小到大排序的!

select * from emp order by sal asc;

MySQL基础篇 | 简单的查询、条件查询、排序查询

 (2)手动指定按照薪水由大到小排序:desc

select * from emp order by sal desc;

MySQL基础篇 | 简单的查询、条件查询、排序查询

3. 多个字段排序

(1)按照job和薪水倒序

select * from emp order by job desc,sal desc;

MySQL基础篇 | 简单的查询、条件查询、排序查询

(2)按照工资的降序排列,当工资相同的时候再按照名字的升序排列

注意:越靠前的字段越能起到主导作用,只有当前面的字段无法完成排序的时候,才会启用后面的字段

select ename,sal from emp order by sal desc, ename asc;

MySQL基础篇 | 简单的查询、条件查询、排序查询

4.  使用字段的位置(下标)来排序

也就是通过下标进行排序,默认是从1开始,例如:sal下标是6,那么按照薪水升序;不健壮,不建议使用

select * from emp order by 6; --下标从1开始

MySQL基础篇 | 简单的查询、条件查询、排序查询

5. 使用别名进行排序 

例:先获取年薪,然后起别名进行排序

 select empno,ename,(sal+ifnull(comm,0))*12 as year_sal from emp order by year_sal;

MySQL基础篇 | 简单的查询、条件查询、排序查询

例:获取年薪大于30000的

select empno,ename,(sal+ifnull(comm,0))*12 as year_sal from emp where year_sal > 30000;

无法查询 

MySQL基础篇 | 简单的查询、条件查询、排序查询

总结:列的别名只能在order by中使用,不能在where中使用!为什么会这样?这与执行顺序有关!首先先执行from根据表名进行查找,然后执行where执行过滤条件,再执行select语句输出要确定的内容,最后才会执行order by进行排序!而重命名是在select中,select是在where之后,order by之前!所以where中不能使用重命名进行操作,order by中可以使用重命名进行操作!

总结:一定要注意执行的顺序

select 
        字段                     3
from
        表名                     1
where
        条件                     2
order by
        ....                        4
    
order by是最后执行的!文章来源地址https://www.toymoban.com/news/detail-404275.html

到了这里,关于MySQL基础篇 | 简单的查询、条件查询、排序查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringDataJpa的使用 -- 条件查询、排序查询、分页查询

    本文以 Article.java 为数据存放类,操作接口为 ArticleRepository.java @Data lombok 的注解,用来生成 Getter、Setter、toString、hashCode 方法,当添加该注解的同时在添加 相应方法(如 toString())时,添加的方法不会被覆盖。 @NoArgsConstructor lombok 的注解,用来生成 无参构造函数。 @AllArgsCo

    2024年02月01日
    浏览(78)
  • MyBatis-Plus条件构造器[常用的模糊查询、排序查询、逻辑查询和指定字段查询案例]

    Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]_心态还需努力呀的博客-CSDN博客  Mybatis-Plus+SpringBoot结合运用_心态还需努力呀的博客-CSDN博客 MyBaits-Plus中@TableField和@TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus中的更新操作(通过id更新和条件更新)_心态还需努力呀的博客

    2024年02月06日
    浏览(88)
  • Mybatis xml中排序(order by)条件用#{}查询失败

    问题描述: 处理简单分页时,发现从外部传入的排序条件无法生效,但程序无报错,正常返回列表,只是排序条件不对; 原因: #{}表示一个占位符,当#{}传入的数据是一个字符串时,会自动将传入的数据加一个双引号。 解决方法: 使用${}将传入的数据直接显示生成在sql中

    2024年01月17日
    浏览(44)
  • SpringBoot集成Jpa对数据进行排序、分页、条件查询和过滤

    之前介绍了SpringBoot集成Jpa的简单使用,接下来介绍一下使用Jpa连接数据库对数据进行排序、分页、条件查询和过滤操作。首先创建Springboot工程并已经继承JPA依赖,如果不知道可以查看我的另一篇文进行学习,这里不做介绍。文章地址(https://www.cnblogs.com/eternality/p/17391141.htm

    2024年02月04日
    浏览(42)
  • ElasticSearch学习简单使用(索引、文档、分页查询、多条件查询)

    APIfox接口在线文档 安装连接 下载链接(各个系统,也包括docker) 打开 我下载的时window版本,直接就是zip压缩包解压后直接使用 执行bin目录下的这个bat文件,就会自动打开终端运行了。 大部分使用http请求进行学习。 你需要一个接口工具,postman,APIfox,或者一些浏览器插件

    2024年02月03日
    浏览(43)
  • MySQL 查询常用操作(2) —— 条件查询 where

    MySQL中常用的查询操作,首先是能直接从表中直接取出数据,接着能对查询结果做一些简单的处理,比如去重等,然后是根据条件查询数据,包括精准查询、模糊查询以及按照数据的某个范围或者指定多个指标进行查询,值得注意的是,MySQL中的一些查询会忽略空值。最后是将

    2023年04月10日
    浏览(66)
  • MySQL查询条件OR导致模糊查询失效

    起因:查出来的列表数据,通过查询条件过滤,发现过滤条件并不起作用 检查发现:where查询条件里面有or的过滤条件,用来进行权限控制,模糊查询条件本来是起效果的,但是OR的条件一执行,就有多了些数据 代码: 期望的结果:先查出来所有符合要求的,然后再根据过滤

    2024年01月22日
    浏览(44)
  • 6-MySQL查询条件

    在MySQL中,高级查询是指使用更复杂的查询语句和操作符来检索和操作数据库中的数据。高级查询可以帮助您更精确地找到所需的信息,并提高查询的效率和灵活性。 以下是高级查询的一些常见应用场景和意义: 连接多个表:使用JOIN操作符将多个表连接起来,以便在一次查

    2024年02月08日
    浏览(39)
  • MySQL学习笔记 ------ 条件查询

    //----------条件查询----------// SELECT 查询列表 FROM 表名 WHERE 筛选条件; 1、按条件表达式筛选 (1) 简单条件运算符: = != = =  =安全等于 (2)案例1:查询工资 12000 的员工信息 (3)案例2:查询部门编号不等于90号的员工名和部门编号 2、按逻辑表达式筛选 (1)逻辑运算符:

    2024年02月15日
    浏览(36)
  • 十、MySQL(DQL)条件查询

    :表示且 and:表示且 between……and……:between之后为最小值,and之后为最大值 or:表示或 in(参数1,参数2,参数3……):符合参数即可输出 _下划线:每一个下划线,代表一个占位 %数字:表示从末尾开始匹配,符合即可输出

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包