[MYSQL] - 数据的过滤

总结一些从数据库表中提取子集的过滤方式

WHERE

样例
select * from student where id > 3;
where后面跟逻辑语句,筛选出符合条件的子集

WHERE子句操作符

=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
BETWEEN在指定的两个值之间

样例

  • 检查单个值:select name from student where name='Zs';  (注意mysql在执行匹配时默认不区分大小写)
  • 不匹配检查: select id from class where id <> 2; 
  • 范围值检查:select name from commodity where price between 10 and 20; (返回价格∈[10,20]的商品名)
  • 空值检查:select * from customer mark is null; (注意这里不能用=。null与0、空串、空格不同)

组合WHERE

and
通过and运算符可以连接多个过滤条件,过滤出满足所有条件的子集。
or
通过or运算符可以连接多个过滤条件,过滤出满足其中至少一个条件的子集。
计算次序
当然它们也可以互相组合,当两者结合时,总是先处理and操作符然后是or,当想改变次序时可以用()想优先计算的判断括起来。
样例
select prod_name from products where (vend_id = 1002 or vend_id = 1003) and prod_price >= 10;

IN操作符

IN操作符用来指定条件范围,范围中列举的每个条件都可以进行匹配,列举条件用逗号分隔。
样例
select * from student where id in (1001,1003,1007) order by name;
运行结果会列举出student中存在的id为1001、1003和1007的数
说明
in可以完成与or相同的功能,in相对于or的优点:

  • 直观
  • 计算次序更容易管理
  • in操作符一般比or操作符清单执行更快
  • 可以包含其它select语句

NOT操作符

not操作符只有一个功能,那就是否定它之后所跟的任何条件。
样例
select * from student id not in (1002,1007);
not支持对in、between和exists取反。

通配符

当对搜索的值不明确时,适合使用通配符来进行模糊匹配。
通配符:用来匹配值的一部分的特殊字符。通配符本身实际是SQL的where子句中有特殊含义的字符。

%通配符

用来匹配0~n个任意字符。
样例:select name from student where name like '张%'; 用于匹配name以张开头的学生。
#### _通配符
用途与%类似,但下划线通配符只匹配单个任意字符。
样例:select name from student where name like '张_'; 匹配姓名为两个字且姓张的学生。
## 使用通配符的技巧
首先,通配符搜索的处理一般要花费比前面其它搜索更多的时间。所以,如果其它搜索能达到目的就尽量不要用通配符。如果确定要用通配符也尽量不要把它放在搜索模式开始处,因为把通配符放在开始处搜索是最慢的。还有要注意通配符摆放的位置不要放错。

参阅书籍

《MySQL必知必会》

本文作者:六月丶

本文链接:https://hctra.cn/index.php/archives/658/

版权声明:如无特别声明,本文即为六月'blog原创,仅代表个人观点,如要转载请务必注明文章出处。
最后修改:2020 年 07 月 30 日 09 : 58 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论