MySQL支持多种类型的运算符,这些运算符可以用来连接表达式的项。这些类型主要包括算术运算符、比较运算符、逻辑运算符、位运算符。本节将通过实例对MySQL支持的这几种运算符进行详细的介绍。

1.算术运算符

MySQL支持的算术运算符:加、减、乘、除和模运算。它们是最常使用、最简单的一类运算符。下表列出了这些运算符极其作用。

运算符 作用
+ 加法
- 减法
* 乘法
/,DIV 除法,返回商
%,MOD 除法,返回余数

简单描述一下这几种运算符的使用方法:

“+”:用于获取一个或多个值得和。

“-”:用于从一个值中减去另一个值。

“*”:使用数字相乘,得到两个或多个值的乘积。

“/”:用一个值除以另一个值得到商。

“%”:用一个值除以另一个值得到余数。

下面通过实例学习一下各种运算符的使用:

【这里不一一列实例了,直接给出全部的运算符使用方式,SQL语句也可根据各运算符进行拆分书写】

算术运算符的使用

【注意】在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL

示例:

对于模运算,可使用MOD(a,b)函数与a%b效果一样:

2.比较运算符

熟悉了最简单的算术运算符之后,我们再来看一下比较运算符。当使用select语句进行查询时,MySQL允许用户对表达式左边操作数和右边操作数进行比较,比较结果为真,则返回1,为假则返回0,比较结果不确定则返回NULL。

MySQL支持的比较运算符:

运算符 作 用
= 等于
<>或!= 不等于
<=> NULL安全的等于(NULL-safe)
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 存在于指定范围
IN 存在于指定集合
IS NULL 为NULL
IS NOT NULL 不为NULL
LIKE 通配符匹配
REGEXP或RLIKE 正则表达式匹配

比较运算符可以用于比较数字、字符串和表达式。数字作为浮点数比较,字符串以不区分大小写的方式进行比较。下面通过实例学习一下各种运算符的使用:
▲“=”运算符,用于比较运算符两侧的操作数是否相等,如果两侧操作数相等,则返回值为1,否则为0。

【注意】NULL不能用于“=”比较

▲“<>”运算符,和“=”相反,如果两侧操作数不等,则值为1,否则为0。

【注意】NULL不能用于“<>”比较。

▲“<=>”运算符,和“=”类似,在操作数相等时值为1,不同之处在于即使操作的值为NULL也可以正确地比较。

▲“<”运算符,当左侧操作数小于右侧操作数时,其返回值为1,否则为0。

mysql>select 'a'<'b','a'<'a','a'<'c',1<2;

▲“<=”运算符,当左侧操作数小于等于右侧操作数时,其返回值为1,否则为0。

▲“>”运算符、“>=”运算符同理。

【图略】

▲“BETWEEN”运算符的格式为“a BETWEEN min AND max”,当a大于等于min并且小于等于max,则返回值为1,否则返回0;当操作数a、min、max类型相同时,此表达式等价于(a>=min and a<=max),当操作数类型不同时,比较时会遵循类型转换原则进行转换后,再进行比较运算。

mysql>select 10 between 10 and 20,9 between 10 and 20;

▲“IN“运算符的使用格式:”a IN (value1,value2,....)“,当a的值存在于表中时,则整个表达式返回值为1,否则返回0。

▲“IS NULL”运算符使用格式为“a IS NULL”,a的值为NULL,则返回1,否则返回0;

▲“IS NOT NULL”运算符的使用格式为“a IS NOT NULL”,和“IS NULL”相反。a的值为不为NULL,则返回值1,否则返回0。

▲“LIKE”运算符使用格式“a LIKE %123%”,当a中含有字符串“%123%”时,则返回值为1,否则返回0。

▲“REGEXP”运算符的使用格式为“str REGEXP str_pat”,当str字符串中含有str_pat匹配的字符串是,则返回值为1,否则返回为0。

3.逻辑运算符

逻辑运算符,及布尔运算符,确认表达式的真和假。

具体分类如下:

运算符 作用
NOT 或 ! 逻辑非
AND 或 && 逻辑与
OR 或 || 逻辑或
XOR 逻辑与或

▲“NOT”或“!”,返回和操作数相反的结果:当操作数为0(假),则返回值为1,否则返回值为0.

【注】NOT NULL的返回值为NULL。

▲“AND”或“&&”,逻辑与运算。当所有的操作数均为非零值并且不为null时,计算所得结果为1,当一个或多个操作数为0时,所得结果为0,操作数中有任何一个为null则返回值为null。

▲“OR”或“||”,逻辑或运算。当两个操作数均为非null值时,如有任意一个操作数为非零值,则结果为1,否则结果为0。当有一个操作数为null时,如另一个操作数为非零值,则结果为1,否则结果为null。假如两个操作数均为null,则所得结果为null。

▲“XOR“,逻辑异或。当任意一个操作数为null时,返回值为null。对于非null的操作数,如果两个的逻辑真假值相异,则返回结果1,否则返回0.

4.位运算符

位运算符是将给定的数据转化为二进制后,对各个数据每一位进行制定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果。MySQL支持6中位运算符,如下表所示。

运算符 作用
& 位与(位AND)
| 位或(位OR)
/\ 位异或(位XOR)
~ 位取反
>> 位右移
<< 位左移

