目录
针对查询结果,按照一定的条件进行筛选!!!
通过where指定一个条件,把查询到的每一行都带入到条件中,



因为NULL和任何数据进行运算都是NULL,这里NULL<60结果还是NULL,当成了false,不打印。解决方法:加个条件or,带上NULL。


注意:where字句不能使用列的别名来比较

内部原理解释:mysql里执行查询操作时,先针对每行记录计算条件,并按条件筛选,满足条件的记录才会取出对应的列,并且计算里面的表达式(生成别名)——先where条件筛选再as total起别名 。
所以先开始where的时候还没有生成total,这个条件都不认识,那么计算机自然会报错
逻辑运算符AND
查询语文成绩大于80且数学成绩大于80的同学

逻辑运算符OR
查询语文成绩大于80或者数学成绩大于80的同学

技巧:条件中有and和or,先计算and再算or。但是一般不建议记优先级,最好的办法是加括号()
between...and...

between A and B ——> [A,B] 左右都是闭区间
查询数学成绩是30或者55或者66的同学

用in更方便
查询姓马的同学的成绩(开头第一个字是马)
%可以表示任意字符(0个也是),以马开头的name都可以被查出来



_下划线,匹配任意一个字符
一个下划线就是一个字符

注意:模糊查询like对数据库来说开销还是比较大的
mysql支持的模糊匹配功能非常有限
实际开发中,可能会遇到更复杂的模糊匹配
可能会描述一些更复杂的规则,某某字符出现在什么位置范围,重复出现的次数。。。。
这就需要正则表达式来描述这种字符串的规则
正则表达式:使用一些特殊的规则,来描述一个字符串长啥样,那么查询或进行其他操作时,就可以按照这套规则来进行匹配。

解决方法:使用<=>和NULL比较;

is null 要求只能比较一个列是否为空,而<=>可以直接比较两个列,一行里有两列都是null也可以查询出来。

限制查询结果的数量limit
直接在查询语句的末尾加上limit指定数字N,N表示这次查询最大结果的数量。
在数据库中,分页查询主要就是通过limit来实现的。
搭配offset就可以指定从第几条开始筛选了,(offset的值从0开始计算)

