首页 > 数据库 >MySQL篇(运算符)(持续更新迭代)

MySQL篇(运算符)(持续更新迭代)

时间:2024-09-16 10:55:56浏览次数:3  
标签:返回 迭代 数为 运算符 按位 MySQL NULL SELECT

目录

一、简介

二、运算符使用

1. 算术运算符

1.1. 加法运算符

1.2. 减法运算符

1.3. 乘法与除法运算符

1.4. 求模(求余)运算符

2. 比较运算符

2.1. 等号运算符

2.2. 安全等于运算符

2.3. 不等于运算符

2.4. 空运算符

2.5. 非空运算符

2.6. 最小值运算符

2.7. 最大值运算符

2.8. BETWEEN AND运算符

2.9. IN运算符

2.10. NOT IN运算符

2.11. LIKE运算符

2.12. REGEXP运算符

3. 逻辑运算符

3.1. 逻辑非运算符

3.2. 逻辑与运算符

3.3. 逻辑或运算符

3.4. 逻辑异或运算符

4. 位运算符

4.1. 按位与运算符

4.2. 按位或运算符

4.3. 按位异或运算符

4.4. 按位取反运算符

4.5. 按位右移运算符

4.6. 按位左移运算符

三、运算符的优先级


一、简介

运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。

MySQL 支持 4 种运算符,分别是算术运算符、比较运算

符、逻辑运算符、位运算符:

  • 算术运算包括加、减、乘、除等。
  • 比较运算符包括大于、小于、等于或不等于。比较运算符用于数值的比较、字符串的匹配等方面。
  • 逻辑运算符包括与、或、非、异或等。逻辑运算符返回值为布尔型,真值(1 或 true)和假值(0 或 false)。
  • 位运算符包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算符。位运算先将数据转换为补码,然后在根据数据的补码进行操作。运算完成后,将得到的值转换为十进制数。

二、运算符使用

1. 算术运算符

算术运算符用于数学运算,它可以连接运算符前后的两个数值或表达式,

对数值或表达式进行加、减、乘、除和取模运算。

运算符

名称

作用

例子

+

加法运算符

计算两个值或表达式的和

SELECT A + B

-

减法运算符

计算两个值或表达式的差

SELECT A - B

*

乘法运算符

计算两个值或表达式的乘积

SELECT A * B

/ 或 DIV

除法运算符

计算两个值或表达式的商

SELECT A / B 或者 SELECT A DIV B

% 或 MOD

求余运算符

计算两个值或表达式的余数

SELECT A % B 或者 SELECT A MOD B

1.1. 加法运算符

SELECT 100, 100 + 50, 100 + 35.5 FROM `user`;

注意:两个整数类型值进行加法操作,结果是整数;一个整数类型的值和浮点数进行加法操作,结果是浮点数。

1.2. 减法运算符

SELECT 100, 100 - 50, 100 - 35.5 FROM `user`;

注意:两个整数类型值进行减法操作,结果是整数;一个整数类型的值和浮点数进行减法操作,结果是浮点数。

1.3. 乘法与除法运算符

SELECT 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2, 100 DIV 0 FROM `user`;

注意:一个数除以整数后,不管是否能除尽,结果为浮点数;一个数除以另一个数,除不尽时,结果为浮点数,

并保留到小数点后4位;在MySQL中,一个数除以0为NULL。

1.4. 求模(求余)运算符

SELECT 10 % 3, 12 MOD 5 FROM `user`;

2. 比较运算符

比较运算符对表达式左边的值和右边的值进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情

况则返回NULL。

运算符

名称

作用

例子

=

等于运算符

判断两个值、字符串或表达式是否相等

SELECT * FROM TABLE WHERE A=B

<=>

安全等于运算符

安全地判断两个值、字符串或表达式是否相等

SELECT * FROM TABLE WHERE A<=>B

<> 或者 !=

不等于运算符

判断两个值、字符串或表达式是否不相等

