+++++++++++++++++++++++++++++++++++++++++++
标题:MySQL的常见运算符
时间:2019年2月23日
内容:MySQL的常见运算符
重点:主要讲述MySQL常见运算以及相关小实验,最后讲述运算符的优先级。
+++++++++++++++++++++++++++++++++++++++++++
1. 运算符概述
通过运用运算符从而通过更加灵活的方式使用表中的数据。MySQL的内部运算符极其丰富,主要分为四类:算数运算符、比较运算符、逻辑运算符和位移运算符。
1.1 算数运算符
算数运算符用于各类数值运算,其中包括加、减、乘、除和模五中运算。
1.2 比较运算符
比较运算符用于比较运算,其中包括大于、小于、等于、大于等于、小于等于和不等于六种运算,除此之外还包括in、between and、is null、greatest、least、like和regexp等。
1.3 逻辑运算符
逻辑运算符最终结果为TRUE或FALSE。该类运算符包括逻辑非、逻辑与、逻辑或和逻辑异或。
1.4 位运算符
位移运算符与预算操作数按照二进制位进行移位运算。其中包括位&、位或、位非(~)、位异或(^)、左移(<<)和右移(>>)六种。

2. 算数运算符
2.1 运算符的作用

2.2 运算应用举例
mysql> create table num (
-> list_id int unsigned not null ,
-> num int not null ,
-> primary key(list_id) );
mysql> insert into num values(1,11),(2,22),(3,33);
mysql> select num+10 , num+20 , num+30 from num;

3. 比较运算符
3.1 运算符的作用

3.2 运算应用举例
3.2.1 等值运算
mysql> select 1=0 , '1'=1 , 2=2 , 'b'='b' , (1+3)=(2+2) , null=null ;

3.2.2 安全等值运算
操作数均为NULL时返回值为1,一方操作数为NULL时返回值为0。
mysql> select 1<=>0 , '1'<=>1 , 2<=>2 , 'b'<=>'b' , null<=>1 , null<=>null ;

3.2.3 运算符(!=、<、>、<=和>=)
mysql> select 1!=2 , '111'>2 , 10>=5 , 20<=9 , 5<null;

3.2.4 is [not] null运算
mysql> create table num1 ( list_id int unsigned , num int );
mysql> insert into num1 values(1,1);
mysql> insert into num1 values(1,null);
mysql> insert into num1 values(null,null);
mysql> insert into num1 values(null,1);

3.2.5 between...and运算
mysql> create table num2 (id int primary key , stu_id int);
mysql> insert into num2 values(1,222);
mysql> insert into num2 values(2,333);
mysql> insert into num2 values(3,444);
mysql> insert into num2 values(4,555);
mysql> insert into num2 values(5,666);

3.2.6 LEAST运算符
语法格式为least(m1,m2...mn)。数值运算返回最小值;字符串运算,返回字母表中的顺序靠前的字母;如果存在null,则返回null。
mysql> select least(1,2,3) , least(null,4,5) , least('asd','zxc','qwe') ;

3.2.7 greatest运算符
语法格式为greatest(m1,m2...mn)。数值运算返回最大值;字符串运算,返回字母表中的顺序靠后的字母;如果存在null,则返回null。
mysql> select greatest(1,2,3) , greatest('qwe','asd','zxc') , greatest('qqq' , null , 1);

3.2.8 [not] in运算符
in运算用于判断操作数是否存在于数据列表中的其中一个值,是则返回1,否则返回0;而not in与in的作用恰恰相反。
mysql> create table num4 (id int primary key , stu_id int);
mysql> insert into num4 values(1,1111);
mysql> insert into num4 values(2,2222);
mysql> insert into num4 values(3,3333);
mysql> insert into num4 values(4,4444);
mysql> insert into num4 values(5,5555);
mysql> select * from num4 where stu_id in (1111,2222,6666);
mysql> select * from num4 where stu_id not in (1111,2222,6666);

3.2.9 like运算符
like运算符是用于匹配字符串的,语法格式为"字段 like 匹配表达式"。匹配成功返回TRUE,否则返回FALSE。
like的两种通配符:
%表示匹配任意0~n多个字符。
_表示匹配任意1个字符。

mysql> insert into list values(1,'qwe','qwe');
mysql> insert into list values(2,'asd','asd');
mysql> insert into list values(3,'zxc','zxc');
mysql> insert into list values(4,'zxcs','zxcs');
mysql> select * from list where username like 'zx_';
mysql> select * from list where username like 'zx%';

3.2.10 regexp运算符(正则表达式匹配)
语法格式为"字段 regexp 匹配表达式"。
满足条件返回值为1;否则返回值为0;如果字段或匹配条件任意一个为null,则返回结果为null。
regexp通配符:
(1) '^' 匹配以指定的字符串开头的字符串。
(2) '$' 匹配以指定的字符串结尾的字符串。
(3) '.' 匹配任意一个单个字符。
(4) '[...]' 匹配在方括号中的任意字符。([asd]、[a-z]、[0-9])
(5) '*' 匹配0或多个在其前面的字符。('x*'、'[0-9]*')

mysql> insert into list1 values(1,'qwer','asdff');
mysql> insert into list1 values(2,'xfvdb','zdnei');
mysql> insert into list1 values(3,'kjegv','afwvub');
mysql> insert into list1 values(4,'mmmmmm','ppppp');
mysql> select * from list1 where username regexp '^k[abcdefj]';
mysql> select * from list1 where username regexp '.m*m$';

