任务三 MySQL运算符
知识点
1.MySQL常用的运算符有哪几类?
答:MySQL常用的运算符有4类:
(1)算术运算符:用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/或DIV)、取余(%或MOD)。
(2)比较运算符:用于比较表达式的值是否满足某种关系,如>、<、=、<>、!=、<=>、IN、IS NULL、BETWEEN AND、LIKE、REGEXP等。
(3)逻辑运算符:用来判断表达式的真假,包括与(&&或AND)、或(||或OR)、非(!或NOT)、异或(XOR)。
(4)位运算符:针对二进制的每一位进行运算,包括按位与(&)、按位或(|)、按位取反(~)、按位异或(^)、按位左移(<<)、按位右移(>>)。
2.MySQL中的算术运算符有哪些?运算规则是什么?
答:MySQL算术运算符包括: (1)+(加法):n1+n2+…+nx (2)-(减法):n1-n2-…-nx (3)(乘法):n1n2*…*nx (4)/或DIV(除法):n1/n2返回浮点数商,n1 DIV n2返回整数商(去掉小数部分) (5)%或MOD(求余):n1%n2或MOD(n1,n2)返回余数,结果符号与被除数n1一致
运算规则:只要有NULL参与运算,结果均返回NULL;除法和取余运算时如果除数为0,系统不报错,结果返回NULL值;小数也可以实现取余运算。
3.比较运算符的返回结果是什么?有哪些常用比较运算符?
答:比较运算符返回的结果是逻辑值,有三种:1(TRUE,真)、0(FALSE,假)和NULL。
常用比较运算符包括:
(1)>、>=、<、<=:大于、大于等于、小于、小于等于
(2)=:等于
(3)<>、!=:不等于
(4)<=>:安全等于,与"="作用相似,区别是可以用来判断NULL值
(5)IN、NOT IN:判断是否属于某个数据集合
(6)IS NULL、IS NOT NULL:判断是否为NULL值
(7)BETWEEN AND、NOT BETWEEN AND:判断是否在某个取值范围内
(8)LIKE、NOT LIKE:判断字符串是否匹配
(9)REGEXP:正则匹配
4."="和"<=>"运算符有什么区别?
答:"="是普通的等于运算符,用于判断两个值是否相等。"<=>"是安全等于运算符,与"="作用相似,区别是"<=>"可以用来判断NULL值。当使用"="比较NULL值时结果为NULL,而使用"<=>"比较NULL值时,NULL<=>NULL返回1,NULL<=>0返回0。为避免不可预期的结果,与NULL值比较时建议使用IS NULL或IS NOT NULL进行判断。
5.LIKE运算符的通配符有哪些?如何使用?
答:LIKE运算符可以使用两种通配符: (1)百分号"%":代表零个或多个不确定个数的字符。例如:'ABC' LIKE 'A%'匹配以A开头的字符串,'ABC' LIKE '%A'匹配以A结尾的字符串,'ABC' LIKE '%A%'匹配包含A的字符串。 (2)下划线"_":代表一个字符。例如:'ABC' LIKE 'A__'匹配以A开头后跟两个字符的字符串,'ABC' LIKE 'B'匹配中间是B的三个字符的字符串。
6.MySQL中的逻辑运算符有哪些?运算规则是什么?
答:(1)&&或AND(逻辑与):非NULL操作数全部为真(非0)则结果为1,只要有一个为假(0)则结果为0。遇假则假。 (2)||或OR(逻辑或):非NULL操作数只要有一个为真(非0)则结果为1,全部为假(0)则结果为0。遇真则真。 (3)!或NOT(逻辑非):非NULL操作数为真(非0)则结果为0,为假(0)则结果为1。遇真则假,遇假则真。"!"优先级高于"NOT"。 (4)XOR(逻辑异或):一个为真一个为假则结果为1,都为真或都为假则结果为0。操作数相同则假,不同则真。
包含NULL的运算规则:逻辑与运算中NULL遇到真则结果为NULL,遇到假则结果为0;逻辑或运算中NULL遇到真则结果为1,遇到假则结果为NULL;逻辑非运算NULL结果为NULL;逻辑异或运算含NULL则结果为NULL。
7.MySQL支持哪6种位运算符?运算规则是什么?
答:(1)&(按位与):1和1相与得1,与0相与得0。
(2)|(按位或):0和0相或得0,其他情况均得1。
(3)~(按位取反):1取反得0,0取反得1。
(4)^(按位异或):相同的数异或得0,不同的数异或得1。
(5)<<(按位左移):将x的二进制数向左移n位,右边补n个0。
(6)>>(按位右移):将x的二进制数向右移n位,左边补n个0。
位运算会先将操作数变成二进制数再进行运算,然后将结果从二进制变回十进制数。只要有一个操作数为NULL,结果返回NULL。
8.BETWEEN AND运算符的语法和作用是什么?
答:BETWEEN AND用于判断x是否在[x1,x2]取值范围内,x1为小值,x2为大值。格式为:x BETWEEN x1 AND x2。如果在范围内返回1,不在范围内返回0。对应的否定形式为x NOT BETWEEN x1 AND x2。BETWEEN AND也可以用于字符串的比较,如'Z' BETWEEN 'A' AND 'Z'返回1。
9.MySQL运算符的优先级规则是什么?
答:当复杂的表达式有多个运算符时,优先级高的先运算,优先级相同则按照从左到右的顺序运算,有小括号的先计算括号里面的内容。
优先级从高到低依次为:
(1)!
(2)+(正号)、-(负号)、~(按位取反)
(3)^
(4)*、/(DIV)、%(MOD)
(5)+(加)、-(减)
(6)<<、>>
(7)&
(8)|
(9)=(比较)、!=、<>、<=>、>、>=、<、<=、IS NULL、LIKE、IN、REGEXP
(10)BETWEEN…AND
(11)NOT
(12)&&、AND
(13)XOR
(14)||、OR
(15)=(赋值)、:=(赋值)
如果不能确定运算符的优先级顺序,可以使用圆括号"()"来提升其优先级别。最内层的圆括号中的表达式优先级别最高。
10.比较运算中NULL值有什么特殊规则?
答:(1)NULL值与任何数据(包括NULL)的任何算术、比较运算均返回NULL,但运算符"<=>"除外。
(2)如果要判断一个值是否为空值,只可以使用"<=>"、IS NULL和IS NOT NULL运算符。
(3)NULL和'NULL'是不同的,前者表示空值,后者表示字符串。
(4)NULL表示不确定的值,它的值不等于0。