SELECT * FROM TABLE WHERE A<>B 或者 SELECT * FROM TABLE WHERE A!=B

<

小于运算符

判断前面的值、字符串或表达式是否小于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A<B

<=

小于等于运算符

判断前面的值、字符串或表达式是否小于等于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A<=B

>

大于运算符

判断前面的值、字符串或表达式是否大于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A>B

>=

大于等于运算符

判断前面的值、字符串或表达式是否大于等于后面的值、字符串或表达式

SELECT * FROM TABLE WHERE A>=B

2.1. 等号运算符

SELECT 3 = 3, 2 = '2', 3 = 4, 'a' = 'a', (4 + 6) = (2 + 8), '' = NULL , NULL = NULL; 

总结:

  • 等号运算符判断等号两边的值、字符串或表达式是否相等,如果相等则返回1,不相等则返回0。
  • 如果等号两边的值、字符串或表达式都为字符串,则会按照字符串进行比较,比较每个字符串中字符的ANSI编码是否相等。
  • 如果等号两边的值都是整数,则会按照整数来比较两个值的大小。
  • 如果等号一边是整数,另一边是字符串,则将字符串转化为数字进行比较。
  • 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

2.2. 安全等于运算符

  • 安全等于运算符与等于运算符的作用是相似的, 唯一的区别 安全等于运算符是用来对NULL进行判断。
  • 当两个操作数都为 NULL 时,其返回值为1;当一个操作数为 NULL 时,其返回值为 0。
SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (3 + 3) <=> (1 + 2), '' <=> NULL,NULL <=> NULL FROM `user`;

2.3. 不等于运算符

  • 不等于运算符用于判断两边操作数的值是否不相等,如果不相等则返回1,相等则返回0。
  • 如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

非符号类型的运算符:

运算符

名称

作用

例子

IS NULL

为空运算符

判断值、字符串或表达式是否为空

SELECT * FROM TABLE WHERE A IS NULL

IS NOT NULL

不为空运算符

判断值、字符串或表达式是否不为空

SELECT * FROM TABLE WHERE A IS NOT NULL

LEAST

最小值运算符

在多个值中返回最小值

SELECT * FROM TABLE WHERE C LEAST(A,B)

GREATEST

最大值运算符

在多个值中返回最大值

SELECT * FROM TABLE WHERE C GREATEST(A,B)

BETWEEN AND

两个数值之间的运算符

判断数值是否在两个值之间

SELECT * FROM TABLE WHERE C BETWEEN AND(A,B)

IN

属于运算符

判断数值是否在列表中的任意值

SELECT * FROM TABLE WHERE C IN (A,B)

NOT IN

不属于运算符

判断数值是否不是在列表中的任意值

SELECT * FROM TABLE WHERE C NOT IN (A,B)

LIKE

模糊匹配运算符

判断数值是否符合模糊匹配规则

SELECT * FROM TABLE WHERE C LIKE B

REGEXP

正则表达式运算符

判断数值是否符合正则表达式

SELECT * FROM TABLE WHERE C REGEXP B

RLIKE

正则表达式运算符

判断数值是否符合正则表达式

SELECT * FROM TABLE WHERE C RLIKE B

2.4. 空运算符

空运算符判断一个值是否为NULL,如果为NULL则返回1,否则返回0。

SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;

2.5. 非空运算符

非空运算符判断一个值是否不为NULL,如果不为NULL则返回1,否则返回0。

SELECT NULL IS NOT NULL; 
SELECT 'a' IS NOT NULL;
SELECT 1 IS NOT NULL ;

2.6. 最小值运算符

在有两个或多个参数的情况下,返回最小值。

SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);

  • 当参数是整数或者浮点数时,LEAST将返回其中最小的值;
  • 当参数为字符串时,返回字母表中顺序最靠前的字符;
  • 当比较值列表中有NULL时,不能判断大小,返回值为NULL。

