MySQL 有4类运算符:
算术运算符
注:
除于0时返回NULL。
比较运算符
补充:
<=>
,相等判断,和’=’的作用相似,唯一区别是’<=>’可以用来对NULL判断。
least、greatest运算符,大小判断,如least(20.0,3.0,100.5)。注:
‘<>’或者’!=’,判断数字、字符串、表达式不相等的判断。如果不相等,返回值为1;否则返回值为0。这两个运算符不能用于判断空值NULL。
IS NULL、ISNULL和IS NOT NULL,判断NULL值和非NULL值。
between…and…运算符,值区间判断(是闭区间[a, b])。
IN、NOT IN运算符,判断数据是否存在于某个集合中。
LIKE运算符,匹配字符串。
REGEXP运算符,同样用于匹配字符串,但其使用的是正则表达式进行匹配。
逻辑运算符
逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。
注:
NOT 或者 !,逻辑非。
AND 或者 &&,逻辑与。
OR 或者 ||,逻辑或。
XOR(异或),逻辑异或。
位操作运算符
注:
位或(|)
位与(&)
位异或(^ )
位左移(<<)
位右移(<<)
位取反(~)
其他运算符
赋值运算符(
:=
)
:= 和 = 运算符在大部分场景下并无区别,但 := 更为全场景些。
= 只有在 set 和update时才是和 := 一样,赋值的作用,其它都是关系运算符 等于 的作用。
:= 不只在 set 和 update 时赋值的作用,在 select 也是赋值的作用。变量标识
@
用来标识用户变量。
@@
用来标识系统变量。
系统变量又分为全局系统变量和会话系统变量。如果设置变量时不指定GLOBAL、SESSION或者LOCAL,默认使用SESSION。
-- 读取
SELECT @@global.sort_buffer_size;
SELECT @@session.sort_buffer_size;
SHOW GLOBAL VARIABLES LIKE 'sort_buffer_size';
SHOW SESSION VARIABLES LIKE 'sort_buffer_size';
-- 设置
SET @@global.sort_buffer_size = 2 * 1024 * 1024;
SET @@session.sort_buffer_size = 2 * 1024 * 1024;
SET GLOBAL sort_buffer_size = 2 * 1024 * 1024;
SET SESSION sort_buffer_size = 2 * 1024 * 1024;
-- 有些系统变量只有全局级的,
-- 比如 max_connnections,读取时可以不显示声明 global,但设置时需要,否则会提示你设置的为全局变量。
运算符的优先级
- 运算的优先级决定了不同的运算符在表达式中计算的先后顺序。
- 级别高的运算符先进行计算,如果级别相同,MySQL按表达式的顺序从左到右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级。