mysql源码如何解析where字句_MYSQL语法篇之"WHERE"子句

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是已经被执行出结果以后的过滤条件。如果语句无法执行会报错)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值