zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

[MYSQL] - 数据的过滤

2023-02-18 16:42:42 时间

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

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必知必会》