产品操作MySQL第6篇 – 数据过滤-WHERE子句

MYSQL


本资料为产品岗位作为日常工作参考,语言口语化

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子句过滤,后面篇章将讲解。

你可能感兴趣的:(产品操作MySQL第6篇 – 数据过滤-WHERE子句)