2.7. 最大值运算符

当有两个或多个参数时,返回值为最大值。假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。

SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2);

  • 当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;
  • 当参数为字符串时,返回字母表中顺序最靠后的字符;
  • 当比较值列表中有NULL时,不能判断大小,返回值为NULL。

2.8. BETWEEN AND运算符

SELECT D FROM TABLE WHERE C BETWEEN A AND B,此时,当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。

SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c';

2.9. IN运算符

  • IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0;
  • 如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。
SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);

2.10. NOT IN运算符

NOT IN运算符用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一个值,则返回1,否则返回0。

SELECT 'a' NOT IN ('a','b','c'), 1 NOT IN (2,3);

2.11. LIKE运算符

LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回0;

如果给定的值或者匹配条件为NULL,则返回结果为NULL。

LIKE运算符通常使用如下通配符:

  • "%":匹配0个或多个字符。
  • "_":只能匹配一个字符。
SELECT NULL LIKE 'abc', 'abc' LIKE NULL;

ESCAPE:关键字的主要作用就是指定一个字符替代“\”的作用。

  • 回避特殊符号的:使用转义符。例如:将[%]转为[],然后再加上[ESCAPE‘$’]即可。
  • 如果使用\表示转义,要省略ESCAPE。如果不是\,则要加上ESCAPE。

2.12. REGEXP运算符

REGEXP运算符用来匹配字符串,满足匹配条件返回1;不满足则返回0。

若expr或匹配条件任意一个为NULL,则结果为NULL。

