MySQL-运算符

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL-运算符

算术运算符

+: 加法运算-: 减法运算*: 乘法运算/: 除法运算,返回商%: 求余运算,返回余数

例:创建n5表,插入数字100,查看数据表分别查看+、-、*、/、%

1. mysql> create table n5(
2.     -> num int);
3. Query OK, 0 rows affected (0.00 sec)
4. 
5. mysql> insert into n5 values(100);
6. Query OK, 1 row affected (0.00 sec)
7. 
8. mysql> select num, num+3,num-3,num*3,num/3,num%3 from n5;
9. +------+-------+-------+-------+---------+-------+
10. | num  | num+3 | num-3 | num*3 | num/3   | num%3 |
11. +------+-------+-------+-------+---------+-------+
12. |  100 |   103 |    97 |   300 | 33.3333 |     1 |
13. +------+-------+-------+-------+---------+-------+
14. 1 row in set (0.00 sec)

运算符

作用

=

等于

<=>

安全的等于

<>

不等于,也可写成!=

<=

小于等于

>=

大于等于

>

大于

IS NULL

判断一个值是否为NULL

IS NOT NULL

判断一个值是否不为NULL

LEAST

当有两个或多个参数时,返回最小值

GREATEST

当有两个或多个参数时,返回最大值

BETWEEN AND

判断一个值是否落在两个值之间

ISNULL与IS NULL

作用相同

IN

判断一个值是否是IN列表中的任意一个值

NOT IN

判断一个值是否不是IN列表中的任意一个值

LIKE

通配符匹配

REGEXP

正则表达式匹配

等于运算符 ( = )

等于运算符用来判断数字、字符串和表达式是否相等,如果相等,则返回值为 1 ,否则返回值为 0 ,如果有一个值是 NULL ,则比较结果为 NULL。

1. mysql> select 1=0,'2'=2,(1+3)=(2+2),NULL=NULL;
2. +-----+-------+-------------+-----------+
3. | 1=0 | '2'=2 | (1+3)=(2+2) | NULL=NULL |
4. +-----+-------+-------------+-----------+
5. |   0 |     1 |           1 |      NULL |
6. +-----+-------+-------------+-----------+
7. 1 row in set (0.01 sec)

安全等于运算符 ( <=> )

这个操作符和等于运算符(=)的作用一致,只不过多了一个功能,就是可以判断 NULL 值。

1. mysql> select 1<=>0,'2'<=>2,(1+3)<=>(2+2),NULL<=>NULL;
2. +-------+---------+---------------+-------------+
3. | 1<=>0 | '2'<=>2 | (1+3)<=>(2+2) | NULL<=>NULL |
4. +-------+---------+---------------+-------------+
5. |     0 |       1 |             1 |           1 |
6. +-------+---------+---------------+-------------+
7. 1 row in set (0.00 sec)

不等于运算符 ( <> 或 != )

不等于运算符用于判断数字、字符串、表达式是否不相等,如果不相等则返回 1,否则返回 0 ,但是不能判断NULL 值。

1. mysql> select 'good'<>'god',1<>2,4!=4,5.5!=5,NULL<>NULL;
2. +---------------+------+------+--------+------------+
3. | 'good'<>'god' | 1<>2 | 4!=4 | 5.5!=5 | NULL<>NULL |
4. +---------------+------+------+--------+------------+
5. |             1 |    1 |    0 |      1 |       NULL |
6. +---------------+------+------+--------+------------+
7. 1 row in set (0.00 sec)

IS NULL 、ISNULL 、IS NOT NULL

  1. IS NULL 和 ISNULL 检验一个值是否为 NULL ,如果为 NULL ,返回值为 1,否则返回值为 0。
  2. IS NOT NULL 检验一个值是否不为 NULL ,如果不为 NULL ,返回值为 1,否则返回值为 0。
1. mysql> select null is null,isnull(null),isnull(10),10 is not null;
2. +--------------+--------------+------------+----------------+
3. | null is null | isnull(null) | isnull(10) | 10 is not null |
4. +--------------+--------------+------------+----------------+
5. |            1 |            1 |          0 |              1 |
6. +--------------+--------------+------------+----------------+
7. 1 row in set (0.00 sec)

BETWEEN AND

用于判断一个值是否落在两个值之间

1. mysql> select 4 between 2 and 5,4 between 4 and 6, 12 between 9 and 10;
2. +-------------------+-------------------+---------------------+
3. | 4 between 2 and 5 | 4 between 4 and 6 | 12 between 9 and 10 |
4. +-------------------+-------------------+---------------------+
5. |                 1 |                 1 |                   0 |
6. +-------------------+-------------------+---------------------+
7. 1 row in set (0.00 sec)

