一、算术运算符
算术运算符整体的使用是比较简单清晰的。没有太多的花里胡哨的玩法。
一、作用和种类
算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算
二、需要注意的点
和常规理解中的算术运算符的使用是差不多,注意事项也差不多,比如除法的时候,分母不能为0(否则运算结果为NULL)。唯一需要注意的是这些运算符和NULL进行运算的时候,都返回NULL
三、算术运算符总汇表
二、比较运算符(本篇重点)
比较运算符运用场景
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。
比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。
常见的比较运算符
用于比较的运算符其实蛮多的,我就草率的将它们分为两类了吧
一、符号类型的
1、等于运算符
顾名思义,直接比较等号两边的值是否相等。常规来说,数值和数值比较,字符串和字符串比较确实是这么搞的。
需要注意的是当出现数值和字符串比较的时候:
其次需要知道的是字符串和字符串的比较是基于ANSI码,可以通过这篇文章了解一下基本的编码的联系和区别
排队取快递这会我理清楚了各种编码集
最后需要注意的是NULL值的事儿
2、安全运算符
对于安全运算符,它和等于运算符在大体是差不多的,最大的区别依旧是对NULL值的处理上。
其作用了,可以通过安全等于运算符查询出表中为NULL的数据有哪些。
其他的大于、小于、小于等于这些运算符就和咱们常规理解中的是一致的,只是比较的基于ANSI码
二、字母类的
一)、IS NULL \ IS NOT NULL \ ISNULL
它们的效果,就如同它们直白的中文翻译一样。直接用于查询表某个数据值为NULL的信息有哪些。
容易让人产生疑惑的应该是IS NULL和 ISNULL。ISNULL严格来说不是运算符的,它是函数,这里只是因为它的功能相似,顺带提及它
(二)、获得 最小值 LEAST\ 最大值GREATEST
这个也是比较容易理解的,也是直接用中文翻译记忆就好。l e a s t leastleast的意思是最小,g r e a t e s t greatestgreatest的意思是最大。比较的原则依旧是基于ANSI码
//
(三)、BETWEEN 条件1 AND 条件2
BETWEEN ... AND 的玩法就比较简单了,注意逻辑上不要写错,比如查询的时候写成查询大于等于8000,小于等于6000。
(四)、IN \ NOT IN
查询在集合中或者不在集合中的数据,主要的作用领域是用于查询离散的数据
(五)、LIKE:模糊查询
需要掌握的两个通配符: % 和 _% 的意思:对于%a%而言,代表的意思是a前面可能有0个或者多个字符,以及a后面了,可能会有零个或者多个字符。
举一反三的思考一下,倘若是%a,代表的意思是a前面可能有0个或者多个字符
_的意思:一个下划线_代表的是一个不确定的字符
这是LIKE 和 % 的玩法:
下面演示一下LIKE 和下划线 _的玩法:
六、REGEXP \ RLIKE
它两是正则表达式的内容,我暂时不想去碰,我想后面写python爬虫的文章时,再详细的阐述它们
三、逻辑运算符(作为了解)
逻辑运算符的作用:逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL
逻辑运算符的总汇:
1、逻辑非运算符:逻辑非(NOT或!)
表示当给定的值为0时返回1;当给定的值为非0值时返回0;当给定的值为NULL时,返回NULL。
2、逻辑与运算符 逻辑与(AND或&&)
逻辑与运算符是当给定的所有值均为非0值,并且都不为NULL时,返回1;
当给定的一个值或者多个值为0时则返回0;否则返回NULL。
3、逻辑或运算符 逻辑或(OR或||)
逻辑或运算符是当给定的值都不为NULL,并且任何一个值为非0值时,则返回1,否则返回0;
当一个值为NULL,并且另一个值为非0值时,返回1,否则返回NULL;
当两个值都为NULL时,返回NULL。
4、逻辑异或运算符 逻辑异或(XOR)
逻辑异或运算符是当给定的值中任意一个值为NULL时,则返回NULL;
如果两个非NULL的值都是0或者都不等于0时,则返回0;
如果一个值为0,另一个值不为0时,则返回1。
大致浏览一遍的小伙伴应该能get到了,SQL中的它们和咱们在计算机基础课中学到的是差不多的,只是依旧需要考虑NULL 的问题
四、位运算符(作为了解)
位运算的效果:
位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。
位运算总汇:
1、&(位与)
上下运算,按照与的运算规则:0&0=0 ;0&1=0;1&1=1
例如:
170 & 75 结果为:0000 0000 0000 1010
再把二进制转换为十进制:10
2、~(位非)
运算法则:0变1,1变0
例如:
~170 的二进制:1111 1111 0101 0101 十进制为:-171
~75 的二进制:1111 1111 1011 0100 十进制为:-76
3、|(位或)
上下运算,按照与的运算规则:0&0=0 ;0&1=1;1&1=1
例如:
170 & 75 结果为:0000 0000 1110 1011
再把二进制转换为十进制:235
4、^(位异或)
上下运算,按照与的运算规则:0&0=0 ;0&1=1;1&1=0
例如:
170 & 75 结果为:0000 0000 1110 0001
再把二进制转换为十进制:225
5、按位右移运算符
按位右移(>>)运算符将给定的值的二进制数的所有位右移指定的位数。右移指定的位数后,右边低位的数值被移出并丢弃,左边高位空出的位置用0补齐。
6、按位左移运算符
*按位左移(<<)运算符将给定的值的二进制数的所有位左移指定的位数。左移指定的位数后,左边高位的数值被移出并丢弃,右边低位空出的位置用0补齐。
运算符的优先级
运算符优先级的这个表,也是不用刻意去背的,我观念里,除了可爱考试中会遇到优先级的题目,在实际使用的时候可以使用括号解决的。老规矩,过一遍,有印象就很好了。
总结
1、首先对于常规概率中的=、<、>这些和咱们观念里也在使用的运算符,要特别注意遇到SQL中特有的NULL值的时候,返回的结果大多都是NULL,因此孕育而生了安全运算符<=>来处理这个事儿
2、着重掌握那些是英文单词的比较运算符,结合着中文意思进行理解还是不错的
3、逻辑运算符和位运算作为了解就好啦~,当做自己的内功。以及优先级拿来对付考试就可以了。