MySQL WHERE字句
在使用MySQL查询select语句时,可以使使用WHERE字句来指定查询条件,从FROM字句中间选取适当的数据行和列
- 可以使用一个或多个以逗号分隔的表,包括各种使用WHERE子句条件。但是WHERE子句的SELECT命令是一个可选部分。
- 您可以使用WHERE子句指定任何条件。
- 您可以指定一个以上的条件下使用AND或者OR运算符。
- 一个WHERE子句中可以使用的分散DELETE或UPDATE的SQL命令指定条件。
WHERE语法格式:
SELECT * FROM 表名 WHERE 查询条件 <判断运算,判断运算1,...>
--示例:
已知数据库中有以下数据:

查询:查上表年龄在23岁的同学有哪些人!
语句:
SELECT * FROM BEIMU WHERE BEI_AGE='23'
执行结果
查询比23岁大的同学有哪些
SELECT * FROM BEIMU WHERE BEI_AGE>23
查询比23岁小的同学有哪些
SELECT * FROM BEIMU WHERE BEI_AGE<23
查询年龄不是23岁的同学
SELECT * FROM BEIMU WHERE BEI_AGE<>23
SELECT * FROM BEIMU WHERE BEI_AGE!=23
判定条件其结果取值为TRUE,FALSE,UNKNOWN(未知)
一、判断运算的语法分类如下:
- 算术运算符:+ - * /(处可以写成div)%(取值可以写成mod)
- 比较运算符:= > >= < <= !=(不等于可以写成<>)
- 逻辑运算符:&&(逻辑与可以写成 AND) || (逻辑或也可以写成or) NOT(逻辑非)
- 范围表达式:between...and...(同样可表示 表达式 >= and 表达式 <=)或者 not between...and...(同样可表示 表达式< || 表达式 >)
- 集 合:in(值,值1,值2...) not in值,值1,值2...) (可理解为:in 在...期间...中,not in 不在.....其中,期间,中)
- 模糊查询:LIKE NOT LIKE,通配符使用:%表示0-那个字符,_下划线表示一个字符
- 位运算符:&(按位与) |(按位或)
- null空值判断:is null 与is not null,如果使用null=null,null<>null,null=0,null<>0,null=false等都不对
注意:如果是初学者,从文章开始看的,可先暂时对一下内容做个理解,后面我会对GROUP BY、‘having、order by和limit进行详细分析
二、group by 配合聚合函数一块使用
COUNT:计数、数、数数;量的计数
MAX:最大值
MIN:最小值
AVG:平均值
SUM:总和、求和、总数
SELECT的查询条件只能是GROUP BY 的字段或者聚合函数
三、having和where不同,where是从原数据中赛选,having是从查询的结果中再次筛选
where子句中不能使用组合函数,having中可以使用
四、order by排序
默认是升序,也可以在字段后面加ASC(升序)或者DESC(降序),可使用多列排序
五、分页limit 参数1 ,参数2
参数1:从第几行开始查询,行数从零开始
参数2:每页显示几行
MySQL中三种方式使用where条件,由好到坏:
-
在索引中使用where条件过滤不匹配的记录,这是在存储引擎层完成的
-
在使用索引覆盖来扫描(在Extra列中出现了Using index)来返还记录,直接从索引中过滤不需要的记录返回命中结果,这是在MySQL服务层完成的,但无需再返回查询记录
-
从数据层中返回数据,然后过滤不满足条件记录,这是在MySQL服务器完成的,MySQL需要从数据表中读出记录然后过滤