LEAST 、GREATEST

  1. LEAST :当有两个或多个参数时,返回最小值,如果有一个值是 NULL ,则返回结果为 NULL
  2. GREATEST :当有两个或多个参数时,返回最大值,如果有一个值是 NULL ,则返回结果为 NULL
1. mysql> select least(2,0),least('a','c','b'),least(10,null),greatest(2,0),greatest(10,null);
2. +------------+--------------------+----------------+---------------+-------------------+
3. | least(2,0) | least('a','c','b') | least(10,null) | greatest(2,0) | greatest(10,null) |
4. +------------+--------------------+----------------+---------------+-------------------+
5. |          0 | a                  |           NULL |             2 |              NULL |
6. +------------+--------------------+----------------+---------------+-------------------+
7. 1 row in set (0.00 sec)

IN 、NOT IN

  1. IN :判断一个值是否是 IN 列表中的任意一个值
  2. NOT IN :判断一个值是否不是 IN 列表中的任意一个值
1. mysql> select 2 in (1,3,5), 2 not in (1,3,5);
2. +--------------+------------------+
3. | 2 in (1,3,5) | 2 not in (1,3,5) |
4. +--------------+------------------+
5. |            0 |                1 |
6. +--------------+------------------+
7. 1 row in set (0.00 sec)

LIKE

  1. LIKE 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0
  2. LIKE 使用两种通配符:'%' 用于匹配任何数目的字符,包括零字符 ; '_' 只能匹配一个字符
1. mysql> SELECT 'stud' LIKE 'stu_', 'stud' LIKE 's___', 'stud' LIKE '%d';
2. +--------------------+--------------------+------------------+
3. | 'stud' LIKE 'stu_' | 'stud' LIKE 's___' | 'stud' LIKE '%d' |
4. +--------------------+--------------------+------------------+
5. |                  1 |                  1 |                1 |
6. +--------------------+--------------------+------------------+
7. 1 row in set (0.00 sec)

REGEXP

  1. REGEXP 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0
  2. REGEXP 使用几种通配符:
'^' 用于匹配以什么开头的字符串'$' 用于匹配以什么结尾的字符串'.' 用于匹配任何一个单字符串'[...]' 用于匹配在方括号内的任何字符'*' 用于匹配零个或多个在它前面的字符
1. mysql> SELECT 'ssky' REGEXP '^s', 'ssky' REGEXP 'y$', 'ssky' REGEXP '.sky', 'ssky'  REGEXP '[ab]';
2. +--------------------+--------------------+----------------------+-----------------------+
3. | 'ssky' REGEXP '^s' | 'ssky' REGEXP 'y$' | 'ssky' REGEXP '.sky' | 'ssky'  REGEXP '[ab]' |
4. +--------------------+--------------------+----------------------+-----------------------+
5. |                  1 |                  1 |                    1 |                     0 |
6. +--------------------+--------------------+----------------------+-----------------------+
7. 1 row in set (0.00 sec)

逻辑运算符

运算符

作用

NOT或!

逻辑非

AND或&&

逻辑与

OR或||

逻辑或

XOR

逻辑异或

逻辑非 ( NOT 或 !)

  1. 当操作数为 0 时,所得值为 1
  2. 当操作数为非 0 时,所得值为 0
  3. 当操作数为 NULL 时,所得值为 NULL
1. mysql> SELECT NOT 10, !10, NOT (1-1), !(1-1), NOT 1+1, NOT NULL;
2. +--------+-----+-----------+--------+---------+----------+
3. | NOT 10 | !10 | NOT (1-1) | !(1-1) | NOT 1+1 | NOT NULL |
4. +--------+-----+-----------+--------+---------+----------+
5. |      0 |   0 |         1 |      1 |       0 |     NULL |
6. +--------+-----+-----------+--------+---------+----------+
7. 1 row in set (0.04 sec)

逻辑与 ( AND 或 && )

  1. 当所有操作数均为非零值、并且不为 NULL 时,所得值为 1
  2. 当一个或多个操作数为 0 时,所得值为 0
  3. 其余情况所得值为 NULL
1. mysql> SELECT 1 AND -1, 1 && 0, 0 AND NULL, 1 && NULL;
2. +----------+--------+------------+-----------+
3. | 1 AND -1 | 1 && 0 | 0 AND NULL | 1 && NULL |
4. +----------+--------+------------+-----------+
5. |        1 |      0 |          0 |      NULL |
6. +----------+--------+------------+-----------+
7. 1 row in set (0.00 sec)

逻辑或 ( OR 或 || )

  1. 当两个操作数均为非 NULL 值,且任意一个操作数为非零值时,结果为 1 ,否则为 0
  2. 当有一个操作数为 NULL ,且另一个操作数为非零值时,则结果为 1 ,否则结果为 NULL
  3. 当两个操作数均为 NULL 时,则所得结果为 NULL
