MYSQL语法篇之"WHERE"子句
本章来介绍MYSQL里面查询功能强大的WHERE子句。
WHERE子句的特点
WHERE子句的注意事项
WHERE子句的使用
WHERE子句的特点:
过滤记录
其实这一句话的解释有两个方面:
(1)过滤记录=看不到不想看的数据
(2)过滤记录=看到想看的数据
表面上看这两句话是一个意思,但是这里面却包含了WHERE子句的语法理解:
举例:
select * from table_name where column_name=value;
这一个语句中你会发现where子句后面跟着的内容是column_name=value,那么查询出来的是column=value的所有信息。where子句的官方定义是过滤记录,但是我们在使用where子句的时候输入的内容确是想查询的记录。这就是where记录的两个方面的理解的不同。
WHERE子句的注意事项:
这是一个关键点,是WHERE子句学习的关键地方。
where子句当中只能加入字段名和运算符,不能加入聚合函数。如果想加入聚合函数,需要使用到子查询的只是
上面这两段话重点要去理解这么一些知识点:
(1)字段名
(2)运算符
(3)聚合函数
(聚合函数在SQL语句当中是一个高级的知识,我会放在后面的笔记当中进行详细的说明与总结,把常用的一些聚合函数挑出来细说。)
在前面的总结当中已经给大家说了什么是字段名,如果有小伙伴还不清楚的话可以去查看前面的随笔。后面我们重点去了解什么是运算符。
什么是运算符?
运算符其实就是我们小学数学当中认识的一些简单的符号。用来判断数据的,计算机也能通过运算符来过滤数据。
常见的运算符:
1、等于:=
2、不等于:<> 或者 !=
3、大于:>
4、小于:<
5、小于等于:<=
6、大于等于:>=
上面六种就是数据库当中查询表里内容时常用的六种运算符,每一种运算符在数据库当中可以组合使用,但是要注意:
数据库当中组合使用运算符的时候不能与子查询组合使用
什么意思呢?举一个实例:
题:查询所有学生分数>60的学生人数。
分析题目:
主语:人数---查询人数。
条件:分数大于60。
写出语句:
select count(*) from table_name where 分数>60;
这里要注意的是,我上面写的加粗的话:
错误的语法是:
select count(*) from table_name where 分数>分数=(select 分数 form table_name where 分数=60);
这一句用了子查询,但是因为存在运算符>和=号所以计算机在查询时候会先执行where子句当中的子查询得出结果再在where子句里面从左到右运行得出结果作为外循环select的过滤条件。
所以这句语句得不出结果。
思考:那么为什么说运算符可以组合使用?
事实上只要不加入子查询,运算符基本上就可以组合使用。
如:从学生表中查询所有学生的信息并使他们的成绩加五分
语法:
select *,score=score+5 from student;
select * from student where score=score+5;
上面两个语句的语法都是正确的,但是得到的结果不正确。
第一种语法,会出现四个字段名,score+5会作为一个新的字段名出现在结果表中,score+5的结果为原表中的score的值+5。
第二种语法,出现的结果是Empty,where子句后面的内容会被作为条件再在表中查询出满足条件的信息。(这里值得注意的是:score=score+5是已经被执行出结果以后的过滤条件。如果语句无法执行会报错)