05-条件查询

介绍

通常在进行查询操作的时候,都是查询符合某些条件的数据,很少将表中所有数据都取出来。怎么取出表的部分数据?需要在查询语句中添加条件进行数据的过滤。常见的过滤条件如下:

条件 说明
= 等于
<>或!= 不等于
>= 大于等于
<= 小于等于
> 大于
< 小于
between...and... 等同于 >= and <=
is null 为空
is not null 不为空
<=> 安全等于(可读性差,很少使用了)。
and 或 && 并且
or 或 || 或者
in 在指定的值当中
not in 不在指定的值当中
exists
not exists
like 模糊查询

条件查询语法格式


select 
  ...
from
  ...
where
  过滤条件;

过滤条件放在where子句当中,以上语句的执行顺序是:
第一步:先执行from
第二步:再通过where条件过滤
第三步:最后执行select,查询并将结果展示到控制台

等于 =

判断等量关系,支持多种数据类型,比如:数字、字符串、日期等。

案例1:查询月薪3000的员工编号及姓名

image

案例2:查询员工福特的岗位及月薪

image

案例3:查询岗位是经理的员工编号及姓名

image

不等于 <> 或 !=

案例1:查询工资不是3000的员工编号、姓名、薪资

image

大于、大于等于、小于、小于等于

案例:找出薪资大于等于3000的员工姓名、薪资

image

and

and表示并且,还有另一种写法:&&

案例:找出薪资大于等于3000并且小于等于5000的员工姓名、薪资。

image

or

or表示或者,还有另一种写法:||

案例:找出工作岗位是经理和总裁的员工姓名、工作岗位

image

and和or的优先级问题

and和or同时出现时,and优先级较高,会先执行,如果希望or先执行,这个时候需要给or条件添加小括号。另外,以后遇到不确定的优先级时,可以通过添加小括号的方式来解决。对于优先级问题没必要记忆。

案例:找出薪资小于1500,并且部门编号是20或30的员工姓名、薪资、部门编号。

image

between...and...

between...and...等同于 >= and <=
做区间判断的,包含左右两个边界值。
它支持数字、日期、字符串等数据类型。
between...and...在使用时一定是左小右大。左大右小时无法查询到数据。
between...and... 和 >= and <=只是在写法结构上有区别,执行原理和效率方面没有区别。

案例:找出薪资在1600到3000的员工姓名、薪资

image

is null、is not null

案例1:找出津贴为空的员工姓名、薪资、津贴。

image

image

例2:找出津贴不为空的员工姓名、薪资、津贴

in、not in

案例1:找出工作岗位是经理和销售员的员工姓名、薪资、工作岗位

image

案例2:找出工作岗位不是经理和销售员的员工姓名、薪资、工作岗位

image

模糊查询like

模糊查询又被称为模糊匹配,在实际开发中使用较多,比如:查询公司中所有姓张的,查询岗位中带有经理两个字的职位等等,这些都需要使用模糊查询。
模糊查询的语法格式如下:

select .. from .. where 字段 like '通配符表达式';

在模糊查询中,通配符主要包括两个:一个是%,一个是下划线_。其中%代表任意多个字符。下划线_代表任意一个字符。

案例1:查询员工名字以'S'开始的员工姓名

image

案例2:查询员工名字以'斯'结尾的员工姓名

image

案例3:查询员工名字中含有'克'的员工姓名

image

案例4:查询员工名字中第二个字母是'密'的员工姓名

image

案例5:查询学员名字中含有下划线的。

执行以下SQL语句,先准备测试数据:

drop table if exists student;
create table student(
  id int,
  name varchar(255)
);
insert into student(id,name) values(1, 'susan');
insert into student(id,name) values(2, 'lucy');
insert into student(id,name) values(3, 'jack_son');
select * from student;

image

posted on 2025-09-18 20:36  笨忠  阅读(13)  评论(0)    收藏  举报