MySQL的过滤(极客时间学习笔记).doc
1MySQL 的过滤的过滤(极客时间学习笔记极客时间学习笔记)数据过滤SQL 的数据过滤,可以减少不必要的数据行,从而可以达到提升查询效率的效果.比较运算符在SQL中,使用WHERE子句对条件进行筛选,筛选的时候比较运算符是很重要.上面的比较运算符,并不是说每个DBMS都支持,这里主要说MySQL,不支持(!)和(!lt;)等.WHERE 子句的基本格式是:SELECT.(列名)FROM.(表名)WHERE.(子句条件)举几个例子:SELECT name,hp_max FROM heros WHERE hp_max6000;/查询所有最大生命值大于 6000 的英雄SELECT name,hp_max FROM heros WHERE hp_max BETWEEN 5399AND 6811;/查询所有最大生命值在 5399 到 6811 之间的英雄SELECT name,hp_max FROM heros WHERE hp_max IS NULL;/对hp_max 字段进行空值检查2逻辑运算符如果存在多个 WHERE 条件子句,可以使用逻辑运算符:注意的是WHERE子句中同事存在OR和AND的时候,AND执行的优先级会很高,也就是说 SQL 会先处理 AND,再处理 OR 操作符.当然,一种情况除外,那就是()优先级最高.SELECT name,hp_max,mp_max FROM heros WHERE hp_max6000AND mp_max1700 ORDER BY(hp_max+mp_max)DESC;/查询最大生命值大于 6000,最大法力值大于 1700,并按照最大生命值+最大法力值降序排序SELECT name,role_main,role_assist,hp_max,mp_max,birthdateFROM herosWHERE(role_main IN(#39;法师#39;,#39;射手#39;)OR role_assist IN(#39;法师#39;,#39;射手#39;)ANDDATE(birthdate)NOTBETWEEN#39;2016-01-01#39;AND#39;2017-01-01#39;ORDER BY(hp_max+mp_max)DESC;/查询主要定位或者次要定位是法师或是射手的英雄,同时英雄的上线时间不在 2016-01-01 到2017-01-01 之间.使用通配符进行过滤上面的条件过滤都是对已知值进行过滤,如果我们要检索文本中包3含某个词的所有数据,这里就需要使用通配符了,通配符是我们用来匹配值得一部分的特殊字符,这里需要使用到 LIKE 操作符.想要匹配任意字符串出现的任意次数,需要使用(%)通配符,匹配单个字符,就需要使用下划线(_)通配符.(%)和(_)的区别在于前者代表一个或多个字符,后者只能代表一个字符.SELECT name FROM heros WHERE name LIKE#39;%太%#39;/匹配包含太字的英雄SELECT name FROM heros WHERE name LIKE#39;_%太%#39;/匹配除了第一个字符外,包含太字的英雄同样的,并不是所有的 DBMS 都是使用(%)和(_)来表示多个字符和一个字符的,具体的 DBMS 应该查询具体的手册.