学习MySQL我对MySQL中的运算符分类感到困惑。
NOT
是逻辑运算符 (Details)
而NOT LIKE, LIKE, IS NOT, IS NULL
是比较运算符。 (Details)
我无法掌握真正的差异。
答案 0 :(得分:5)
逻辑运算符的操作数是布尔值;而比较运算符可能包含任何类型的操作数。
比较运算符根据操作数类型集上的排序测试其操作数之间的关系,并返回布尔结果:1 < 2
,{ {1}},'hello' > 'aardvark'
,CURRENT_DATE = '2013-12-30'
,'peanut' LIKE 'pea%'
,'walnut' NOT LIKE 'pea%'
等。
'' IS NOT NULL
。相反,我们根据他们的“真理”以及根据他们的逻辑有效性对他们采取行动的操作员来考虑它们:FALSE < TRUE
,TRUE AND TRUE
,FALSE XOR TRUE
等。
当然,在很多情况下,可以用多种方式表达相同的逻辑结果 - 例如:
NOT FALSE
在逻辑上与1 < 2
和2 > 1
NOT (1 >= 2)
在逻辑上与'walnut' NOT LIKE 'pea%'
相同
NOT ('walnut' LIKE 'pea%')
在逻辑上与'' IS NOT NULL
相同
然而,除了比较操作之外,否定比较涉及逻辑操作(否定),而立即产生期望结果的单个比较操作通常更简洁/可读并且可能更容易使计算机优化。 / p>
*某些语言(例如MySQL)没有真正的布尔类型,而是使用零和非零整数来分别表示NOT ('' IS NULL)
和FALSE
。因此,对他们的布尔值存在排序,尽管这不会影响概念上的区别。
答案 1 :(得分:1)
简单地说,NOT LIKE, LIKE, IS NOT
用于比较两个值。例如:
SELECT * FROM `table_name` WHERE `name` NOT LIKE `examplename`;
SELECT * FROM `table_name` WHERE `key_col` IS NULL;
NOT
返回值的倒数。它与!=
大致相同。示例:
SELECT * FROM `student` WHERE NOT (student_id = 1);
如果操作数为0,则运算符返回1,如果操作数非零,则返回0。如果操作数为非NULL,则返回NULL。
答案 2 :(得分:0)
简单来说:
比较运算符按照使用的运算符比较不同方式的2个值,如==,!=,&gt;,&lt;,&gt; =,&lt; =和其他人。
另一方面,逻辑运算符将检查比较运算符返回的条件(大于1),然后根据结果执行操作。