MySQL运算符
运算是用来连接表达式中各个操作数据的符号,其作用是指明对操作数所进行的运算。MySQL数据库支持运算符的使用,通过运算符可以更加灵活地操作数据表中的数据。MySQL主要支持算数运算符、比较运算符、逻辑运算符、位运算4中类型。
1.算数运算符
MySQL数据库支持的算数运算符包括加、减、除、和取余运算。它们是最常用的、最简单的一类运算符。
运算符 | 作用 |
---|---|
+ | 加法,返回相加的结果 |
- | 减法,返回相减后的值 |
* | 乘法,返回相乘后的值 |
/,DIV | 取整,返回相除后的值 |
%,MOD | 取余,返回相除后的余数 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0YJ73ehb-1581129150736)(C:\Users\sml\AppData\Roaming\Typora\typora-user-images\1581056833325.png)]
2.比较运算符
比较运算符有很多种,MySQL数据库允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,返回1;为假返回0;不确定返回NULL。
运算符 | 作用 | 运算符 | 作用 |
---|---|---|---|
= | 等于 | BETWEEN min AND max | 在min和max之间 |
<>或!= | 不等于 | IN(value1,value2,…) | 存在于集合(value1,value2,…)中 |
<=> | NULL安全的等于 | IS NULL | 为NULL |
< | 小于 | IS NOT NULL | 不为NULL |
<= | 小于等于 | LIKE | 通配符匹配 |
> | 大于 | REGEXP或RLIKE | 正则表达式匹配 |
>= | 大于等于 |
运算符可以用于比较数字,字符串和表达式。数字作为浮点数比较,而字符串以不区分大小写的方式比较。
1)=运算符,比较运算符两侧是否相等。相等返回1,不相等返回0,涉及NULL的比较都会返回NULL。
2)< >运算符和=相反,如果两侧操作数不等,则值为1,否则为0。涉及NULL的比较都会返回NULL。
3)< = >和=类似,在两侧操作数相等时值为1,不同之处在于即使操作的值为NULL也可以正确比较。
4)<运算符,当左侧操作数小于右侧操作数时,其返回值为1,否则其值为0。
5)<=运算符,当左侧操作数小于等于右侧操作数时,其返回值为1,否则其值为0。
6)>运算符,当左侧操作数大于右侧操作数时,其返回值为1,否则其值为0。
7) >=运算符,当左侧操作数大于等于右侧操作数时,其返回值为1,否则返回值为0。
8)BETWWEENmin AND max运算符为数据指定了一个范围在min到max之间,当操作数在这个范围内,返回1,否则返回0。如果操作数类型不一致,会自动转换后比较。
9)IN运算符同样是为数据指定一个范围,其作用更接近于枚举。
10) IS NULL 运算符的使用格式是”a IS NULL",当 a的值是NULL时,返回1,否则返回0.
11)IS NOT NULL运算符的使用格式是“ a IS NOT NULL",当a的值不是NULL时,返回1,否则返回0。
12)LIKE 运算符的使用格式是“a LIKE %ab2%”,当a中含有字符串“ab2”时,则返回1,否则返回0.
13)REGEXP运算符的使用格式时“str REGEXP str_pat”,当str字符串中含有 str_pat相匹配的字符串时,则返回1,否则返回0.
3.逻辑运算符
逻辑运算符也称为布尔运算符,用来判断表达式的真假。MySQL数据库支持四种逻辑运算符。
运算符 | 作用 | 运算符 | 作用 |
---|---|---|---|
NOT或! | 逻辑非 | OR或|| | 逻辑或 |
AND或& | 逻辑与 | XOR | 逻辑异或 |
1)NOT或!运算符
表示逻辑非,返回的结果和操作数的结果正好相反,即当操作数或者表达式的值为0时,返回1,否则返回0.当值为NULL时,返回NULL。
2)AND或&运算符
表示逻辑与,当所有的操作数为非0时,结果返回1,当有一个或多个操作数为0时,返回0。但是需要注意的是,当操作数中含有NULL时,用and与&两个操作符的结果还是有一定差异的。
3)OR或||运算符
表示逻辑或,当操作数中含有非零值,返回1,否则返回0.当有一个操作数为NULL时,如果另一个非零值,则结果为1,否则为NULL。当操作数都为NULL时,结果为NULL。
4)XOR运算符
表示逻辑异或,当两个操作数的逻辑值相等时,返回0,不等返回1。当含有NULL时,返回NULL。
4.位运算符
位运算符是将给定的操作数转换为二进制,对各个操作数的每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果。
运算符 | 作用 | 运算符 | 作用 |
---|---|---|---|
& | 位与(位AND) | ~ | 位取反 |
| | 位或(位OR) | >> | 位右移 |
^ | 位异或(位XOR) | << | 位左移 |
1)&位与(位AND)
对多个操作数的二进制位做逻辑与操作,例如,3&6,3的二进制是11,6的二进制是110,而11&110的结果是010,十进制是2。
2)|位或(位OR)
对多个操作数的二进制进位进行逻辑或操作,例如,3|6,3的二进制是11,6的二进制是110,11|110的结果是111,十进制是7。
3)^位异或(位XOR)
对多个操作数的二进制位进行逻辑异或操作,例如,36,3的二进制是11,6的二进制是110,11110的结果101,十进制是5。
4)~位取反
对操作数的二进制位进行逻辑NOT操作,举一个经典的取反例子。对1做位取反,由于MySQL中常量数字默认是用8字节来表示的,8字节就是64位,常量1的二进制表示前面有63个零,最后一个是1,位取反之后就变成了前面有63个1,最后一个是0,转换位十进制就是18446744073709551614。
5)>>位右移
对操作数的二进制位做向右移动指定的位数,例如,6>>2,就是对6的二进制110右移2位,左边补零,结果就是1。
6)<<位左移
对操作数的二进制位做向左移动指定的位数,例如,6<<2,就是对6的二进制110左移2位,右边补零,结果就是11000,转换为十进制就是24.