MYSQL 运算符总结
来源:脚本之家
时间:2023-02-24 21:32:35 489浏览 收藏
怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《MYSQL 运算符总结》,涉及到MYSQL运算符,有需要的可以收藏一下
1、算数运算符
MySQL支持的算术运算符:
| 运算符 | 作用 |
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| /,DIV | 除法,返回商 |
| %,MOD | 除法,返回余数 |
例1: +,-,*,/,%,
mysql> select 0.1+0.333,0.1-0.333,0.1*0.333,1/2,1%2; +-----------+-----------+-----------+--------+------+ | 0.1+0.333 | 0.1-0.333 | 0.1*0.333 | 1/2 | 1%2 | +-----------+-----------+-----------+--------+------+ | 0.433 | -0.233 | 0.0333 | 0.5000 | 1 | +-----------+-----------+-----------+--------+------+ 1 row in set (0.05 sec)
例2:除法运算中,如果除数为0将是返回NULL
mysql> select 1/0; +------+ | 1/0 | +------+ | NULL | +------+ 1 row in set (0.00 sec)
例3:模运算的另外一种形式MOD(a,b) 和a%b相同
mysql> select 1%2,mod(1,2); +------+----------+ | 1%2 | mod(1,2) | +------+----------+ | 1 | 1 | +------+----------+ 1 row in set (0.00 sec)
2、比较运算符
MySQL支持的比较运算符:
| 运算符 | 作用 |
| = | 等于 |
| 或!= | 不等于 |
| NULL 安全的等于(NULL-safe) | |
| 小于 | |
| 小于等于 | |
| > | 大于 |
| >= | 大于等于 |
| BETWEEN | 存在与指定范围 |
| IN | 存在于指定集合 |
| IS NULL | 为 NULL |
| IS NOT NULL | 不为 NULL |
| LIKE | 通配符匹配 |
| REGEXP 或 RLIKE | 正则表达式匹配 |
例1:“” 和 “=” 相反,如果两则操作不等 返回结果为1,否则返回结果0,“NULL”不能用于“”比较
mysql> select 10,11,nullnull; +------+------+------------+ | 10 | 11 | nullnull | +------+------+------------+ | 1 | 0 | NULL | +------+------+------------+ 1 row in set (0.00 sec)
例2: “”安全等于运算符和“=”操作相同返回1,区别在于“”在值为null的时候也可以做比较
mysql> select 11,10,nullnull; +-------+-------+-------------+ | 11 | 10 | nullnull | +-------+-------+-------------+ | 1 | 0 | 1 | +-------+-------+-------------+ 1 row in set (0.02 sec)
例3: “”当左侧小于右侧时,返回1
mysql> select 'a' <p><strong>例4:</strong><code>between</code>,格式为“<code>a BETWEEN min AND max</code>”,表示a大于等于<code>min</code>并且小于等于<code>max</code>的时候,返回1,否则返回0</p> <pre class="brush:sql;"> mysql> select 10 between 10 and 20,9 between 10 and 20; +----------------------+---------------------+ | 10 between 10 and 20 | 9 between 10 and 20 | +----------------------+---------------------+ | 1 | 0 | +----------------------+---------------------+ 1 row in set (0.01 sec)
例5:regexp,格式为“str REGEXP str_pat”,表示str字符串中含有str_pat相匹配的字符串时,则返回1,否则返回0
mysql> select 'abcdeef' regexp 'ab','abcdef' regexp 'g','abcedf' regexp 'df'; +-----------------------+---------------------+----------------------+ | 'abcdeef' regexp 'ab' | 'abcdef' regexp 'g' | 'abcedf' regexp 'df' | +-----------------------+---------------------+----------------------+ | 1 | 0 | 1 | +-----------------------+---------------------+----------------------+ 1 row in set (0.01 sec)
其他的使用简单,直接上语法,示例就不写了
in,使用格式为“a IN (value1,value2,…)”IS NULL,使用格式为“a IS NULL”IS NOT NULL,使用格式为“a IS NOT NULL”LIKE,使用格式为“a LIKE %123%”
3、逻辑运算符
MySQL中的逻辑运算符:
| 运算符 | 作用 |
| NOT 或! | 逻辑非 |
| AND 或&& | 逻辑与 |
| OR 或 || | 逻辑或 |
| XOR | 逻辑异或 |
例1: ““NOT”或“!”表示逻辑非。返回和操作数相反的结果。当操作为0,则返回1;当操作为1,则返回0,但是NOT NLLL返回null
mysql> select not 0,!0,not 1,not null; +-------+----+-------+----------+ | not 0 | !0 | not 1 | not null | +-------+----+-------+----------+ | 1 | 1 | 0 | NULL | +-------+----+-------+----------+ 1 row in set (0.00 sec)
例2: “AND”和“&&”表示逻辑与运算,当操作数均为非零值,返回结果1,否则返回0,当操作数中有任意一个为NULL,其中一个值如果为0,返回0;其他值都是>0的数值,另外有NULL,则返回NULL
mysql> select (1 and 1),(0 and 1),(3 and 1),(0 and null),(1 and null); +-----------+-----------+-----------+--------------+--------------+ | (1 and 1) | (0 and 1) | (3 and 1) | (0 and null) | (1 and null) | +-----------+-----------+-----------+--------------+--------------+ | 1 | 0 | 1 | 0 | NULL | +-----------+-----------+-----------+--------------+--------------+ 1 row in set (0.00 sec) mysql> select 1 and NULL and 0; +------------------+ | 1 and NULL and 0 | +------------------+ | 0 | +------------------+ 1 row in set (0.00 sec) mysql> select 1 and NULL and 3; +------------------+ | 1 and NULL and 3 | +------------------+ | NULL | +------------------+ 1 row in set (0.00 sec)
例3: “OR”或“||”表示逻辑或运算。当操作数均不为NULL时,任意一方非零,则结果为1,否则为0;当有一个操作数为NULL,如果另一个操作数非零,则结果为1,否则结果为NULL
mysql> select (1 or 0),(0 or 0),(1 or NULL),(0 or NULL),(NULL or NULL); +----------+----------+-------------+-------------+----------------+ | (1 or 0) | (0 or 0) | (1 or NULL) | (0 or NULL) | (NULL or NULL) | +----------+----------+-------------+-------------+----------------+ | 1 | 0 | 1 | NULL | NULL | +----------+----------+-------------+-------------+----------------+ 1 row in set (0.00 sec)
例4:XOR表示逻辑异或。当任意一个操作数为 NULL 时,返回值为 NULL。对于非 NULL 的操作数,如果两个的逻辑真假值相异,则返回结果 1;否则返回 0。
mysql> select (0 xor 0),(1 xor 0),(1 xor 1),(1 xor null),(0 xor null),(null xor null); +-----------+-----------+-----------+--------------+--------------+-----------------+ | (0 xor 0) | (1 xor 0) | (1 xor 1) | (1 xor null) | (0 xor null) | (null xor null) | +-----------+-----------+-----------+--------------+--------------+-----------------+ | 0 | 1 | 0 | NULL | NULL | NULL | +-----------+-----------+-----------+--------------+--------------+-----------------+ 1 row in set (0.00 sec)
4、位运算符
MySQL支持的位运算符:
| 运算符 | 作用 |
| & | 位与(位 AND) |
| | | 位或 (位 OR ) |
| ^ | 位异或(位 XOR) |
| ~ | 位取反 |
| >> | 位右移 |
| 位左移 |
例1: “位与”对多个操作数的二进制位作逻辑与操作。2&3,2的二进制数为10,3的二进制数为11,将此做与操作,结果还是10,转换为十进制结果就是2
mysql> select 2&3; +-----+ | 2&3 | +-----+ | 2 | +-----+ 1 row in set (0.01 sec)
例2: “位或”对多个操作数的二进制位作逻辑或操作。2&3,2的二进制数为10,3的二进制数为11,将此做与操作,结果就变成11,转换为十进制结果就是3
mysql> select 2|3; +-----+ | 2|3 | +-----+ | 3 | +-----+ 1 row in set (0.00 sec)
例3: “位异或”对多个操作数的二进制位作异或操作。2^3 ,2的二进制数为10,3的二进制数为11,10^11结果就是01,转换为十进制结果就是1
mysql> select 2^3; +-----+ | 2^3 | +-----+ | 1 | +-----+ 1 row in set (0.01 sec)
例4: “位取反”对操作数的二进制位做NOT操作,这里的操作数只能是一位,解释:在mysql中常亮数字默认会以8字节表示,8个字节就是64位,而常量1的二进制 就是前面63个0,1个1,位去反后就是63个1,1个0,转换为二进制后就是 18446744073709551614,
mysql> select ~1,~18446744073709551614
-> ;
+----------------------+-----------------------+
| ~1 | ~18446744073709551614 |
+----------------------+-----------------------+
| 18446744073709551614 | 1 |
+----------------------+-----------------------+
1 row in set (0.01 sec)
mysql> select bin(18446744073709551614);
+------------------------------------------------------------------+
| bin(18446744073709551614) |
+------------------------------------------------------------------+
| 1111111111111111111111111111111111111111111111111111111111111110 |
+------------------------------------------------------------------+
1 row in set (0.03 sec)
例5: “位右移”对左操作数向右移动操作数指定的位数。例如100>>3,对100的二进制数0001100100右移动3位,0000001100,转换为二进制数就是12:
mysql> select 100>>3; +--------+ | 100>>3 | +--------+ | 12 | +--------+ 1 row in set (0.00 sec)
例6: “位左移”对左操作数向左移动操作数指定的位数。例如100
mysql> select 100 <h2>5、运算符的优先级</h2> <p><strong>MySQL中的运算符优先级:</strong></p>
| 优先级顺序 | 运算符 |
| 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运算符的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
117 收藏
-
411 收藏
-
420 收藏
-
264 收藏
-
266 收藏
-
392 收藏
-
333 收藏
-
234 收藏
-
448 收藏
-
416 收藏
-
225 收藏
-
145 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习