MySQL必知必会(三)
search criteria
OR filter condition
,即搜索条件或者过滤条件。WHERE
后面的条件获取结果集,然后对结果集进行你需要的排序。(如果这两个关键字写反了,将会报错。)SELECT * FROM `user` WHERE id BETWEEN 1 AND 2;
-- 1 和 2 都是闭区间
SELECT * FROM `user` WHERE time BETWEEN '2018-09-04 21:20:10' AND '2018-09-04 21:21:15';
-- 查询指定的日期之内的所有产品
SELECT * FROM `user` WHERE email IS NULL;
-- 通过空值检查,查询出没有邮箱绑定的用户,然后......
logical operator:
AND
、OR
、IN
、NOT
SELECT * FROM `user` WHERE id=1 OR id=2;
-- 等价于下面
SELECT * FROM `user` WHERE id IN(1,2);
那为什么要使用 IN
?
1. 语法更加清楚且直观
2. 计算次序更加合理(操作符使用少)
3. IN执行比OR执行更快
4. 可以包含其他SELECT语句,能够更动态的建立WHERE子句。
NOT
操作符只有一个功能,否定它之后的所有条件。在复杂的子句中,使用NOT
将会非常有用,可以在查找出来的数据集合 和 剩下的数据集合中间自由调转。MySQL 中支持使用NOT
对IN
、BETWEEN
、EXISTS
子句进行取反,和其他数据库中允许使用NOT
对各种条件取反有很大区别(区别是啥,还待去查阅学习,哈哈哈)。
在mysql中null与null不相等 允许null的一段一定要留心.
wildcard
过滤LIKE
操作符tag:操作符何时不是操作符,是在它作为谓词(predicate)的时候,从技术上面讲,LIKE是谓词而不是操作符,虽然最终结果是相同的
%
表示任何字符出现任意次数。根据MySQL的配置方式(修改MySql Server安装目录下的 my.ini 文件,在[mysqld]下加入下面一行 set-variable=lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)最后重启一下MySql服务即可。当然还有其他很多方法),搜索可以是区分大小写的,所以如果区分大小写,XKX%
和xkx%
的结果是不匹配的
x%k
可以查找出以x开始,以k结束的所有数据。
%
还可以匹配到0个字符,%
代表的搜索模式中该位置上可以有0个、1个或者多个字符。
注意NULL
WHERE name LIKE '%'
是不能匹配到name值为NULL的行记录的。
_
表示匹配单个字符而不是多个字符
虽然通配符很好用,但是要付出代价的,也就是通配符搜索的处理要比一般的条件搜索耗费更长时间,所以:如果能用其他操作符操作达到相同的结果,应该尽量避免使用通配符;如果必须要使用,也应该尽量不要把它们应用在搜索模式的开始,因为将通配符置于搜索模式的最开始,搜索起来是最慢的;
优质内容筛选与推荐>>