4. 逻辑运算符
4.1 逻辑运算符的作用
逻辑运算符求职所得结果均为TRUE、FALSE或NULL。在MySQL中体现为1、0或null。

4.2 逻辑运算符详解
4.2.1 NOT 或 !
操作数为null:取反后返回值为null;
操作数为非null:0的返回值为1,1的返回值为0。

4.2.2 AND 或 &&
操作数存在null:
操作数均为null时,返回值为null;
操作数存在其中一个为null时,与1运算结果为null,与0运算结果为0。
操作数均为非null:1与1运算为真,其他均为假。

4.2.3 OR 或 ||
操作数存在null:
操作数均为null时,返回值为null;
操作数其中一个为null时,与1运算时值为1,与0运算时值为0;
操作数均为非null:1与1运算时值为1,其他情况均为假。

4.2.4 XOR(异或)
操作数存在null时:运算结果均为null;
操作数为非null时:操作数相同时返回值为0,操作数相异时返回值为1。

5. 位运算符
5.1 位运算符的作用

5.2 位运算符详解
5.2.1 位或运算符

5.2.2 位与运算符

5.2.3 位异或运算符

5.2.4 左(右)移位运算符

6. 运算符的优先级(重点掌握)
运算符由上到下优先级依次由低到高。

MySQL的运算符及其优先级的更多相关文章

  1. MySql的运算符

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

  2. javascript中运算符的优先级

    运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低 ...

  3. java中运算符的优先级

    所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2  得到的结果是 13 &quo ...

  4. C语言运算符和优先级

    关于C语言运算符和优先级,经整理众多博客资料汇入自己的实战,如下:        a.算术运算        C语言一共有34种运算符,包括常见的加减乘除运算.        1) 加法:+ 还可以表 ...

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

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

  6. Java运算符的优先级(从高到低)

    运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 << ...

  7. javascript运算符的优先级

    最基木的运算符优先级就是所谓的“先乘除,后加减”.对于优先顺序处于同一层次上的运算符,按照从左到右出现的顺序计算.下面给出javascript定义的所有运算符的优先级.运算符 优先顺序成员选择.括号. ...

  8. [转]说说C语言运算符的“优先级”与“结合性”

    补充自己的一点理解: 1.关于++i 与 i++的区别. ++i 和 i++如果是单独使用的语句,即二者后面均加上分号,或者其他单独使用的语句,没有任何区别.例如: for(i=0;i<100; ...

  9. 慕课网-安卓工程师初养成-3-9 Java中运算符的优先级

    来源 http://www.imooc.com/code/1315 所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最 ...

随机推荐

  1. [CSS] css的background及多背景设置

    问题 首先是一个 div 块里需要一张背景,带文本和图案的那种,但是身为容器的 div 是能够随数据的改变而变化长度的,所以一张静态图片不免的会有拉伸和挤扁的状态,尤其是有图案和文本的情况下最为明显 ...

  2. 第59章 IdentityServer交互服务 - Identity Server 4 中文文档(v1.0.0)

    IIdentityServerInteractionService接口旨在提供用户界面用于与IdentityServer通信的服务,主要与用户交互有关.它可以从依赖注入系统获得,通常作为构造函数参数注 ...

  3. Java开发笔记(六十一)Lambda表达式

    前面介绍了匿名内部类的简单用法,通过在sort方法中运用匿名内部类,不但能够简化代码数量,还能保持业务代码的连续性.只是匿名内部类的结构仍显啰嗦,虽然它省去了内部类的名称,但是花括号里面的方法定义代码 ...

  4. Java学习笔记之——TreeMap

    TreeMap: 特点:存储时,按照键排序 底层使用一个红黑树,特殊的而二叉树 排序跟comparable,comparator有关系 如果需要在添加时进行排序,使用hashMap即可 构造方法: T ...

  5. Mybatis框架基础支持层——反射工具箱之MetaClass(7)

    简介:MetaClass是Mybatis对类级别的元信息的封装和处理,通过与属性工具类的结合, 实现了对复杂表达式的解析,实现了获取指定描述信息的功能 public class MetaClass { ...

  6. Python爬取地图瓦片

    由于要在内网开发地图项目,不能访问在线的地图服务了,就想把地图瓦片下载下来,网上找了一些下载器都是需要注册及收费的,否则下载到的图都是打水印的,如下: 因为地图瓦片就是按照层级.行.列规则组织的一张张 ...

  7. XSS 漏洞介绍

    概念: XSS 攻击:跨站脚本攻击 (Cross Site Scripting),为不和层叠样式表 (Cascading Style Sheets, CSS) 的缩写混淆.故将跨站脚本攻击缩写为 XS ...

  8. HTTP长连接--Keep-Alive

    一.HTTP/1.0 HTTP1.0版本的Keep-alive并不像HTTP1.1那样是默认发送的,所以要想连接得到保持,必须手动配置发送connection:keep-alive字段.若想断开kee ...

  9. 自动给 Asp.Net Core WebApi 增加 ApiVersionNeutral

    自动给 Asp.Net Core WebApi 增加 ApiVersionNeutral Intro 新增加一个 Controller 的时候,经常忘记在 Controller 上增加 ApiVers ...

  10. 模拟ES6中的Promise实现,让原理一目了然

    简介 Promise 对象用于延迟(deferred) 计算和异步(asynchronous )计算.一个Promise对象代表着一个还未完成,但预期将来会完成的操作.Promise 对象是一个返回值 ...