mysql where表达式如何理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql where表达式如何理解相关的知识,希望对你有一定的参考价值。

这张图片里的where 后面的表达式不能理解。向各位大神请教,还请解答通俗易懂,这里如果是修改的语句比如update class set name='王五' where 1,为什么会改整张表?如果where后面是where 2,where 1=0,where 1=1,where 1=2,这些表达式会发生什么样的情况呀? where 1,where 2,where 1=0,where 1=1,where 1=2,这些分别代表什么意思啊。如果你能讲明白了,我会再加分酬谢,我不缺积分。谢谢

WHERE 子句用于规定选择的标准。
WHERE 子句:如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。语法 SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
where 1,where 2,where 1=0,where 1=1,where 1=2,这些跟查询的"列"没有任何关系,但是查询的结果必须满足‘where’字句的条件;where 1和where 2 相当于 where true 是永恒成立的(不是所有数据库都成立,在Oracle中必须写成where 1=1),也就相当于没有查询条件;where 1=0,where 1=1,where 1=2 首先要判断条件书否成立?如where 1=1相当于where true显示所有行,而where 1=0则不显示任何行。
参考技术A where 后面大于0 就为非0 或真所有的数据都修改, where 1=2,1<>2为false 所以不出现任何数据,你可以在mysql下 把 where 后的用select 显示一下,返回0 或者非0追问

where 2呢?where 1就是where 1=1吗

追答

只要where 后面的结果为非0 就执行, 1就是1, 不是1=1,1=1是判断

参考技术B 可以理解为if

一起去大厂系列深入理解MySQL中where 1 = 1的用处

首先,明白一个前提条件:

where 1 = 1;   --永远为真

也就是说:

select * from student;    

等同于: 

select * from student where 1 = 1;

看起来,where 1 = 1就是一个永远为真的条件,没有什么用。 但当我们加上动态SQL语句后,结果就不同了:


没有where 1 = 1

select * from student
where
	and condition1 
	and condition2 
	and ...

当所有的condition都为false时,该语句就变成了:

select * from student where;

这个SQL语句在语法上是错误的。


where 1 = 1

select * from student
where 1 = 1
	and condition1 
	and condition2 
	and ...

当所有的condition都为false时,该语句就变成了:

select * from student where 1 = 1;

由于where语句后的条件为true,因此该语句在逻辑上等同于

select * from student;

总结

where 1 = 1语句用于动态SQL语句中,是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态SQL语句的一种方法。


有帮助就点个赞吧!

以上是关于mysql where表达式如何理解的主要内容,如果未能解决你的问题,请参考以下文章

小贝_mysql select5种子句介绍

mysql left join的深入探讨

MySql的学习笔记

烧瓶使用 where 表达式执行 mysql 查询

MySQL:索引具有多个 BETWEEN 表达式的 WHERE 子句

mysql查询的where子句中的正则表达式或替换函数