本资料为产品岗位作为日常工作参考,语言口语化
At 2019/4/26 By David.Yang
如何使用限定条件来进行数据过滤?
在前问当中,我们已经学会到了SELECT查询,
在过程当中多次接触了WHERE这个关键词,打过预防针应该知道他就是用来做数据查询的过滤使用的。
如果没有他,我们将获取所有有限行内的数据,
这会给我们的查询结果带来麻烦,因为返回的结果集当中包含了我们不需要的很多数据。
比如考试成绩表,你想告诉杨过他妈穆念慈,你儿子杨过最近学习不太好啊,
你看看这考试成绩,挂的红灯笼都能把学校点没了,
这时候,你给他妈看6年前杨过上幼儿园的考试成绩,还有说服力么?
没有,限定的时间比如半年内,就是一个时间维度的查询条件,
学生 = 杨过,就是一个指定的学生查询条件。
如果没有条件限制,别说杨过半年的成绩单,就连杨过你都找不到。
他妈不得说你啊。
所以,WHERE是干嘛的?
WHERE是用来根据指定的条件,返回满足指定条件记录行的子句。
语法:
SELECT DISTINCT
column[,column...]
FROM
table_name
WHERE
where_conditions;
WHERE就是我们的查询条件
WHERE子句演示
我们构造一张学生考试表,当中包含了关键字段,
学生id、分数、考试时间等
然后补进一些测试数据。
(请记得我们前文曾接触过的批量插入数据语句)
我们获得测试数据如下
mysql>select* from tests;
黄老邪的弹指神通天下一绝,这么牛逼的老师,教的课怎么样呢?
课程弹指神通的课程id是1,他偷偷去考试表查了查学生的成绩,
黄老邪一句SQL猛操作
SQL
SELECT *
FROM
tests
WHERE
deleted = 0
LIMIT 10;
黄老邪定睛一看
这就的到了所有学生的考试信息了。
逻辑运算符
黄老邪其实不关心学生们的蛤蟆功、一阳指学的怎么样,
他只关心自己教的弹指神通(cuouse no = 1)
这时候我们可以对WHERE条件进行稍稍复杂化一点,
我们可以将多个表达式或逻辑运算符(AND OR)组合在一起形成一个复杂化的查询条件。
黄老邪是这么干的,他只想看自己的课程下学生的考试成绩,
SQL
SELECT *
FROM
tests
WHERE
deleted = 0
AND
courseno = 1
LIMIT 100;
比较运算符
在WHERE子句当中,出了=,我们还可以使用其他的比较运算符,
例如以下:
比如
黄老师想看看哪些小王八蛋弹指神通没好好学,不及格的
黄老邪这么做
SQL
SELECT *
FROM
tests
WHERE
deleted = 0
AND
courseno = 1
AND
score <=60
LIMIT 100;
这些比较运算符可以用在SELECT UPDATE DELETE的WHERE子句当中,
都是作为过滤条件的运算操作使用。
更多过滤条件
我们了解了在WHERE子句中可以使用AND进行条件的逻辑组装,
在面对更多更复杂的过滤条件是,我们还有类似其他
BETWEEN 在一个范围内进行条件过滤
LIKE 基于匹配模式的条件过滤
IN 在一个list中进行命中过滤
IS NULL 是否为NULL
等
本篇完成后,你可以通过WHERE子句进行条件过滤,当然是SELECT,
不管UPDATE,还是DELETE都可以适用WHERE子句过滤,后面篇章将讲解。