MySQL-运算符
有志者,事竟成
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。
文章目录
前言
运算符是用来连接表达式中各个操作数的符号,其作用是用来指明对操作数所进行的运算。MySQL数据库支持使用运算符。通过运算符,可以使数据库的功能更加强大。而且,可以更加灵活的使用表中的数据。MySQL运算符包括4类,分别是算术运算符、比较运算符、逻辑运算符和位运算符。
一、运算符简介
当数据库中的表定义完成后,表中的数据代表的意义就已经定下来了。通过使用运算符进行运算,可以得到包含另一层意义的数据。例如,学生表中存在一个birth字段,这个字段是表示学生的出生年份。如果,用户现在希望查找这个学生的年龄。而学生表中只有出生年份,没有字段表示年龄。这就需要进行运算,用当前的年份减去学生的出生年份,这就可以计算出学生的年龄了。
算术运算符:包括加、减、乘、除和求余这几种算数运算符。这类运算符主要是用在数值计算上。其中,求余运算也称为模运算。
比较运算符:包括大于、小于、等于、不等于和为空等比较运算符。主要用于数值的比较、字符串的匹配等方面。尤其值得注意的是,like、in、between and和is null等都是比较运算符。还有用于使用正则表达式的regexp也是比较运算符。
逻辑运算符:包括与、或、非和异或等逻辑运算。这种运算的结果只返回真值(1或true)和假值(0或false).
位运算符:包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算。这些运算都必须先数值变为二进制。然后在二进制数上进行操作的。
二、算术运算符
算术运算符是MySQL中最常用的一类运算符。MySQL支持的算术运算符包括加、减、乘、除、求余。
下面将t1表中字段a的值进行加法、减法和乘法运算。计算结果显示如下:
三、比较运算符
比较运算符是查询数据时最常用的一类运算符。select语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。
1、运算符“=”
“=”可以用来判断数字、字符串和表达式等是否相等。如果相等,结果返回1;如果不相等,结果返回0。空值(null)不能使用“=”来判断。
下面使用“=”的例子
2、运算符“<>”和“!=”
“<>”和“!=”可以用来判断数字、字符串、表达式等是否不相等。如果不相等,结果返回1。如果相等,结果返回0。这两个符号也不能用来判断空值(null)
下面是使用“<>”和“!=”的例子:
3、运算符“<=>”
“<=>”的作用与“=”是一样的,也是用来判断操作数是否相等。不同的是,“<=>”可以用来判断null。
下面是使用“<=>”的例子:
4、运算符“>”
“>”用来判断左边的操作数是否大于右边的操作数。如果大于,返回1;如果不大于1,返回0。空值(null)不能使用“>”来判断。
下面是使用“>”的例子:
5、运算符“>=”
“>=”用来判断左边的操作数是否大于或等于右边的操作数。如果大于或者等于,则返回1。如果小于,返回0。空值(null)不能使用“>=”来判断。
下面是使用“>=”的例子:
6、运算符“<”
“<”用来判断左边的操作数是否小于右边的操作数。如果小于,返回1;如果不小于1,则返回0。空值(null)不能使用“<”来判断。
下面是使用“<”的例子:
7、运算符“<=”
“<=”用来判断左边的操作数是否小于或等于右边的操作数。如果小于或者等于,返回1。如果大于,返回0。空值(null)不能使用“<=”来判断。
下面是使用“<=”的例子:
8、运算符“is null”
“is null”用来判断操作数是否为空值(null)。操作数为null时,结果返回1;操作数不为null时,结果返回0。is not null刚好与is null相反。
下面是使用“is null” 和“is not null”的例子:
9、运算符“between and”
“between and”可以判断操作数是否落在某个取值范围内。在表达式x1 between m and n中,如果x1大于等于m,而且小于等于n,结果将返回1,如果不是,结果将返回0。
下面是使用“between and”的例子
10、运算符“in”
“in”可以判断操作数是否落在某个集合中。表达式“x1 in(值1,值2,…,值n)”中,如果x1等于值1到值n中的任何一个值,结果将返回1。如果不是,结果将返回0。
下面是使用“in”的例子:
11、运算符“like”
“like”用来匹配字符串。在表达式x1 like s1中,如果x1与字符串s1匹配,结果将返回1。如果不匹配,结果将返回0。
下面是使用“like”的例子:
12、运算符“regexp”
“regexp”也用来匹配字符串,但其是使用正则表达式进行匹配的。表达式“x1 regexp ‘匹配方式’”中,如果x1满足匹配方式,结果将返回1。如果不满足,结果将返回0。
下面是使用“regexp”的例子:
四、逻辑运算符
逻辑运算符用来判断表达式的真假。逻辑运算符的返回结果只有1和0。如果表达式是真,结果返回1。如果表达式是假,结果返回0。逻辑运算符又称为布尔运算符。MySQL中支持四种逻辑运算符。这四种逻辑运算符分别是与、或、非和异或。
1、与运算
“&&”或者AND表示与运算。所有操作数不为0且不为空值(null)时,结果返回1;存在任何一个操作数为0时,结果返回0;存在一个操作数为null且没有操作数为0时,结果返回null。与运算符“&&”可以有多个操作数同时进行与运算,其基本形式为“x1&&x2&&…&&xn”。
下面是使用“&&”的例子。
2、或运算
“||”或者OR表示或运算。所有操作数中存在任何一个操作数不为非0的数字时,结果返回1;如果操作数中不包含非0的数字,但包含null时,结果返回null;如果操作数中只有0时,结果返回0。或运算符“||”可以有多个操作数同时进行或运算,其基本形式为“x1||x2||…||xn”。
下面是使用“||”的例子。
3、非运算
“!”或者not表示非运算。通过非运算,将返回与操作数相反的结果。如果操作数是非0的数字,结果返回0;如果操作数是0,结果返回1;如果操作数是null,结果返回null。或运算符“!”只能有一个操作数进行非运算,其基本形式为“!x1”。
下面是使用“!”的例子。
4、异或运算
XOR表示异或运算。异或运算符XOR的基本形式为“x1 XOR x2”。只要其中任何一个操作数为null时,结果返回null;如果x1和x2都是非0的数字或者都是0时,结果返回0,;如果x1和x2中一个是非0,另一个是0时,结果返回1。
下面是使用“XOR”的例子。
五、位运算符
位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,然后进行位运算,最后再将计算结果从二进制数变回十进制数。在MySQL中支持6种位运算符。这6种位运算符分别是按位与、按位或、按位取反、按位异或、按位左移和按位右移。
1、按位与
“&”表示按位与。进行该运算时,数据库系统会先将十进制的数转换为二进制的数。然后对应操作数的每个二进制位上进行与运算。1和1相与得1,与0相与得0。运算完成后再将二进制数变回十进制数。
下面是使用“&”的例子。
2、按位或
“|”表示按位或。将操作数化为二进制数后,每位都进行或运算。1和任何数进行或运算的结果都是1,0与0或运算结果为0。
下面是使用“|”的例子。
3、按位取反
“~”表示按位取反。将操作数化为二进制数后,每位都进行取反运算。1取反后变成0,0取反后变成1。
下面是使用“~”的例子。
4、按位异或
“^”表示按位异或。将操作数化为二进制数后,每位都进行异或运算。相同的数异或之后结果是0,不同的数异或之后结果是1。
下面是使用“^”的例子
5、按位左移与按位右移
“<<”表示按位左移。“m<<n”表示m的二进制数向左移n位,右边补上n个0。例如,二进制数001左移1位后将变成0010。“>>”表示按位右移。“m>>n”表示m的二进制数向右移n位,左边补上n个0。二进制数001右移1位后变为001,最后一个1被移除去了,直接就不要了。
下面是使用“<<”和“>>”的例子。
六、运算符的优先级
由于在实际应用中可能需要同时使用多个运算符。这就必须考虑运算符的运算顺序。到底谁先运算。谁后运算?下面列出了运算符的优先级,按照表从上到下,优先级一次降低。
优先级 | 运算符 | 优先级 | 运算符 |
---|---|---|---|
1 | ! | 8 | | |
2 | ~ | 9 | =,<=>,<,<=<>,>=,!=,<>,in,is null,like,regexp |
3 | ^ | 10 | between and , case, when,then,else |
4 | *,/,DIV,%,MOD | 11 | not |
5 | +,- | 12 | &&,AND |
6 | >>,<< | 13 | ||,OR,XOR |
7 | & | 14 | := |
七、总结
这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。
文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。
可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。
文章来源: xiaoqijava.blog.csdn.net,作者:旷世奇才李先生,版权归原作者所有,如需转载,请联系作者。
原文链接:xiaoqijava.blog.csdn.net/article/details/126803761
- 点赞
- 收藏
- 关注作者
评论(0)