MySQL语句的条件查询

1.什么是条件查询?

条件查询是众多查询语句里的一种方法,不是将表中所有的数据都查出来的,而是查询出符合条件的数据。

语法格式:

select 字段名 from 表名 where 查询条件;

2.条件查询中的条件

下面例子中所用到的emp表
在这里插入图片描述

2.1.= 等于

查询薪资等于800的员工
select * from emp where sal=800;

在这里插入图片描述

2.2.!= 或<> 不等于

查询薪资不等于800的员工
select * from emp where sal!=800;
select * from emp where sal<>800;

在这里插入图片描述

2.3.< 小于

查询薪资小于3000select * from emp where sal<3000;

在这里插入图片描述

2.4.<= 小于等于

查询薪资小于等于3000select * from emp where sal<=3000;

在这里插入图片描述

2.5.> 大于

查询薪资大于3000select * from emp where sal>3000;

在这里插入图片描述

2.6.>= 大于等于

查询薪资大于等于3000select * from emp where sal>=3000;

在这里插入图片描述

2.7.between … and … 在两个值之间

between…and…等同于>=and<=

查询薪资在15003000之间的
select * from emp where sal between 1500 and 3000;
select * from emp where sal>=1500 and sal<=3000;

在这里插入图片描述

2.8.is null 为null(is not null 不为空)

查询津贴为nullselect * from emp where comm is null ;
查询津贴不为nullselect * from emp where comm is not null ;

注意:在数据库中null不能使用等号来衡量,需要使用is null进行判断,null表示什么都没有、空,它不是一个值。

select * from emp where comm = null ;	查询结果为空

在这里插入图片描述

2.9.and 并且

查询薪资为3000且名字为FORD的员工
select * from emp where sal=3000 and ename='FORD';    
员工名字为字符串,需要使用单引号引起来

在这里插入图片描述

2.10.or 或者

查询薪资为800或者3000select * from emp where sal=800 or sal=3000;

在这里插入图片描述
and和or同时出现时的优先级问题:
查询工资大于2500,并且部门编号为10或20 的员工。

select * from emp where sal>2500 and deptno=10 or deptno=20;
如果我们按照上面的写法,所查询出来的数据如下图所示,明显不符合我们的要求

我们需要使用小括号将or语句括起来
select * from emp where sal>2500 and (deptno=10 or deptno=20);

在这里插入图片描述
在这里插入图片描述
上面的测试并不能看出and和or的优先级谁更高,我们需要进行一下的查询测试。

我们来查询工资为3000且名字叫作SCOTT的人和工资为1250且名字叫作WARD的人,我们分别使用小括号和不使用小括号进行查询。
select ename,sal from emp where (sal=3000 and ename='SCOTT') or (sal=1250 and ename='WARD');
select ename,sal from emp where sal=3000 and ename='SCOTT' or sal=1250 and ename='WARD';

在这里插入图片描述
在这里插入图片描述
经过上面的测试,我们就可以得出,and 的优先级是要高于or的

2.11.in 包含 (not in 不在这个范围中)

in相当于多个or

查询薪资为(800,1500,3000)这些的员工的名字
select ename as 员工姓名 from emp where sal=800 or sal=1500 or sal=3000;
select ename as 员工姓名 from emp where sal in (800,1500,3000);
查询薪资不为(800,1500,3000)这些的员工的名字
select ename as 员工姓名 from emp where sal not in (800,1500,3000);

in 并不是一个区间,in后面跟的是具体的值,更类似于一个集合。

在这里插入图片描述
在这里插入图片描述

2.12.like 模糊查询

like 模糊查询,支持 % 百分号,_ 下划线匹配,"%“表示任意的多个字符,”_ "表示任意的一个字符

查询名字中含有'S'的员工
select ename from emp where ename like '%' 'S' '%';
查询名字是以'T'结尾的
select ename from emp where ename like '%T';
查询名字以'S'开始的
查询第二个字母是'A'select ename from emp where ename like '_A%';
查询第三个字母是'R'select ename from emp where ename like '__R%' ;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果名字中含有下划线,而我们又想要查找出名字中含有下划线的

select name from table_name where name like '%_%';
这样查找会查出所有的姓名,因为'_'具有特殊含义,们需要w对其进行转义,加一个斜杠'\'
select name from table_name where name like '%\_%';
这样就可以找出名字中带有下划线的数据了
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值