可以发现,位运算符中的位与&和位或|和前面介绍的逻辑与和逻辑或非常类型。其他操作符和逻辑操作有所不同。

▲“&,位与“,对多个操作数的二进制位做逻辑与操作。如2&3,2对应的二进制数是10,3对应11,所有10&11的结果是10,十进制数字还是2,来看实际结果:

▲“^,位异或“

▲“~,位取反“对二进制位数做NOT操作,对1进行取反,实际结果:

结果令人疑惑,1的位取反怎么会是这么大的数字?在MySQL中,常量数字默认是以8个字节来表示,8个字节就是64位,常量1的二进制表示为63个0,加一个1,位取反后就是63个“1”加一个“0”,转为二进制数就如:

5.运算符的优先级

前面介绍了MySQL支持的各种运算符的使用方法。在实际的应用中,很可能将这些运算符进行混合运算,那么应该先进行哪些运算符的操作呢。

优先级顺序 运算符
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

实际上,很少将这些优先级熟练的记忆,很多情况下我们都是使用"()"将需要优先的操作括起来,这样既起到了优先的作用,又使得其他用户看起来更容易理解。


愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

MySQL(14)-----运算符和优先级相关推荐

  1. mysql以下运算符的优先级顺序正确的是_MySQL 运算符

    原文:http://www.jb51.net/article/25657.htm 我一贯秉承着一点:通过自己的双手真实的操作一遍之后的信息是最可靠的,所以在您参考这个小文儿的时候请不要只是" ...

  2. 15、MySQL运算符的优先级

    运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,下表列出了 MySQL 中的各类运算符及其优先级. 优先级由低到高排列 运算符 1 =(赋值运算).:= 2 II.OR 3 XOR 4 &a ...

  3. 14、MySQL位运算符

    所谓位运算,就是按照内存中的比特位(Bit)进行操作,这是计算机能够支持的最小单位的运算.程序中所有的数据在内存中都是以二进制形式存储的,位运算就是对这些二进制数据进行操作. 位运算一般用于操作整数, ...

  4. MySQL常用运算符详解

    MySQL 数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过 MySQL 运算符进行运算,就可以获取到表结构以外的另一种数据. 例如,学生表中存在一个 birth 字段,这个字段表示学生 ...

  5. mysql any运算符_MySQL 运算符

    MySQL 运算符 本章节我们主要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算 ...

  6. MySQL 常用运算符

    MySQL 数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过 MySQL 运算符进行运算,就可以获取到表结构以外的另一种数据. 例如,学生表中存在一个 birth 字段,这个字段表示学生 ...

  7. VC++运算符与优先级

    C++的优先级 优先级    操作符        结合性 01: ::            左 02: . -> [] ()     左 03: ++ -- ~ ! - + & * ...

  8. C语言语法之运算符及优先级

    注:该内容整理自以下链接. http://blog.csdn.net/huangblog/article/details/8271791 表:C语言运算符及优先级 优先级 运算符 名称或含义 使用形式 ...

  9. (4)javascript的运算符以及运算符的优先级

    运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符等. ...

  10. c++自底向上算符优先分析_c语言运算符的优先级

    点击上方关注我们获取更多 运算符的优先级&结合性 当c语言出现表达式时,表达式的运算结果就会和运算符的优先级有关,优先级高的先运算.优先级相同时,根据运算符的结合性,左结合的运算符先算左边,右 ...

最新文章

  1. 一个缓存穿透引发的血案
  2. 每次新版本build时,让软件的版本号自增
  3. iPhone 6c配置和5s相近 4寸屏基本确定
  4. zendopcache代替APC效果不错
  5. 【控制】《最优控制理论与系统》-胡寿松老师-第1章-导论
  6. vue vant Area组件使用详解
  7. html flex 表单样式,Flexbox 布局的最简单表单的实现
  8. 小知识点(复制过来的)
  9. java识别手写文字_Java 实现OCR 识别图像文字(手写中文)----tess4j
  10. 1196踩方格—递推方法!
  11. 王者荣耀服务器未响应 小米,10月23日小米手机更新王者荣耀失败 小米更新不了新赛季怎么办...
  12. Kaggle Top1% 是如何炼成的!
  13. ruby on rais3 入门——环境搭建详细步骤(windows下)
  14. win10电脑如何下载安装.net Framework 3.5 sp1多台电脑亲测有效
  15. python的cfg是什么模块_使用安装模块设置.py以及设置.cfg
  16. 计算机大赛指导老师自评怎么写,计算机*学生的简单自我评价
  17. 美联致美-脂嵌魔鬼身材,脂肪搬家搬出好身材
  18. 学习古月课程遇到的问题以及实践过程
  19. 汽车维保美容一站式服务
  20. 直播软件源码开发,实现小程序直播的功能

热门文章

  1. dockerfile安装jenkins 并配置构建工具(node、npm、maven、git)
  2. android camera textureview,Android SDK – camera2 – 在TextureView上绘制矩...
  3. 分布式事务各方案对比分析
  4. SpringBoot常见面试题总结一
  5. dns学习笔记03-配置master区域
  6. 菜鸟学Linux 第021篇笔记 特殊权限SUID、FACL、Linux 终端
  7. javascript基础(对象继承与引用)
  8. Eclipse is running in a JRE, but a JDK is requi...
  9. 如何解决NullPointerException in android.view.GLES20RecordingCanvas
  10. fastmock模拟常见数据结构