本篇来学习下高级查询中的where子句。一般我们查询都是有条件的,很少会查询全量数据,所以我们会根据一些特定条件去海量数据里查询我们希望的结果,这个条件就是写在where子句里。
Where字句:用来判断数据,也就是根据条件筛选数据。Where 子句返回结果有两种:0和1,0代表false,1代表true,在SQL中没有布尔这种数据类型。
判断条件:
比较运算符:>, <, >=, !=, <>, =, like, between and, in, not in。
逻辑运算符:&&(and),||(or), !(not)
简单解释上面几种判断条件:<>这个也是不等于,意思是既大于也小于,like一般是在模糊匹配的时候用到,between and很好理解,在什么范围之间,in 和not in就是包含或者不包含的判断。
Where 原理:
Where是唯一一个直接从磁盘获取数据的时候就开始判断的条件,从磁盘取出一条记录,开始进行where判断,判断的结果如果成立保存到内存,如果失败直接放弃。从这个角度来说,where字句是考虑到内存使用效率的设计。
在举例之前,我们先来修改下我们的学生表,增加几个字段。
分别增加了身高,体重和籍贯三个字段。下面我们来给插入几条数据,插入后效果如下。(如果你嫌麻烦,你可以用图像化工具连接mysql,进行编辑,插入数据)
查询练习1:找出学生id为java01001或者java01003的学生,练习逻辑判断
查询练习2:查询身高在165到175之间的学生
查询练习3:找出来自湖南或者湖北的学生。
这个利用练习1的逻辑判断是完全可以实现,下面我们用like模糊匹配来实现。
上面简单介绍了记住查询where条件,其他的这里就不一一介绍。以后我们会继续拿练习来覆盖这些where条件判断。