MySQL(六)之MySQL常用操作符

前言

在前面的MySQL学习中,我们学习了MySQL的安装,管理以及配置,还有是它的DDL。今天给大家分享一下,MySQL的操作符。

千里之行始于足下,做什么事情都要脚踏实地的去做才能做好它。fighting!

一、MySQL操作符

  运算符连接表达式中各个操作数,其作用是用来指明对操作数所进行的运算。常见的运算有数学计算、比较运算、位运算以及逻辑运算。

  运用运算符可以更加灵活地使用表中的数据,常见的运算符类型有:算术运算符,比较运算符,逻辑运算符,位运算符等。

二、算术运算符

    用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求于(或称模运算,%)

三、比较运算符

3.1、概述

    用于比较运算。包括大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)、以及IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP等

    一个比较运算符的结果总是1、0或者是NULL,比较运算符经常在SELECT的查询条件字句中使用,用来查询满足指定条件的记录。

3.2、实例

    1)等号”=”用来判断数字、字符串和表达式是否相等。如果相等,返回值为1,否则返回值为0。

select 1=0,'2'=2,2=2,NULL=NULL;  返回值=0,1,1,null

    2)安全等于号。这个操作符合=操作符执行相同的比较操作,不过<=>可以用来判断NULL值,在两个操作数均为NULL时,其返回值为1而不为NULL,而当一个操作数为NULL时,其返回值为0而不为NULL。

select 1<=>0,'2'<=>2,NULL<=>NULL;   返回值=0,1,1

    3)‘<>’或者’!=’用于判断数字、字符串、表达式不相等的判断。如果不相等,返回值为1;否则返回值为0。这两个运算符不能用于判断空值NULL。

select 'good'<>'good',1<>2,4!=5,5.5!=5,(1+3)!=(2+1),NULL<>NULL;  返回值=0,1,1,1,0,null

    4)IS NULL和ISNULL检验一个值是否为NULL,如果为NULL,返回值为1。否则返回值为0;IS NOT NULL检验一个值是否为非NULL,如果非NULL,返回值为1;否则返回值为0。

select NULL IS NULL,ISNULL(NULL),ISNULL(10),10 IS NOT NULL;  返回值=1,1,0,1

    5)BETWEEN AND运算符。语法格式为:expr BETWEEN min AND max。假如expr大于或等于min且小于或等于max,则BETWEEN的返回值为1,否则返回值为0。

select 4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;   返回值=1,0

    6)LEAST运算符。语法格式为:LEAST(值1,值2,…值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。假如任意一个自变量为NULL,则LEAST()的返回值为NULL。

select least(2,0),least(20.0,3.0,100.5),least(10,NULL);  返回值=0,3.0,null

    7)GREATEST(value1,value2,…)。语法格式为:GREATEST(值1,值2,…值n),其中n表示参数列表中有n个值。当有2个或多个参数时,返回值为最大值,假如任意一个自然变量为NULL,则GREATEST()的返回值为NULL。

select greatest(2,0),greatest(20.0,3.0,100.5),greatest(10,NULL); 返回值=2,100.5,null

    8)IN、NOT IN运算符。IN运算符用来判断操作数是否为IN列表中的其中一个值,如果是,返回值为1;否则返回值为0。

select 2 IN(1,3,5,'thks'),'thks' IN(1,3,5,'thks');  返回值=0,1

    9)LIKE运算符用来匹配字符串,语法格式为:expr LIKE 匹配条件,如果expr满足匹配条件,则返回值为1(TRUE);如果不匹配,则返回值为0(FALSE)。若expr或匹配条件中任何一个为NULL,则结果为NULL。       LIKE运算符在进行匹配时,可以使用下面两种通配符:       9.1) ‘%’,匹配任何数目的字符,甚至包括0字符。       9.2.)‘_’,只能匹配一个字符。

select 'stud' LIKE 'stud','stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't___','s' LIKE NULL;  返回值=1,1,1,1,0

    10)REGEXP运算符用来匹配字符串,语法格式为:expr REGEXP 匹配条件,如果expr满足匹配条件,返回1;如果不满足,则返回0;若expr或匹配条件任意一个为NULL,则结果为NULL。       REGEXP运算符在进行匹配时,常用的有下面几种通配符:       (1) ‘^’匹配以该字符后面的字符开头的字符串。       (2) ‘$’匹配以该字符后面的字符结尾的字符串。       (3) ‘.’匹配任何一个单字符。       (4) ‘[…]’匹配在方括号内的任何字符。例如,”[abc]”匹配”a”、”b”或”c”。为了命名字符串的范围,使用一个’-‘。”[a-z]”匹配任何字母,而”[0-9]”匹配任何数字。       (5) ‘*’匹配0个或多个在它前面的字符。  

select 'ssky' REGEXP '^s','ssky' REGEXP 'y$','ssky' REGEXP '.sky','ssky' REGEXP '[ab]';

三、逻辑运算符

  3.1、概述

    在SQL中,所有逻辑运算符的求值所得结果均为TRUE、FALSE或NULL。在MySQL中,它们体现为1(TRUE)、0(FALSE)和NULL。

  3.2、实例

    1)NOT或!

      逻辑非运算符NOT或者!表示当操作数为0时,所得值为1;当操作数为非零值时,所得值为0,当操作数为NULL时,所得的返回值为NULL。

