4.过滤
工作用的数据库表中一般包含大量数据,很少会一次全部查询,所以会使用where子句加过滤条件来查询我们需要的数据。
认识操作符
比较操作符
=(等于),<>、!=(不等于),=(大于等于),>(大于),between(在指定两个值之间)
逻辑操作符
and(逻辑与),or(逻辑或),in(指定条件范围),not(逻辑非)
匹配操作符
like,regexp
单条件匹配
select name from eg where years > 3;
select name, years from eg where years != 1; # 不匹配查询
select name from eg where bon is null; # 空值查询
多条件匹配
select name, post, sal from eg where post=‘clerk’ and sal>10000;
select name, years from eg where sal between 10000 and 20000; # 范围值查询
select name, years from eg where years not in (1, 3, 5); # 指定条件范围,并进行非范围筛选
搜索模式
前面提到的匹配方式都是针对已知值,但是实际情况中并不总是这样,有时候我们需要匹配一些字面值,但是我们可能并不清楚她们的全貌,这里就需要用到搜索模式,先认识下简单的通配符:%(任何字符出现任意次数),_(匹配单个字符),这里我们会用到like和regexp两种操作符,一起来看下。
select name from eg where name like ‘a%’; # 查询姓名以a开头的员工
![](https://img-blog.csdnimg.cn/20200419213508246.png)
select name from eg where name like '_a%'; # 查询姓名第二个字母为a的员工
![](https://img-blog.csdnimg.cn/20200419213508369.png)
select name from eg where name like 'an';
select name from eg where name regexp 'an';
![](https://img-blog.csdnimg.cn/20200419213508489.png)
关于regexp的用法这里会涉及到正则表达式,因为正则的内容还比较多,这篇文章里我们只先做一个简单了解,后面会在另一个专题来说明,这里我们注意一下regexp和like的一些使用区别就好,通过上面的例子我们可以看到like匹配的是整个列值,所以当'an'只在列值中出现时,like是不会返回对应值的,而regexp操作时只要被匹配的文本在列值里出现了,那么相应值就会被返回。