MySQL(14)-----运算符和优先级
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)-----运算符和优先级相关推荐
- mysql以下运算符的优先级顺序正确的是_MySQL 运算符
原文:http://www.jb51.net/article/25657.htm 我一贯秉承着一点:通过自己的双手真实的操作一遍之后的信息是最可靠的,所以在您参考这个小文儿的时候请不要只是" ...
- 15、MySQL运算符的优先级
运算符的优先级决定了不同的运算符在表达式中计算的先后顺序,下表列出了 MySQL 中的各类运算符及其优先级. 优先级由低到高排列 运算符 1 =(赋值运算).:= 2 II.OR 3 XOR 4 &a ...
- 14、MySQL位运算符
所谓位运算,就是按照内存中的比特位(Bit)进行操作,这是计算机能够支持的最小单位的运算.程序中所有的数据在内存中都是以二进制形式存储的,位运算就是对这些二进制数据进行操作. 位运算一般用于操作整数, ...
- MySQL常用运算符详解
MySQL 数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过 MySQL 运算符进行运算,就可以获取到表结构以外的另一种数据. 例如,学生表中存在一个 birth 字段,这个字段表示学生 ...
- mysql any运算符_MySQL 运算符
MySQL 运算符 本章节我们主要介绍 MySQL 的运算符及运算符的优先级. MySQL 主要有以下几种运算符: 算术运算符 比较运算符 逻辑运算符 位运算符 算术运算符 MySQL 支持的算术运算 ...
- MySQL 常用运算符
MySQL 数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过 MySQL 运算符进行运算,就可以获取到表结构以外的另一种数据. 例如,学生表中存在一个 birth 字段,这个字段表示学生 ...
- VC++运算符与优先级
C++的优先级 优先级 操作符 结合性 01: :: 左 02: . -> [] () 左 03: ++ -- ~ ! - + & * ...
- C语言语法之运算符及优先级
注:该内容整理自以下链接. http://blog.csdn.net/huangblog/article/details/8271791 表:C语言运算符及优先级 优先级 运算符 名称或含义 使用形式 ...
- (4)javascript的运算符以及运算符的优先级
运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为算术运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符等. ...
- c++自底向上算符优先分析_c语言运算符的优先级
点击上方关注我们获取更多 运算符的优先级&结合性 当c语言出现表达式时,表达式的运算结果就会和运算符的优先级有关,优先级高的先运算.优先级相同时,根据运算符的结合性,左结合的运算符先算左边,右 ...
最新文章
- 一个缓存穿透引发的血案
- 每次新版本build时,让软件的版本号自增
- iPhone 6c配置和5s相近 4寸屏基本确定
- zendopcache代替APC效果不错
- 【控制】《最优控制理论与系统》-胡寿松老师-第1章-导论
- vue vant Area组件使用详解
- html flex 表单样式,Flexbox 布局的最简单表单的实现
- 小知识点(复制过来的)
- java识别手写文字_Java 实现OCR 识别图像文字(手写中文)----tess4j
- 1196踩方格—递推方法!
- 王者荣耀服务器未响应 小米,10月23日小米手机更新王者荣耀失败 小米更新不了新赛季怎么办...
- Kaggle Top1% 是如何炼成的!
- ruby on rais3 入门——环境搭建详细步骤(windows下)
- win10电脑如何下载安装.net Framework 3.5 sp1多台电脑亲测有效
- python的cfg是什么模块_使用安装模块设置.py以及设置.cfg
- 计算机大赛指导老师自评怎么写,计算机*学生的简单自我评价
- 美联致美-脂嵌魔鬼身材,脂肪搬家搬出好身材
- 学习古月课程遇到的问题以及实践过程
- 汽车维保美容一站式服务
- 直播软件源码开发,实现小程序直播的功能
热门文章
- dockerfile安装jenkins 并配置构建工具(node、npm、maven、git)
- android camera textureview,Android SDK – camera2 – 在TextureView上绘制矩...
- 分布式事务各方案对比分析
- SpringBoot常见面试题总结一
- dns学习笔记03-配置master区域
- 菜鸟学Linux 第021篇笔记 特殊权限SUID、FACL、Linux 终端
- javascript基础(对象继承与引用)
- Eclipse is running in a JRE, but a JDK is requi...
- 如何解决NullPointerException in android.view.GLES20RecordingCanvas
- fastmock模拟常见数据结构