1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)
2.比较运算符
用于比较运算。包括大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)以及IN、BETWEEN AND、IS NULl、GREATEST、LEAST、LIKE、REGEXP等
3.逻辑运算符
逻辑运算符的求值所得结果均为1(TRUE)、0(FALSE),这类运算符有逻辑非(NOT或者!)、逻辑与(AND或者&&)、逻辑或(OR或者||)、逻辑异或(XOR)
4.位操作运算符
参与运算的操作数,按二进制位进行运算。包括位于(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)
算术运算符
比较运算符
等号“=”运算符用来判断数字、字符串和表达式是否相等。如果相等,返回值为1,否者返回值为0
若有一个或两个参数为NULL,则比较运算符的结果为NULL;若同一个比较运算符中的两个参数都是字符串,则按照字符串进行比较;若两个参数均为整数,则按照整数进行比较;若一个字符串和数字进行相等判断,则MySQL可以自动将字符串转换为数字
安全等于运算符“<=>”这个操作和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值。在两个操作数均为NULL时。其返回值为1而不为NULL;而当一个操作数为NULL时,其返回值为0而不为NULL
不等于运算符“<>”或者“!=”用于判断数字、字符串、表达式不相等的判断。如果不相等,返回值为1,否则返回值为0。这两个运算符不能用于判断空值NULL
“<=”、“<”、“>=”、“>”不能用于判断空值NULL
IS NULL和IS NOT NULL检验一个值是否为NULL,如果为NULL,返回值为1,否则返回值为0;IS NOT NULL检验一个值是否为非NULL,如果是非NULL,返回值为1,否则返回值为0。
BETWEEN AND运算符语法格式为:expr BETWEEN min AND max。假如expr大于或等于min且小于或等于max,则BETWEEN返回值为1,否则返回值为0。
LEAST运算符语法格式为:LEAST(值1,值2,…值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。假如任意一个自变量为NULL,则LEAST()的返回值为NULL。
GREATEST(value1,value2,…)语法格式为:GREATEST(值1,值2,…值n),其中n表示参数列表中有n个值。当有2个或多个参数时,返回为最大值,假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。
IN运算符用来判断操作数是否为IN列表中的其中一个值,如果是,返回值为1;否则返回值为0。
NOT IN运算符用来判断表达式是否为IN列表中的其中一个值,如果不是,返回值为1;如果是,返回值为0。
LIKE运算符用来匹配字符串,语法格式为:expr LIKE 匹配条件,如果expr满足匹配条件,则返回值为1(TRUE);如果不匹配,则返回值为0(FALSE)。若expr或匹配条件中任何一个为NULL,则结果为NULL
LIKE运算符在进行匹配时,可以使用下面两种通配符:
(1)‘%’,匹配任何数目的字符,甚至包括零个字符。
(2)‘-’,只匹配一个字符。
REGEXP运算符用来匹配字符串,语法格式为:expr REGEXP匹配条件,如果expr满足匹配条件,返回1;如果不满足,返回0;若expr或匹配条件任意一个为NULL,则结果为NULL
REGEXP运算符在进行匹配时,常用的有以下几种通配符:
(1)‘^’匹配以该字符后面的字符开头的字符串。
(2)‘$’匹配以该字符后的面字符结尾的字符串。
(3)‘.’匹配任何一个单字符
(4)“[…]”匹配在方框内的任何字符
(5)‘*’匹配零个或多个在它前面的任何字符
逻辑运算符
逻辑非运算符NOT或者!表示当操作数为0时,所得值为1;当操作数为非0时,所得值为0;当操作数为NULL时,所得值为NULL
逻辑与运算符AND或者&&表示当所有操作数均为0时、并且不为NULL时,计算所得结果为1;当一个或多个操作数为0时,所得结果为0,其余情况返回值为NULL
逻辑或运算符OR或者||表示两个操作数均为非NULL值,且任意一个操作数为非0值时,结果为1,否者结果为0;当有一个操作数为NULL,且另一个操作数为非0值时,则结果为1,否则结果为NULL;当两个操作数均为NULL时,则所得结果为NULL
逻辑异或运算符XOR。当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;如果一个为0值,另一个为非0值,返回结果为1。
位运算符
位或运算符的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑或运算。对应的二进制位有一个或两个为1则该位的运算结果为1,否则为0。
位与运算符&的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑与运算。对应的二进制位都为1,则该位的运算结果为1,否者为0。
位异或运算符^的实质是将参与运算的连个数据,按对应的二进制数逐位进行逻辑异或运算。对应位的二进制数不同时,对应的结果才为1。如果两个对应位数都为0或者都为1,则对应位的结果为0。
位左移运算符<<使指定的二进制值的所有位都左移指定的位数,左移指定位数之后,左边高位的数值被移除并丢弃,右边低位空出的位置用0补齐。语法格式为:expr< 位右移运算符>>使指定的二进制值的所有位都右移指定的位数。右移指定位数之后,右边低位的数值将被移除并丢弃,左边高位空出来的位置用0补齐。语法格式为:expr>>n。这里n指定值expr要移位的位数。 位取反运算~的实质是将参与运算的数据,按对应的二进制数逐位反转,即1取反后变为0,0取反后变为1 运算符的优先级