DQL条件查询语句的语法格式:SELECT 字段列表 FROM 表名 WHERE 条件列表
。
DQL条件查询常见的查询条件大致分为两类,一类是基于比较运算符的查询,可以查询某个范围、某个字符串、某个数据等等,另一类是逻辑运算符,例如逻辑和、逻辑或、是、非等等。
常见的比较运算符条件如下:
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<> 或 != | 不等于 |
BETWEEN…AND… | 在某个范围之内,BETWEEN后填最小值,AND后填最大值 |
IN (…) | 列表取值,IN后面的列表中传入多个值,多选一 |
LIKE | 模糊匹配,_匹配单个字符,%匹配任意个字符 |
IS NULL | 是空的结果 |
常见的逻辑运算符如下:
逻辑运算符 | 功能 |
---|---|
ADD 或 && | 并且的意思,需要多个条件同时成立 |
OR 或 || | 或者的意思,多个条件任意满足一个即可成立 |
NOT 或 ! | 非,不是,条件取反 |
依旧按照前面创建的新冠疫苗接种信息表来演示常用的条件查询案例。
select * from jszx_xgymjzxxb where name = '江睿基';
查询结果如下,只查询出了姓名为江睿基的人员信息。
select * from jszx_xgymjzxxb where nl < '30';
查询结果如下,所有30岁以下的人员的信息都被查询出来了。
select * from jszx_xgymjzxxb where nl <= '30';
查询结果如下,所有30岁以下包含30岁的人员信息都被查询出来了。
首先找到一条人员信息的数据,然后将证件号码一列设置为空,再进行查询。
1)修改姓名为王文良的人员信息,将证件号码一列设置为空。
update jszx_xgymjzxxb set zjhm = NULL where name = '王文良';
2)查询证件号码为空的人员信息。
select * from jszx_xgymjzxxb where zjhm is null;
查询结果如下,证件号码一列为空的数据都被查询出来了。
在2.4中查询的是证件号码为空的人员信息,也就是没有证件号码的人员信息,在这里我们可以使用取反的条件,反向查询,即可查询出有证件号码的人员信息。
select * from jszx_xgymjzxxb where zjhm is not null;
查询结果如下,所有证件号码一列不为空的人员信息都被查询出来了。
表中一共有15条信息,其中年龄为33岁的人员有2个,最终会被筛选出13条信息。
两种实现方式,!=和<>。
select * from jszx_xgymjzxxb where nl != '33';
select * from jszx_xgymjzxxb where nl <> '33';
查询结果如下,只要不是33岁的人员信息都会被查询出来,一共是13条数据。
查询年龄在20岁到35岁之间的人员信息,包含20岁和35岁的人员。
三种实现方式,可以使用小于等于大于等于配合&&来实现,也可以使用and来实现,还可以使用between and来实现。
select * from jszx_xgymjzxxb where nl >= '20' and nl <= '35';
select * from jszx_xgymjzxxb where nl >= '20' && nl <= '35';
select * from jszx_xgymjzxxb where nl between '20' and '35';
查询结果如下,年龄在20岁到35岁的人员信息全部被查询出来了。
select * from jszx_xgymjzxxb where xb = '女' and nl < '30';
查询结果如下,性别是女并且年龄小于30岁的人员信息数据都被查询出来了。
两种方式实现,一种使用逻辑或的方式,另一种使用in提供一个列表的方式。
select * from jszx_xgymjzxxb where nl = '28' or nl = '31' or nl = '34';
select * from jszx_xgymjzxxb where nl in ('28','31','34');
通过LIKE参数的“_”可以一次匹配一个字符串,要查询名字为2字的人员信息,通过LIKE参数加上两个下划线即可查询到。
select * from jszx_xgymjzxxb where name like '__';
查询结果如下,所有名字为2个字的人员信息全部被查询出来了,因此可见,当有需求说查询某某字段指定几个字符串时,就可以通过这种方法来查询。
可以使用LIKE参数的%号进行模糊插叙,%表示任意个字符串,把关键字填写在%之后,就可以查询出最后一位为X的数据,当然前后都可以写%,表示只要包含这个字符串都会被查询。
当然也可以使用LIKE参数的_号,连续补充17位,最后一位填写X,也可以匹配成功。
select * from jszx_xgymjzxxb where zjhm like '%X';
select * from jszx_xgymjzxxb where zjhm like '_________________X';
查询结果如下,证件号码最后一位是X的人员信息数据被查询出来了。