【转】MySQL常见的运算符及使用
转自:http://www.linuxidc.com/Linux/2016-03/129672.htm
MySQL中有4类运算符,它们是:
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位操作运算符
- 算术操作符
算术操作符是SQL中最基本的操作运算符,主要有一下几种运算符:
+(加)、 -(减)、 *(乘)、 /(除)、 %(求余或者模)
算术操作符测试案例:
创建表tmp14,定义数据类型为INT的字段num,插入值64,对num值进行算术运算:
首先创建表tmp14,输入语句如下:
CREATE TABLE tmp14 ( num INT);
向字段num插入数据64:
INSERT INTO tmp14 value(64);
接下来,对num值进行加法和减法运算:
SELECT num, num+10, num-3+5, num+5-3, num+36.5 FROM tmp14;
由计算结果可以看到,可以对num字段的值进行加法和减法的运算,而且由于’+’和’–’的优先级相同,因此先加后减,或者先减后加之后的结果是相同的。
对tmp14表中的num进行乘法、除法运算。
SELECT num, num *2, num /2, num/3, num%3 FROM tmp14;
由计算结果可以看到,对num进行除法运算时候,由于64无法被3整除,因此MySQL对num/3求商的结果保存到了小数点后面四位,结果为21.3333;64除以3的余数为1,因此取余运算num%3的结果为1。
在数学运算时,除数为0的除法是没有意义的,因此除法运算中的除数不能为0,如果被0除,则返回结果为NULL。
由计算结果可以看到,对num进行除法求商或者求余运算的结果均为NULL。
- 比较运算符
一个比较运算符的结果总是1,0或者是NULL。MySQL中的比较运算符有:
=、<=>、<> (!=)、<=、>=、>、IS NULL、IS NOT NULL、LEAST、GREATEST、BETWEEN . . . AND. . . 、ISNULL、IN、NOT IN、LIKE、REGEXP
使用‘=’进行相等判断,SQL语句如下:
SELECT 1=0, '2'=2, 2=2,'0.02'=0, 'b'='b', (1+3) = (2+2),NULL=NULL;
使用’<=>’进行相等的判断,SQL语句如下:
由结果可以看到,’<=>’在执行比较操作时和’=’的作用是相似的,唯一的区别是’<=>’可以用来对NULL进行判断,两者都为NULL时返回值为1。
不等于运算符 <>或者 !=
‘<>’或者’!=’用于判断数字、字符串、表达式不相等的判断。如果不相等,返回值为1;否则返回值为0。这两个运算符不能用于判断空值NULL。
使用’<>’和’!=’进行不相等的判断,SQL语句如下:
SELECT 'good'<>'god', 1<>2, 4!=4, 5.5!=5, (1+3)!=(2+1),NULL<>NULL;
由结果可以看到,两个不等于运算符作用相同,都可以进行数字、字符串、表达式的比较判断。
使用’<=’进行比较判断,SQL语句如下:
SELECT 'good'<='god', 1<=2, 4<=4, 5.5<=5, (1+3) <= (2+1),NULL<=NULL;
由结果可以看到,左边操作数小于或者等于右边时,返回值为1,例如:4<=4;当左边操作数大于右边时,返回值为0,例如:’good’第3个位置的’o’字符在字母表中的顺序大于’god’中的第3个位置的’d’字符,因此返回值为0;同样比较NULL值时返回NULL。
使用’<’进行比较判断,SQL语句如下:
SELECT 'good'<'god', 1<2, 4<4, 5.5<5, (1+3) < (2+1),NULL<NULL;
使用’>=’进行比较判断,SQL语句如下:
SELECT 'good'>='god', 1>=2, 4>=4, 5.5>=5, (1+3) >= (2+1),NULL>=NULL;
使用’>’进行比较判断,SQL语句如下:
SELECT 'good'>'god', 1>2, 4>4, 5.5>5, (1+3) > (2+1),NULL>NULL;
使用IS NULL、ISNULL和IS NOT NULL判断NULL值和非NULL值,SQL语句如下:
SELECT NULL IS NULL, ISNULL(NULL),ISNULL(10), 10 IS NOT NULL;
使用BETWEEN AND 进行值区间判断,输入SQL语句如下:
SELECT 4 BETWEEN 4 AND 6, 4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;
SELECT 'x' BETWEEN 'f' AND 'g', 'b' BETWEEN 'a' AND 'c';
使用LEAST运算符进行大小判断,SQL语句如下:
SELECT least(2,0), least(20.0,3.0,100.5), least('a','c','b'),least(10,NULL);
使用GREATEST运算符进行大小判断,SQL语句如下:
SELECT greatest(2,0), greatest(20.0,3.0,100.5), greatest('a','c','b'),greatest(10,NULL);
使用IN、NOT IN运算符进行判断,SQL语句如下:
SELECT 2 IN (1,3,5,'thks'), 'thks' IN (1,3,5,'thks');
存在NULL值时的IN查询,SQL语句如下:
SELECT NULL IN (1,3,5,'thks'),10 IN (1,3,NULL,'thks');
使用运算符LIKE进行字符串匹配运算,SQL语句如下:
SELECT 'stud' LIKE 'stud', 'stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't_ _ _', 's' LIKE NULL;
使用运算符REGEXP进行字符串匹配运算,SQL语句如下:
SELECT 'ssky' REGEXP '^s', 'ssky' REGEXP 'y$', 'ssky' REGEXP '.sky', 'ssky' REGEXP '[ab]';
- 逻辑运算符
逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。
逻辑运算符有:
- NOT 或者 !
- AND 或者 &&
- OR 或者 ||
- XOR(异或)
使用非运算符“NOT”和“!”进行逻辑判断,SQL语句如下:
SELECT NOT 10, NOT (1-1), NOT -5, NOT NULL, NOT 1 + 1;
SELECT !10, !(1-1), !-5, ! NULL, ! 1 + 1;
使用与运算符“AND”和“&&”进行逻辑判断,SQL语句如下:
SELECT 1 AND -1,1 AND 0,1 AND NULL, 0 AND NULL;
SELECT 1 && -1,1 && 0,1 && NULL, 0 && NULL;
使用或运算符“OR”和“||”进行逻辑判断,SQL语句如下:
SELECT 1 OR -1 OR 0, 1 OR 2,1 OR NULL, 0 OR NULL, NULL OR NULL;
SELECT 1 || -1 || 0, 1 || 2,1 || NULL, 0 || NULL, NULL || NULL;
使用异或运算符“XOR”进行逻辑判断,SQL语句如下:
SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1;
执行上面的语句,结果如下。
- 位运算符
位运算符是用来对二进制字节中的位进行测试、移位或者测试处理。位运算符有:
- 位或(|)
- 位与(&)
- 位异或(^ )
- 位左移(<<)
- 位右移(<<)
- 位取反(~)
使用位或运算符进行运算,SQL语句如下:
SELECT 10 | 15, 9 | 4 | 2;
使用位与运算符进行运算,SQL语句如下:
SELECT 10 & 15, 9 &4& 2;
使用位异或运算符进行运算,SQL语句如下:
SELECT 10 ^ 15, 1 ^0, 1 ^ 1;
使用位左移运算符进行运算,SQL语句如下:
SELECT 1<<2, 4<<2;
使用位右移运算符进行运算,SQL语句如下:
SELECT 1>>1, 16>>2;
使用位���反运算符进行运算,SQL语句如下:
SELECT 5 & ~1;
运算符的优先级
- 运算的优先级决定了不同的运算符在表达式中计算的先后顺序。
- 级别高的运算符先进行计算,如果级别相同,MySQL按表达式的顺序从左到右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级。
【转】MySQL常见的运算符及使用的更多相关文章
- mysql常见的运算符及使用
mysql中有4类运算符,它们是: 算术运算符 比较运算符 逻辑运算符 位操作运算符 算术操作符 算术操作符是SQL中最基本的操作运算符,主要有一下几种运算符: +(加). -(减). *(乘). / ...
- Mysql常见四种索引的使用
提到MySQL优化,索引优化是必不可少的.其中一种优化方式 --索引优化,添加合适的索引能够让项目的并发能力和抗压能力得到明显的提升. 我们知道项目性能的瓶颈主要是在"查(select)&q ...
- mysql 常见的几个错误问题
Mysql常见的几个错误问题及解决方法: 1.问题: mysql DNS反解:skip-name-resolve 错误日志有类似警告: 点击(此处)折叠或打开 120119 16:26:04 [War ...
- mysql常见优化,更多mysql,Redis,memcached等文章
mysql常见优化 http://www.cnblogs.com/ggjucheng/archive/2012/11/07/2758058.html 更多mysql,Redis,memcached等文 ...
- MySQL常见错误类型
MySQL常见错误类型:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010: ...
- MYSQL常见出错mysql_errno()代码解析
如题,今天遇到怎么一个问题, 在理论上代码是不会有问题的,但是还是报了如上的错误,把sql打印出來放到DB中却可以正常执行.真是郁闷,在百度里面 渡 了很久没有相关的解释,到时找到几个没有人回复的 & ...
- 启动、停止、重启 MySQL 常见的操作方法:
启动.停止.重启 MySQL 常见的操作方法: 简单罗列 一.启动方式 1.使用 service 启动:service mysqld start 2.使用 mysqld 脚本启动:/etc/inint ...
- sql点滴41—mysql常见sql语法
原文:sql点滴41-mysql常见sql语法 ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename ...
- MySQL常见建表选项以约束
一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认 ...
随机推荐
- P2819 图的m着色问题 洛谷
https://www.luogu.org/problem/show?pid=2819 题目背景 给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使 ...
- codevs 3498 小木棍
3498 小木棍 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 乔治有一些同样长的小木棍,他把这些木棍随意 ...
- TCP网络库:Acceptor、TcpServer、TcpConnection
Acceptor类:用于接收新的TCP连接,该类是内部class,供TcpServer使用,生命期由TcpServer控制 类成员: class Acceptor : boost::noncopyab ...
- 使用11g DNFS建立基于DNFS的tablespace
使用11g DNFS建立基于DNFS的tablespace 參考自: Step by Step - Configure Direct NFS Client (DNFS) on Linux (11g) ...
- Unity3D 玻璃 Shader
Shader "Custom/Glass" { // Upgrade NOTE: replaced 'SeperateSpecular' with 'SeparateSpec ...
- ajax请求锁屏功能
我们有时候在进行ajax请求的时候希望页面不允许点击,等请求结束之后才可以进行点击,那么可以写: $(".cloudos-container").ajaxStart($.block ...
- Mariadb galera 集群
部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性.) 环境准备:三台服务器 ...
- https://security.stackexchange.com/questions/68405/what-is-tmunblock-cgi-and-can-it-be-exploited-by-shellshock-linux-apache-w
hndUnblock.cgi Line #1124 : 187.38.233.45 - - [15/Jan/2018:21:36:45 +0800] "GET /hndUnblock.c ...
- Robot Framework 初学者上手资料
首先要声明一下这是从http://www.cnblogs.com/yufeihlf/p/5949984.html拷贝的. 在这里只是自己的一个笔记,方便日后添加.修改内容. 总结下Robot Fram ...
- go09---defer
package main /* defer 类似其它语言中的析构函数,在函数体执行结束后 按照调用顺序的相反顺序逐个执行,先进后出, 即使函数发生严重错误也会执行,资源清理文件关闭, 支持匿名函数的调 ...