MySQL算术运算符
算术运算符
算术运算符是MySQL中最常用的一种运算符。MySQL中支持的运算符如下表。
符号 | 作用 | 符号 | 作用 |
---|---|---|---|
+ | 加法运算 | % | 求余运算 |
- | 减法运算 | DIV | 除法运算,返回商,同“/” |
* | 乘法运算 | MOD | 求余运算,返回余数,同”%“ |
/ | 除法运算 |
加减乘运算符可以同时运算多个操作数。除号和求余运算符也可以同时运算多个操作数,但不建议使用。DIV和MOD这两个运算符只有两个参数,进行除法和求余的运算时,若x2为空值则会返回NULL。
使用加减乘除和求余计算两个操作数的结果
我们首先创建一个表,然后创建两列,第一个操作数为7,第二个操作数为2,然后计算,查看结果。
(下面代码中insert语句和select语句后面会讲到)
create table demo (num1 int,num2 int);
insert into demo (num1,num2) values (7,2);
select num1,num2,num1+num2,num1-num2,num1*num2,num1/num2,num1%num2 from demo;
![运行结果](/assets/image-20221013111715952-lrd7_Ga2.png)
比较运算符
比较运算符在查询数据时常用的一种运算符,SELECT语句中经常用到比较运算符。MySQL中常用的比较运算符如下表。
符号 | 名称 | 示例 | 符号 | 名称 | 示例 |
---|---|---|---|---|---|
= | 等于 | id=5 | is not null | n/a | id is not null |
> | 大于 | id>5 | between and | n/a | id between 1 and 5 |
< | 小于 | id<5 | in | n/a | id in (3,4,5) |
>= | 大于等于 | id>=5 | not in | n/a | id not in (3,4,5) |
<= | 小于等于 | id<=5 | like | 模式匹配 | name like (‘shi%’) |
!= <> | 不等于 | id!=5 | not like | 模式匹配 | name not like (‘shi%’) |
is null | n/a | id is null | regexp | 常规表达式 | name 正则表达式 |
下面对常用的比较运算符进行详解。
在进行演示前,我们先创建如下的数据表,并且输入如图的数据。
![运行结果](/assets/image-20221013122054601-KGyOK9_2.png)
- 运算符“=”
它用来判断数字、字符串和表达式是否相等。如果相等返回1;否则返回0。如:
select * from tb_demo where id = 1;
![运行结果](/assets/image-20221013122321046-dDDzl7ZG.png)
- 运算符“<>”和“!=”
这两个不等于符号可以用来判断数字、字符串和表达式等是否不相等,如果不相等则返回1;否则返回0。如:
select * from tb_demo where id != 1;
![运行结果](/assets/image-20221013122408438-cle4XjSf.png)
- 运算符“>”
大于号可以用来判断左边的操作数是否大于右边的操作数。如:
select * from tb_demo where id > 2;
![运行结果](/assets/image-20221013122719099-9r44076l.png)
“<”、“>=”、“<=”等的用法与“>”基本相同,这里不再赘述。
- 运算符 IS NULL
IS NULL用于判断操作是否是空值,操作数为空值时结果返回1,否则返回0。如:
select * from tb_demo where username is NULL;
- 运算符 BETWEEN AND
BETWEEN AND运算符用于判断数据是否在某个取值范围内,表达式如下:
x BETWEEN x1 AND x2
若x大于x1小于x2则返回1,否则返回0。如:
select * from tb_demo where id between 1 and 3;
![运行结果](/assets/image-20221013123604236-aYQ2YSxl.png)
- 运算符IN
IN用于判断数据是否存在于某个集合中,表达式如下:
x IN (x1,x2,...,xn)
若x的值等于序列中的任意一个则返回1,否则返回0。如
select * from tb_demo where username in ('ab','abc','abcd');
![运行结果](/assets/image-20221013123933842-KteA0sV_.png)
- 运算符 LIKE
LIKE可用于匹配字符串,表达式如下:
x LIKE s
若x与s匹配则返回1,否则返回0。如:
select * from tb_demo where password like '%bcde';
![运行结果](/assets/image-20221013124408617-cFEU0qzh.png)
- 运算符REGEXP
REGEXP同样用于匹配字符串,但其使用的是正则表达式,表达式如下:
x REGEXP s
若x满足s表示的匹配方式则返回1,否则返回0。如:
select * from tb_demo where password regexp '^a';
![运行结果](/assets/image-20221013124622409-tIq8BKau.png)
逻辑运算符
逻辑运算符用来判断表达式的真假,若表达式为真则返回1,否则返回0。MySQL中支持四种逻辑运算符:与(&&或AND)、非(!或NOT)、或(||或OR)、异或(XOR)。下面分别介绍这四种运算符。
- 与运算
“&&”和AND是与运算的两种表达方式。如果所有数据不为0且不为空值NULL,结果返回1;如果存在任何一个数据为0,结果返回0;如果有一个数据为NULL且没有数据为0时返回NULL。可以有多个操作数同时进行与运算。
- 或运算
“||”或者OR表示或运算。所有数据中存在任何一个数据为非0的数字时返回1;如果数据中不包含非0的数字但包含NULL,结果返回NULL;如果数据中有结果返回0。可以有多个操作数同时进行或运算。
- 非运算
“!”或者NOT表示非运算。通过非运算,表达式会返回一个与操作数据相反的结果。若数据为非0的数字则结果返回0;若数据为0则结果返回1;若操作数是NULL则返回NULL。
- 异或运算
XOR表示异或运算,只要其中任何一个操作数为NULL则结果返回NULL;若两个操作数都为非0值则结果返回0;若两个操作数有一个不为0则结果返回1。
如:
![运行结果](/assets/image-20221013182518888-knKIt8dU.png)
位运算符
MySQL中的位运算符如下:
符号 | 作用 |
---|---|
& | 按位与。先将十进制数转换成二进制数,然后对每个位的数进行按位与运算,1和1相与得1,与0相与得0,最后再将二进制数转换为十进制数 |
| | 按位或。先将十进制数转换成二进制数,然后对每个位的数进行按位或运算,1和任何数相或都是1,0与0相或为0,最后再将二进制数转换为十进制数 |
~ | 按位取反。先将十进制数转换成二进制数,然后对每一位上的数进行取反操作,0取反为1,1取反为0,然后再将二进制数转换为十进制数 |
^ | 按位异或。先将十进制数转换为二进制数,然后对每位数都进行按位异或运算,相同的数异或之后是0,不同的数异或之后是1,然后再将二进制数转换成十进制数 |
<< | 按位左移。将左操作数的二进制数向左移动右操作数位,右边补0,最后转换为十进制数 |
>> | 按位右移。将左操作数的二进制数向右移动右操作数位,左边补0,最后转换为十进制数 |
如将4和6分别进行按位与、按位或、按位异或运算,将4进行按位取反运算。
![运行结果](/assets/image-20221013200516930-X0lb8Yns.png)
运算符优先级
运算符优先级如下表。
优先级 | 符号 |
---|---|
1 | ! |
2 | ~ |
3 | ^ |
4 | *,/,DIV,%,MOD |
5 | +,- |
6 | >>,<< |
7 | & |
8 | | |
9 | =,<=>,>,>=,<,<=,!=,<>,IN,IS,NULL.LIKE,REGEXP |
10 | BETWEEN,AND,CASE,WHEN,THEN,ELSE |
11 | NOT |
12 | &&,AND |
13 | ||,OR,XOR |
14 | := |