MySQL必知必会(三)


过滤数据

  • WHERE 单子句

    检索数据一般都需要指定 search criteria OR filter condition,即搜索条件或者过滤条件。
    SQL过滤和应用过滤 如果SQL查询出来的结果没有精确匹配到你需要的数据,你可以在程序中再次进行手动筛选,但是这是强烈不建议的,原因:应用程序性能下降、服务器每次传输数据的时候都需要发送多余的数据,会导致带宽不必要的浪费。所以应该尽量优化SQL语句,每次都可以得到最有效的数据。
    ORDER BY 和 WHERE 使用顺序 其实这个按照正常逻辑就完事了:肯定是先根据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;
-- 通过空值检查,查询出没有邮箱绑定的用户,然后......
  • WHERE 子句中的组合关键字


    logical operator: ANDORINNOT
    当AND和OR同时使用时,如果不做任何处理,会优先处理AND操作,会使得结果出错,所以应当合适的使用括号进行对条件包裹起来,消除歧义。
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 中支持使用NOTINBETWEENEXISTS 子句进行取反,和其他数据库中允许使用NOT对各种条件取反有很大区别(区别是啥,还待去查阅学习,哈哈哈)。

在mysql中null与null不相等 允许null的一段一定要留心.

  • 通配符wildcard过滤

    利用通配符可以创建比较特定数据的搜索模式(search pattern)。
    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的行记录的。
_表示匹配单个字符而不是多个字符

虽然通配符很好用,但是要付出代价的,也就是通配符搜索的处理要比一般的条件搜索耗费更长时间,所以:如果能用其他操作符操作达到相同的结果,应该尽量避免使用通配符;如果必须要使用,也应该尽量不要把它们应用在搜索模式的开始,因为将通配符置于搜索模式的最开始,搜索起来是最慢的;
优质内容筛选与推荐>>
1、Web Services
2、【转载】产品经理入门案例分析——锤子手机策略
3、sqlserver 全部行政区域数据库脚本(城市列表)
4、关于发现宇宙微波背景(CMB)辐射的一则趣闻
5、QGraphicsProxyWidget paintEvent(from 1+1 =2)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号