MySQL的运算符及其优先级
+++++++++++++++++++++++++++++++++++++++++++
标题: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的运算符及其优先级的更多相关文章
- MySql的运算符
数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据.例如,学生表中存在一个birth字段,这个字段表示学生的出生年份.而运用My ...
- javascript中运算符的优先级
运算符优先级 JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低 ...
- java中运算符的优先级
所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最低.譬如,x = 7 + 3 * 2 得到的结果是 13 &quo ...
- C语言运算符和优先级
关于C语言运算符和优先级,经整理众多博客资料汇入自己的实战,如下: a.算术运算 C语言一共有34种运算符,包括常见的加减乘除运算. 1) 加法:+ 还可以表 ...
- C语言语法之运算符及优先级
注:该内容整理自以下链接. http://blog.csdn.net/huangblog/article/details/8271791 表:C语言运算符及优先级 优先级 运算符 名称或含义 使用形式 ...
- Java运算符的优先级(从高到低)
运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 << ...
- javascript运算符的优先级
最基木的运算符优先级就是所谓的“先乘除,后加减”.对于优先顺序处于同一层次上的运算符,按照从左到右出现的顺序计算.下面给出javascript定义的所有运算符的优先级.运算符 优先顺序成员选择.括号. ...
- [转]说说C语言运算符的“优先级”与“结合性”
补充自己的一点理解: 1.关于++i 与 i++的区别. ++i 和 i++如果是单独使用的语句,即二者后面均加上分号,或者其他单独使用的语句,没有任何区别.例如: for(i=0;i<100; ...
- 慕课网-安卓工程师初养成-3-9 Java中运算符的优先级
来源 http://www.imooc.com/code/1315 所谓优先级,就是在表达式中的运算顺序.Java 中常用的运算符的优先级如下表所示: 级别为 1 的优先级最高,级别 11 的优先级最 ...
随机推荐
- oracle账户登录数据库进行如下操作:
CREATE USER NORTHBOUND IDENTIFIED BY NORTHBOUND DEFAULT TABLESPACE "TBS_DNINMSV31" TEMPORA ...
- Go中局部全局变量的区分
这是可能也许是容易混淆滴,先上1个例子: package main import "fmt" var nickname = "大虾" func main() { ...
- [转载] spring aop 环绕通知around和其他通知的区别
前言: spring 的环绕通知和前置通知,后置通知有着很大的区别,主要有两个重要的区别: 1) 目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,而前置和后置通知 是不能决定的,他们只 ...
- 使用Canvas绘制简单的时钟控件
Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表.动画等. 没有Canvas的年代,绘图只能借助Flash插件实现,页面不得不用JavaScript和F ...
- 【20190304】JavaScript-知识点总结:Set,异或
ES6新特性:Set ES6提供了新的数据结构Set,Set对象不是数组, 可以用来保存对象或者基本类型, 所有保存的值都是唯一的, chrome浏览器>38和FF>13,以及nodeJS ...
- asp.net core 2.1 部署IIS(win10/win7)
asp.net core 2.1 部署IIS(win10/win7) 概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器 ...
- Chrome浏览器,处理input自动填充时带黄色背景色
/*Chrome浏览器打开网页,input自动赋值时,会带上屎黄色的背景色,下面是通过延长增加自动填充背景色的方式, 让用户感受不到样式的变化*/ input:-webkit-autofill, in ...
- VSCode的Python扩展下程序运行的几种方式与环境变量管理
在VSCode中编写Python程序时,由于有些地方要使用环境变量,但是发现设置的环境变量有时不起作用,花了点时间研究了一下,过程不表,直接说结论. 首先,环境变量的设置,Python扩展中有三种方式 ...
- c/c++ 拷贝控制 右值与const引用
拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收. Test t2 = ...
- chrome总是提示“请停用开发者模式运行的扩展程序”
方法1:通过组策略的扩展白名单.要下载一个组策略管理模板 1.开始 -> 运行 -> 输入gpedit.msc -> 回车确定打开计算机本地组策略编辑器(通过Win + R快捷键可以 ...