下课看着文档走回实验室,我重新拾起了遗忘的SQL运算符

简介: 下课看着文档走回实验室,我重新拾起了遗忘的SQL运算符

一、算术运算符


算术运算符整体的使用是比较简单清晰的。没有太多的花里胡哨的玩法。


一、作用和种类


算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算

二、需要注意的点


和常规理解中的算术运算符的使用是差不多,注意事项也差不多,比如除法的时候,分母不能为0(否则运算结果为NULL)。唯一需要注意的是这些运算符和NULL进行运算的时候,都返回NULL

三、算术运算符总汇表

微信图片_20221018161322.png

二、比较运算符(本篇重点)


比较运算符运用场景


比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。

比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。


常见的比较运算符


用于比较的运算符其实蛮多的,我就草率的将它们分为两类了吧

一、符号类型的微信图片_20221018161409.jpg

1、等于运算符


顾名思义,直接比较等号两边的值是否相等。常规来说,数值和数值比较,字符串和字符串比较确实是这么搞的。

需要注意的是当出现数值和字符串比较的时候:微信图片_20221018161435.png

其次需要知道的是字符串和字符串的比较是基于ANSI码,可以通过这篇文章了解一下基本的编码的联系和区别


排队取快递这会我理清楚了各种编码集

最后需要注意的是NULL值的事儿微信图片_20221018161531.png

2、安全运算符


对于安全运算符,它和等于运算符在大体是差不多的,最大的区别依旧是对NULL值的处理上。微信图片_20221018161608.png

其作用了,可以通过安全等于运算符查询出表中为NULL的数据有哪些。

其他的大于、小于、小于等于这些运算符就和咱们常规理解中的是一致的,只是比较的基于ANSI码

二、字母类的微信图片_20221018161630.png


一)、IS NULL \ IS NOT NULL \ ISNULL


它们的效果,就如同它们直白的中文翻译一样。直接用于查询表某个数据值为NULL的信息有哪些。微信图片_20221018161707.png

容易让人产生疑惑的应该是IS NULL和 ISNULL。ISNULL严格来说不是运算符的,它是函数,这里只是因为它的功能相似,顺带提及它微信图片_20221018161737.png

(二)、获得 最小值 LEAST\ 最大值GREATEST


这个也是比较容易理解的,也是直接用中文翻译记忆就好。l e a s t leastleast的意思是最小,g r e a t e s t greatestgreatest的意思是最大。比较的原则依旧是基于ANSI码


//

微信图片_20221018161757.png

(三)、BETWEEN 条件1 AND 条件2


BETWEEN ... AND 的玩法就比较简单了,注意逻辑上不要写错,比如查询的时候写成查询大于等于8000,小于等于6000。

微信图片_20221018161900.png

(四)、IN \ NOT IN


查询在集合中或者不在集合中的数据,主要的作用领域是用于查询离散的数据微信图片_20221018161931.png

(五)、LIKE:模糊查询


需要掌握的两个通配符: % 和 _% 的意思:对于%a%而言,代表的意思是a前面可能有0个或者多个字符,以及a后面了,可能会有零个或者多个字符。

举一反三的思考一下,倘若是%a,代表的意思是a前面可能有0个或者多个字符


_的意思:一个下划线_代表的是一个不确定的字符

这是LIKE 和 % 的玩法:

微信图片_20221018162005.png

下面演示一下LIKE 和下划线 _的玩法:微信图片_20221018162040.png


六、REGEXP \ RLIKE


它两是正则表达式的内容,我暂时不想去碰,我想后面写python爬虫的文章时,再详细的阐述它们


三、逻辑运算符(作为了解)


逻辑运算符的作用:逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL

逻辑运算符的总汇:

微信图片_20221018162140.png

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 的问题


四、位运算符(作为了解)


位运算的效果:

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。

位运算总汇:

微信图片_20221018162255.png

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补齐。


运算符的优先级


运算符优先级的这个表,也是不用刻意去背的,我观念里,除了可爱考试中会遇到优先级的题目,在实际使用的时候可以使用括号解决的。老规矩,过一遍,有印象就很好了。

微信图片_20221018162403.jpg

总结


1、首先对于常规概率中的=、<、>这些和咱们观念里也在使用的运算符,要特别注意遇到SQL中特有的NULL值的时候,返回的结果大多都是NULL,因此孕育而生了安全运算符<=>来处理这个事儿


2、着重掌握那些是英文单词的比较运算符,结合着中文意思进行理解还是不错的


3、逻辑运算符和位运算作为了解就好啦~,当做自己的内功。以及优先级拿来对付考试就可以了。


相关文章
|
7月前
|
SQL
SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法:
153 1
|
7月前
|
SQL 人工智能 算法
【数据库SQL server】传统运算符与专门运算符
【数据库SQL server】传统运算符与专门运算符
132 0
|
7月前
|
SQL Oracle 关系型数据库
SQL 中的运算符与别名:使用示例和语法详解
IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写
256 0
|
SQL 关系型数据库 MySQL
数据库基础入门 — SQL运算符
数据库基础入门 — SQL运算符
79 0
|
4月前
|
SQL 关系型数据库 MySQL
|
4月前
|
SQL 测试技术 数据处理
|
4月前
|
SQL 存储 数据处理
SQL中的运算符:数据操作的核心工具
【8月更文挑战第31天】
260 0
|
5月前
|
SQL 数据库
SQL AND运算符
【7月更文挑战第11天】SQL AND运算符。
36 2
|
6月前
|
SQL 数据库
SQL EXISTS 运算符
SQL EXISTS 运算符
48 5
|
5月前
|
SQL 存储 数据库
深入理解 SQL UNION 运算符及其应用场景
【7月更文挑战第8天】SQL UNION 概述 `UNION` 运算符结合多个`SELECT`语句,生成不含重复行的结果集。基本语法是:`SELECT...FROM table1 UNION SELECT...FROM table2`。适用于整合相同结构数据表、不同条件查询结果及跨数据库数据。注意列数和数据类型需匹配,排序规则一致,大量操作可能影响性能。示例:合并`Students_Math`和`Students_Science`表中`StudentID`和`Grade`的数据。