REGEXP运算符常用的通配符:

  • ‘^’匹配以该字符后面的字符开头的字符串。
  • ‘$’匹配以该字符前面的字符结尾的字符串。
  • ‘.’匹配任何一个单字符。
  • “[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”或“b”或“c”。为了命名字符的范围,使用一个‘-’。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
  • ‘ * ’匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的‘x’字符,“[0-9]”匹配任何数量的数字,而“”匹配任何数量的任何字符。
SELECT 'shkstart' REGEXP '^s', 'shkstart' REGEXP 't$', 'shkstart' REGEXP 'hk';

3. 逻辑运算符

逻辑运算符用来判断表达式的真假,逻辑运算符的返回结果为1、0或者NULL。

运算符

作用

例子

NOT 或 !

逻辑非

SELECT NOT A

AND 或&&

逻辑与

SELECT A AND B或者 SELECT A && B

OR 或 ||

逻辑或

SELECT A OR B或者 SELECT A || B

XOR

逻辑异或

SELECT A XOR B

3.1. 逻辑非运算符

  • 逻辑非运算符表示当给定的值为0时返回1;
  • 当给定的值为非0值时返回0;
  • 当给定的值为NULL时,返回NULL。
SELECT NOT 1, NOT 0, NOT(1+1), NOT !1, NOT NULL; 

3.2. 逻辑与运算符

  • 逻辑与运算符是当给定的所有值均为非0值,并且都不为NULL时,返回1;
  • 当给定的一个值或者多个值为0时则返回0,否则返回NULL。
SELECT 1 AND -1, 0 AND 1, 0 AND NULL, 1 AND NULL;

3.3. 逻辑或运算符

  • 逻辑或运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;
  • 当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;
  • 当两个值都为NULL时,返回NULL。
SELECT 1 OR -1, 1 OR 0, 1 OR NULL, 0 || NULL, NULL || NULL;

3.4. 逻辑异或运算符

  • 逻辑异或运算符是当给定的值中任意一个值为NULL时,则返回NULL;
  • 如果两个非NULL的值都是0或者都不等于0时,则返回0;
  • 如果一个值为0,另一个值不为0时,则返回1。
SELECT 1 XOR -1, 1 XOR 0, 0 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0;

4. 位运算符

  • 位运算符是在二进制数上进行计算的运算符。
  • 位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。

运算符

作用

例子

&

按位与

SELECT A & B

|

按位或

SELECT A | B

^

按位异或

SELECT A ^ B

~

按位取反

SELECT A ~ B

>>

按位右移

SELECT A >> B

<<

按位左移

SELECT A << B

4.1. 按位与运算符

  • 按位与运算符将给定值对应的二进制数逐位进行逻辑与运算。
  • 当给定值对应的二进制位的数值都为1时,则该位返回1,否则返回0。
SELECT 1 & 10, 20 & 30;

  • 1的二进制数为0001,10的二进制数为1010,所以1 & 10的结果为0000,对应的十进制数为0。
  • 20的二进制数为10100,30的二进制数为11110,所以20 & 30的结果为10100,对应的十进制数为20。

4.2. 按位或运算符

  • 按位或运算符将给定的值对应的二进制数逐位进行逻辑或运算。
  • 当给定值对应的二进制位的数值有一个或两个为1时,则该位返回1,否则返回0。
SELECT 1 | 10, 20 | 30;

  • 1的二进制数为0001,10的二进制数为1010,所以1 | 10的结果为1011,对应的十进制数为11。
  • 20的二进制数为10100,30的二进制数为11110,所以20 | 30的结果为11110,对应的十进制数为30。

4.3. 按位异或运算符

  • 按位异或运算符将给定的值对应的二进制数逐位进行逻辑异或运算。
  • 当给定值对应的二进制位的数值不同时,则该位返回1,否则返回0。
SELECT 1 ^ 10, 20 ^ 30; 

  • 1的二进制数为0001,10的二进制数为1010,所以1 ^ 10的结果为1011,对应的十进制数为11。
  • 20的二进制数为10100,30的二进制数为11110,所以20 ^ 30的结果为01010,对应的十进制数为10。

4.4. 按位取反运算符

按位取反运算符将给定的值的二进制数逐位进行取反操作,即将1变为0,将0变为1。

SELECT 10 & ~1;

  • 由于按位取反运算符的优先级高于按位与运算符的优先级;
  • 10 & ~1,首先,对数字1进行按位取反操作,结果除了最低位为0;
  • 其他位都为1,然后与10进行按位与操作,结果为10。

4.5. 按位右移运算符

  • 按位右移运算符将给定的值的二进制数的所有位右移指定的位数。
  • 右移指定的位数后,右边低位的数值被移出并丢弃,左边高位空出的位置用0补齐。
SELECT 1 >> 2, 4 >> 2;

1的二进制数为0000 0001,右移2位为0000 0000,对应的十进制数为0。

4的二进制数为0000 0100,右移2位为0000 0001,对应的十进制数为1。

4.6. 按位左移运算符

  • 按位左移运算符将给定的值的二进制数的所有位左移指定的位数。
  • 左移指定的位数后,左边高位的数值被移出并丢弃,右边低位空出的位置用0补齐。
SELECT 1 << 2, 4 << 2;

1的二进制数为0000 0001,左移两位为0000 0100,对应的十进制数为4。

4的二进制数为0000 0100,左移两位为0001 0000,对应的十进制数为16。

三、运算符的优先级

优先级

运算符

1

: = , =

2

|| , OR, XOR

3

&&, AND

4

NOT

5

BETWEEN, CASE, WHEN, THEN, ELSE

6

=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN

7

|

8

&

9

<< , >>

10

-, +

11

* , /, DIV, %, MOD

12

^

13

- , ~

14

!

15

()

数字编号越大优先级越高,优先级高的运算符先进行计算。

赋值运算符的优先级最低,使用“()”括起来的表达式的优先级最高。

标签:返回,迭代,数为,运算符,按位,MySQL,NULL,SELECT
From: https://blog.csdn.net/qq_51226710/article/details/142299245

相关文章

  • MySQL篇(高级字符串函数/正则表达式)(持续更新迭代)
    目录讲点一:高级字符串函数一、简介二、常见字符串函数1.CONCAT()2.SUBSTRING()3.LENGTH()4.REPLACE()5.TRIM()6.UPPER()7.LOWER()8.LEFT()9.RIGHT()10.INSTR()11.LENTH(str)讲点二:正则表达式一、简介二、语法1.字符类2.重复次数3.通配符4.......
  • mysql5.5源码主从复制搭建(以两台机器的单实例为例)
    mysql5.5源码主从复制搭建(以两台机器的单实例为例)如果对运维课程感兴趣,可以在b站上、csdn或微信视频号上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频项目1  配置mysql服务器的主从结构(开始时主从数据不一致时需要找到临界点的主从同步,主库初始......
  • MYSQL面试系列-04
    MYSQL面试系列-0417.关于redolog和binlog的刷盘机制、redolog、undolog作用、GTID是做什么的?innodb_flush_log_at_trx_commit及sync_binlog参数意义双117.1innodb_flush_log_at_trx_commit该变量定义了InnoDB在每次事务提交时,如何处理未刷入(flush)的重做日志信息......
  • MySQL锁机制揭秘:从行锁到表锁,共享锁到排他锁,悲观锁到乐观锁的全面解读
    MySQL有哪些锁1、按照锁的粒度划分行锁是最低粒度的的锁,锁住指定行的数据,加锁的开销较大,加锁较慢,可能会出现死锁的情况,锁的竞争度会较低,并发度相对较高。但是如果where条件里的字段没有加索引,则加的行锁会自动升级为表锁,因为行锁是基于索引去进行操作的,所以想要加行锁,就......
  • 一文看完MySQL 9.0新特性!
    本文总结自MySQL8.4以来,在MySQL9.0中新增、废弃、更改和删除的内容。MySQL9.0中新增或更改的功能。1MySQL9.0新特性1VECTOR类型支持MySQL9.0支持VECTOR列类型。向量是一个数据结构,它由条目列表(4字节浮点值)组成,可以表示为二进制字符串值或列表格式字符串。VECT......
  • mysql学习教程,从入门到精通,TOP 和MySQL LIMIT 子句(15)
    1、TOP和MySQLLIMIT子句内容在SQL中,不同的数据库系统对于限制查询结果的数量有不同的实现方式。TOP关键字主要用于SQLServer和Access数据库中,而LIMIT子句则主要用于MySQL、PostgreSQL(通过LIMIT/OFFSET语法)、SQLite等数据库中。下面将分别详细介绍这两个功能......
  • MySQL间隙锁,next-key锁
    间隙锁间隙锁是对索引记录之间的间隙的锁,或者是对第一个索引记录之前或最后一个索引记录之后的间隙的锁。例如,SELECTc1FROMtWHEREc1BETWEEN10and20FORUPDATE;阻止其他事务将的值插入15到列中t.c1,无论列中是否已经存在任何此类值,因为该范围内所有现有值之间的......
  • 算术运算符和关系运算符
    目录1.算术运算符自增自减2.关系运算符1.算术运算符顾名思义就是用于计算的运算符,将其整理如下:算术表达式运算符含义优先级结合方向例子()括号1自左向右5*(9-3)=30*乘号35*9=45/除号345/9=5%模除(求余)346%9=1+加号......
  • MySQL练手题--体育馆的人流量(困难)
    一、准备工作CreatetableIfNotExistsStadium(idint,visit_dateDATENULL,peopleint);TruncatetableStadium;insertintoStadium(id,visit_date,people)values('1','2017-01-01','10');insertintoStadium(id,visit_date,......
  • mysql事务
    MySQL事务是数据库管理系统(DBMS)中的一项关键功能,确保一系列数据库操作作为一个整体被执行,且具有原子性、一致性、隔离性和持久性(ACID)的特性。事务处理机制可以帮助开发者确保数据的完整性和一致性,特别是在出现错误或并发操作时。1.事务的四大特性(ACID)原子性......