1. mysql> SELECT 1 OR -1 OR 0, 1 || 2, 0 OR NULL, NULL || NULL;
2. +--------------+--------+-----------+--------------+
3. | 1 OR -1 OR 0 | 1 || 2 | 0 OR NULL | NULL || NULL |
4. +--------------+--------+-----------+--------------+
5. |            1 |      1 |      NULL |         NULL |
6. +--------------+--------+-----------+--------------+
7. 1 row in set (0.01 sec)

逻辑异或 ( XOR )

  1. a XOR b 的计算等同于 ( a AND (NOT b) ) 或 ( (NOT a) AND b )
  2. 当任意一个操作数为 NULL 时,返回值为 NULL
  3. 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回结果为 0
  4. 如果一个为 0 值,另一个为非 0 值,返回结果为 1
1. mysql> SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1;
2. +---------+---------+---------+------------+---------------+
3. | 1 XOR 1 | 0 XOR 0 | 1 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 |
4. +---------+---------+---------+------------+---------------+
5. |       0 |       0 |       1 |       NULL |             1 |
6. +---------+---------+---------+------------+---------------+
7. 1 row in set (0.02 sec)

位运算符

运算符

作用

|

位或

&

位与

^

位异或

<<

位左移

>>

位右移

~

位取反

位或运算符 ( | )

对应的二进制位有一个或两个为 1 ,则该位的运算结果为 1 ,否则为 0

1. mysql> select 10|15,9|4|2;
2. +-------+-------+
3. | 10|15 | 9|4|2 |       # 10的二进制为1010,15的二进制为1111,按位或运算之后结果为1111,即15
4. +-------+-------+       # 9的二进制为1001,4为0100,2的二进制为0010,按位或运算之后1111
5. |    15 |    15 |
6. +-------+-------+
7. 1 row in set (0.00 sec)

位与运算符 ( & )

对应的二进制位都为 1 ,则该位的运算结果为 1 ,否则为 0

1. mysql> SELECT 10&15,9&4&2;
2. +-------+-------+
3. | 10&15 | 9&4&2 |
4. +-------+-------+
5. |    10 |     0 |
6. +-------+-------+
7. 1 row in set (0.00 sec)

位异或运算符 ( ^ )

对应的二进制位不相同时,结果为 1 ,否则为 0

1. mysql> SELECT 10^15,1^0,1^1;
2. +-------+-----+-----+
3. | 10^15 | 1^0 | 1^1 |
4. +-------+-----+-----+
5. |     5 |   1 |   0 |
6. +-------+-----+-----+
7. 1 row in set (0.00 sec)

位左移运算符 ( << )

使指定的二进制位都左移指定的位数,左移指定位之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐

1. mysql> select 1<<2,4<<2;
2. +------+------+
3. | 1<<2 | 4<<2 |         # 1的二进制值为00000001,左移两位之后变成00000100,即十进制数4
4. +------+------+
5. |    4 |   16 |         # 4的二进制值为00000100,左移两位之后变成00010000,即十进制数16
6. +------+------+
7. 1 row in set (0.00 sec)

位右移运算符 ( >> )

使指定的二进制位都右移指定的位数,右移指定位之后,右边低位的数值将被移出并丢弃,左边高位空出的职位用 0 补齐

1. mysql> select 1>>1, 16>>2;
2. +------+-------+
3. | 1>>1 | 16>>2 |
4. +------+-------+
5. |    0 |     4 |
6. +------+-------+
7. 1 row in set (0.00 sec)

位取反运算符 ( ~ )

将对应的二进制数逐位反转,即 1 取反后变 0 , 0 取反后变 1

1. mysql> select 5 &~1;
2. +-------+
3. | 5 &~1 |
4. +-------+
5. |     4 |
6. +-------+
7. 1 row in set (0.00 sec)


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
关系型数据库 MySQL Java
MYSQL运算符和分页
MYSQL运算符和分页
47 0
|
5天前
|
SQL 关系型数据库 MySQL
mysql基本查询、运算符、排序和分页
mysql基本查询、运算符、排序和分页
|
8月前
|
SQL 关系型数据库 MySQL
MySql where 查询条件与运算符
MySql where 查询条件与运算符
68 0
|
5天前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
38 0
|
5天前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
25 0
|
5天前
|
存储 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-3
MySQL基础篇(运算符、排序分页、多表查询、函数)
57 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-2
MySQL基础篇(运算符、排序分页、多表查询、函数)
41 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL基础篇(运算符、排序分页、多表查询、函数)-1
MySQL基础篇(运算符、排序分页、多表查询、函数)
72 0
|
5天前
|
关系型数据库 MySQL 数据库
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
【MySQL进阶之路丨第十七篇(完结)】一文带你精通MySQL运算符
27 0
|
9月前
|
SQL 安全 关系型数据库
MySQL运算符大总结
MySQL运算符大总结