select NOT 10,NOT(1-1),NOT -5,NOT NULL,NOT 1+1; 返回值= 0,1,0,0

    2)AND或&&

      逻辑与运算符AND或者&&表示当所有操作数均为非零值、并且不为NULL时,计算所得结果为1;当一个或多个操作数为0时,所得结果为0,其余情况返回值为NULL。

select 1 AND -1,1 AND 0,1 AND NULL,0 AND NULL;

    3)OR或||

      逻辑与运算符OR或者||表示当两个操作数均为非NULL值,且任意一个操作数为非零值时,结果为1,否则结果为0;

当有一个操作数为NULL,且另一个操作数为非零值时,则结果为1,否则结果为NULL;当两个操作数均为NULL时,则所得结果为NULL。

select 1 OR-1,1 OR 0,1 OR NULL,0 OR NULL;

    4)XOR

      逻辑异或运算符XOR。当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;如果一个为0值,另一个为非0值,返回结果为1。

select 1 XOR 1,0 XOR 0,1 XOR 0,0 XOR 0,1 XOR NULL,1 XOR 1;

四、位运算符

  4.1、概述

  位运算符是用来对二进制字节中的位进行测试、位移或者测试处理,MySQL中提供的位运算符有按位或(|)、按位与(&)、按位异或(^)、按位左移(<<)、按位右移(>>)、按位取反(~)

  4.2、实例

    1)位或运算符 |

      位或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑或运算。对应的二进制有一个或两个为1则该位的运算结果为1,否则为0。

select 10|15,9|4|2;     返回值=15,15

      分析:10的二进制数值为1010,15的二进制数值为1111,按位或运算之后,结果为1111,即整数15;9的二进制位1001,4的二进制为0010,按位或运算之后,结果为1111,即整数15。其结果为一个64位无符号整数

    2)位与运算符 &

      位与运算的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑与运算。对应的二进制都为1,则该位的运算结果为1,否则为0。

select 10&15,9&4&2;  返回值=10,9

      分析:10的二进制位1010,15的二进制位1111,按位与运算结果为1010,即整数10;9的二进制为1001,4的二进制位0100,2的二进制为0010,按位与运算之后,结果为0000,即整数0,。其结果为一个64位无符号整数。

    3)位异或运算 ^

      位异或运算的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑异或运算。对应的二进制数不同时,对应的结果才为1。如果两个对应位数都为0或者都为1,则对应位的结果为0。

select 10^15,1^0,1^1;  返回值=5,1,0

    4)位左移运算符 <<

      位左移运算符<<使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值被移出并丢弃,右边低位空出的位置用0补齐。语法格式为:expr<

select 1<<2,4<<2;  返回值=4,16

      分析:1的二进制位0000 0001,左移两位之后0000 0100,即十进制整数4;十进制4左移两位之后变成0001 0000,即变成十进制的16。

    5)位右移运算符 >>

      位右移运算符>>使指定的二进制的所有位都右移指定的位数。右移指定位数之后,右边低位的数值将被丢弃移除,左边高位空出的位置用0补齐。语法格式为:expr>>n。这里n指定值expr要移除的位数。

select 1>>1,16>>2;  返回值=0,16

      分析:1的二进制位0000 0001右移1位之后变成0000 0000,即十进制整数0,16的二进制数值为0001 0000右移两位之后变成十进制的4.

    6)位取反运算 ~

      位取反运算的实质是将参与运算的数据,按对应的二进制数逐位反转,即1取反后变成0,0取反变成1。

select 5&~1;  返回值=4

五、运算符优先级

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏谈补锅

C语言之冒泡排序、选择排序、折半查询、进制查表

24830
来自专栏开发与安全

Mysql数据库学习(二):数据类型(数值类型 日期和时间类型 字符串类型)

数据类型 数值类型 日期和时间类型 字符串类型 ? 一、数值类型 整数 ? tinyint[M] [unsigned] [zerofill]   ...

23600
来自专栏专注研发

归并排序(Merge Sort)

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序...

28430
来自专栏Django Scrapy

Django 数据库|models操作

相关API 1.get(**kwargs) 解释:返回与筛选条件相匹配的Model对象,返回结果有且只有一个。 说明:如果符合条件的对象多于一个抛出Multi...

34570
来自专栏lgp20151222

js遍历 for-of

11220
来自专栏desperate633

浅谈程序设计中的位操作什么是位操作位操作的常用技巧位操作的应用,常见的算法题小结

位操作是一种很底层的操作二进制数据的方法,虽然比较难掌握,但是有时候却有更高的效率和难以名状的优雅感。而且,在面试或者笔试中,考察基本的位操作应用越老越普遍,所...

6310
来自专栏PHP在线

php总结

php5.3新增魔术方法__invoke在对象实例化之后,像调用变量函数一样调用。 class testClass{ function __invoke(...

34590
来自专栏PHP在线

Array数组函数(一)

array_change_key_case--返回字符串键名全为小写或大写的数组 array_change_key_case(array$input[,...

377140
来自专栏软件开发 -- 分享 互助 成长

C++ string类的学习

string类对于处理字符串的一些应用非常的方便,我个人感觉,string和字符数组const char *很像,而且又比字符数组用起来方便的多。 注意其删除,...

45190
来自专栏wym

Codeforces Round #483 (Div. 2) D. XOR-pyramid

For an array bb of length mm we define the function ff as

13710

扫码关注云+社区

领取腾讯云代金券