持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
大家好! 我是慕歌,一只想教你学习 后端技术的野生coder! 欢迎来到慕歌的数据库系列教程,希望通过这个教程带大家深入学习数据库技术,该教程所有知识点均来源于本人的日常学习与开发中,如有疑问请与我联系!
前言
在上一节的分享中,慕歌为大家带来进入了查询篇章的学习,并详细讲解关于简单查询的一些知识点,包括基础查询语句,条件查询,去重查询等。其中涉及一些需要注意的细节,如关键字的处理,去重关键字位置这样的问题,需要我们在书写sql 的过程中加以注意。
这一节,将继续围绕查询语句进行学习,涉及的主要知识是查询语句中的运算符以及分页功能。
运算符
算数运算
算数运算是在数据统计中,非常常用的基本运算,在sql 中同样保留了基本的算数运算操作:加(+),减(-),乘(*),除(/),取余(%)
#加减法运算
SELECT N1 (+ / -) N2 FROM dual;
#N1,N2 表示常数,通过dual 进行运算
#加减法运算为同级运算,且具有向上转型的自动处理
#当与字符串进行运算时会进行隐式转换,按照ascii 码进行转换
示例:
SELECT 100+35.5 FROM dual;
res -》 135.5
#乘除法运算
SELECT N1 (* / /) N2 FROM dual;
#N1,N2 表示常数,通过dual 进行运算
#乘除法运算为同级运算,且具有向上转型的自动处理
#处理被除数为0 时,结果将为null 值,表示不合法
#求模运算
SELECT N1 (%) N2 FROM dual;
#同数学求模运算,结果依旧为整型
由于这一节中的运算符内容比较简单,且与常用数学运算类似,就不过多解释其中的原因。隐式转换:是数据库服务器的自带处理机制,主要处理数据库的字符,会对字符进行转换尝试,如果能够转换,就采用转换后的数据,进行运算
比较运算
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回null。比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。
#等号/安全等号运算
select N1 (=/<=>)N2 FROM dual;
#等号运算同样具有隐式转换,会将字符转换成数值处理
#数值运算比较值,字符运算比较acsii 码
#安全等于用于NULL 值处理,因为任何值与null 的运算全为null
#不等于运算
select N1 (!= / <>)N2 FROM dual;
#判断两边的数值,字符,表达式的值是否相等,不等 1,相等 0
#空值运算
SELECT IS NULL (ex) or ISNULL(ex);
#判断是否为空值,如果为空值为1,非空为0
#判断是否不为空值,如果为非空值为0,空值为1
接下来的运算过程中,将引入函数的计算,通过函数得到运算结果
#最大,最小运算
SELECT (LEAST/GREATEST)(N1,N2,N3);
#得到所选项中的最小/最大值
#当值中含有null 值时,返回null 值
#区间运算
SELECT BETWEEN N1 AND N2;
#得到所有值中,值在区间中的值
#IN/NOT IN 运算
SELECT (IN/NOT IN) (N1,N2,N3);
#得到所有值在给定集合中的值
#LIKE 运算符
SELECT col_name LIKE '%a';
#'%' 表示多个字符,'_'表示一个字符
#用于进行模糊匹配字符串与查询字符串类似的值
以上就是慕歌为大家整理的比较常用的运算操作,还有如逻辑运算,位运算等运算符如果大家感兴趣可自行查阅理解,使用方式大多与上方列举的运算一致
运算优先级
数字编号越大,优先级越高,优先级高的运算符先进行计算。可以看到,赋值运算符的优先级最低,使用“()”括起来的表达式的优先级最高。
分页
排序
这里的排序是通过某个字段进行排序,排序规则遵循上一节中的比较规则
#单列排序
SELECT * FROM table_name ORDER BY col_name DESC/ASC;
#DESC 降序排列,ASC 升序排列
#多列排序
SELECT * FROM table_name ORDER BY col_name1,col_name2 DESC/ASC;
#排序的第一列必须有相同的列值,##才会对第二列进行排序。
#如果第一列数据中所有值都是唯一的,将不再对第二列进行排序
分页
分页显示,根据结果展示的需要将数据进行分段分页的展示,一个集合展示固定数量 的数据
#分页
SELECT * FROM table_name LIMIT N1,N2;
#N1 表示数据的起始点,N2 偏移量
#分页公式
SELECT * FROM table_name
LIMIT (PageNo - 1)*PageSize,PageSize;
#pageNo 当前页数,pageSize 每页的页长
注意:LIMIT 子句放在整个句子的最后,进行分页约束
约束返回可以降低网络数据的传输量,在数据库查询阶段就进行限制而且数据查询不需要进行全表扫描,有限提升效率
结语
这一节的分享到这里就结束了,下一节中将进入多表查询的分享学习!
如果您觉得本文不错,欢迎点赞支持,您的关注是我坚持的动力!