024-Oracle排序、单行函数
1. 使用ORDER BY排序
(1) ORDER BY 子句的作用和语法是什么?
用于对结果集进行排序处理;ORDER BY 子句在 SELECT 语句的最后,ORDER BY 后侧指定需要排序列。
(2) 如何指定升序排序?
ASC: 升序排序,默认。
(3) 如何指定降序排序?
DESC: 降序排序。
(4) 升序的规则是什么?
对于数字值,小的值在前面显示—例如,1–999。
对于日期,早的日期在前面显示—例如,01-1-92 在 01-1-95 前面 。
对于字符值,依字母顺序显示—例如,A 第一,Z 最后。
对于空值,升序排序时显示在最后,降序排序时显示在最前面。
(5)SELECT 语句的执行顺序如下:
FROM 子句
WHERE 子句
SELECT 子句
ORDER BY 子句
2. 函数介绍
(1) 什么是函数?
是数据库产品中提供的能够处理查询结果的方法。
(2) 函数有哪些类型?
单行函数、多行函数
(3) 单行函数的特点是?
这些函数仅对单个行进行运算,并且每行返回一个结果。
(4) 多行函数的特点是什么?
这些函数能够操纵成组的行,每个行组给出一个结果,这些函也被称为组函数。
(5)函数语法
function_name(arg1,arg2,.....)
function_name:是函数的名字。
arg1, arg2:是由函数使用的任意参数。参数可以是一个列名、用户提供的常数、变量值、
或者一个表达式。
3. 单行函数介绍
(1) 单行函数有什么特性?
① 作用于每一个返回行,每行返回一个结果。
②可能需要一个或多个参数。
③可以修改结果集的数据类型。
④可以嵌套。
⑤可能返回一个与参数不同类型的数据值。
⑥能够用在 SELECT、WHERE 和 ORDER BY 子句中。
(2) Oracle中的单行函数分为几大类?每一类的作用是什么?
①字符函数:接受字符输入,可以返回字符或者数字值。
②数字函数:接受数字输入,返回数字值。
③日期函数:对 DATE 数据类型的值进行运算 (除了 MONTHS_BETWEEN 函数返回一个数字,所有日期函数都返回一个 DATE 数据类型的值。
④转换函数:从一个数据类型到另一个数据类型转换一个值。
⑤通用函数:
NVL、NVL2 、NULLIF 、COALSECE、CASE、DECODE
4. 大小写处理函数
LOWER:转换大小写混合的字符串为小写字符串。
UPPER:转换大小写混合的字符串为大写字符串。
INITCAP:将每个单词的首字母转换为大写,其他字母为小写。
大小写处理函数需要一个参数,参数类型为字符串类型,返回一个字符串。
5. 字符处理函数
(1) Oracle中的DUAL表时什么表?作用是什么?
dual 表:dual 是一张只有一个字段,一行记录的表。dual 表也称之为'伪表',因为他不
存储主题数据。
作用:如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们
想得到的信息,并要通过 select 完成时,就要借助 dual 表来满足结构化查询语言的格式。
(2) Oracle中能够处理字符的函数及作用有哪些?
①CONCAT(arg1,arg2):连接值在一起 (CONCAT 函数有两个输入参数)
arg1:字符串类型。字符拼接的值。
arg2:字符串类型。字符拼接的值。
②SUBSTR(arg1,arg2,arg3):截取子串。
arg1:字符串类型。原字符串。
arg2:整数类型。开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,-2 则
表示倒是第二位以此类推)。
arg3:整数类型。截取个数。
③SUBSTR(arg1,arg2):截取子串。
arg1:字符串类型。原字符串。
arg2 开始位置(开始位置可以是一个负数,-1 表示原串的最后一位,-2 则表示倒是第二位以此类推)截取到末尾。
④LENGTH(arg1):以数字值显示一个字符串的长度。
arg1:字符串类型。计算长度的字符串。
⑤INSTR(arg1,arg2):找到一个给定字符的数字位置。
arg1:字符串类型。原字符串。
arg2:字符串类型。查找内容。
⑥INSTR(arg1,arg2,arg3,arg4):指定查找位置以及出现的次数。
arg1:字符串类型。原字符串。
arg2:字符串类型。查找内容。
arg3:整数类型。开始位置。
arg4:整数类型。第几次出现。
⑦LPAD(arg1,arg2,arg3):用给定的字符左填充字符串到给定的长度。
arg1:字符串类型。原字符串。
arg2:整数类型。总长度。
arg3:字符串类型。填充的子字符串。
⑧RPAD(arg1,arg2,arg3):用给定的字符右填充字符串到给定的长度。
arg1:字符串类型。原字符串。
arg2:整数类型。总长度。
arg3:字符串类型。填充的子字符串。
⑨TRIM(arg1, from arg2):从一个字符串中去除头(leading)或尾(trailing)或头尾两侧(both)的字符 (默认为头尾两侧) 如果 arg1 或 arg2 是一个文字字符,必须放在单引号中。
arg1 需要去掉的字符,FROM 为关键字,arg2需要操作的字符串。
⑩REPLACE(arg1,arg2,arg3):REPLACE 函数是用另外一个值来替代串中的某个值。
arg1:字符串类型。原字符串。
arg2:字符串类型。需要替换的子串。
arg3:字符串类型。替换的内容
6. 数字函数
(1) Oracle中能够处理数字的函数及作用有哪些?
①ROUND(arg1,arg2):四舍五入指定小数的值。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数,负数则表示指定整数的位置,整数表示保留的小数位数。
②ROUND(arg1):四舍五入保留整数。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数。
③TRUNC(arg1,arg2):截断指定小数的值,不做四舍五入处理。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数,负数则表示指定整数的位置,整数表示保留的小数位数。
④TRUNC(arg1):四舍五入保留整数。
arg1:数字类型。原数字。
arg2:整数类型。小数点保留的位数。
⑤MOD(arg1,arg2):取余。
arg1:数字类型。被除数。
arg2:数字类型。除数。
7. 日期的使用
(1) 在Oracle中如何获取系统当前时间?
SYSDATE 是一个日期函数,它返回当前数据库服务器的日期和时间。
(2) 在Oracle中做日期计算有哪些特点?
Date+number=日期,加一个天数到一个日期上。
Date-number=日期,从一个日期减一个天数。
Date-date=天数,两个天数之差。
Date+number/24=日期,加一个小时数(number)到一个日期上。
8. 日期函数
(1) 在Oracle中能够处理日期的函数有哪些?
①MONTHS_BETWEEN(date1,date2):计算 date1 和 date2 之间的月数。其结果可以是正的也可以是负的。如果 date1 大于 date2,结果是正的。反之,结果是负的。
date1:日期类型。date2:日期类型。
②ADD_MONTHS(date, n):添加 n 个日历月到 date。n 的值必须是整数,但可以是负的。date:日期类型。n:整数
③NEXT_DAY(date, ‘char’):计算在 date 之后的下一个周(‘char’)的指定天的日期。char 值可能是一个表示一天的数或者是一个字符串。如果使用数字表示星期,1 是从星期日开始。数字范围为:1-7。或者用‘星期··’date:日期类型。char:数字或字符串。
④LAST_DAY(date):计算包含 date 的月的最后一天的日期。
date:日期类型。
⑤ROUND(date,‘fmt’):返回用格式化模式 fmt 四舍五入到指定单位的 date ,如果格式模式 fmt 被忽略,date 被四舍五入到最近的天。
date:日期类型。fmt:字符串类型(yy、mm、dd)。
⑥TRUNC(date, ‘fmt’):返回用格式化模式 fmt 截断到指定单位的带天的。如果格式模式
fmt 被忽略,date 被截断到最近的天。
date:日期类型。fmt:字符串类型。
9. 隐式数据类型转换
(1) 在Oracle中什么是隐式数据类型转换?
隐式转换:当源数据的类型和目标数据的类型不同的时候,如果没有转换函数,就会发生隐式转换,也称自动转换。
(2) 哪些数据类型支持隐式类型转换?
直接赋值转换:
表达式赋值转换:
(3) 隐式数据类型转换有哪些问题?
①性能影响:隐式转换的最大问题就是转换时会导致索引的无效,进而可能导致全表扫描。当表的数据量很大的时候,产生会很大的性能问题。比如说,VARCHAR2 和 NVARCHAR2 隐式数据类型转换导致的性能问题。
②不便于阅读:由于隐式转换使得数据库编程人员和 DBA 难以了解到究竟发生了怎样的类型转换,而且如果代码很多很长的话要查出错误就需要费很大的劲。
(4) 什么是显示数据类型转换?
通过数据库中的转换函数完成数据类型的转换。
10. 日期到字符的转换
(1) Oracle中提供了哪些转换函数?
TO_CHAR(arg1,’fmt’):将一个日期或者数字转换为字符类型。带格式化样式 fmt。
arg1:数字或者日期类型。需要转换的数据。fmt:转换格式。
TO_NUMBER()将字符转换成数字。
TO_DATE()将字符转换成日期。
(2) 在Oracle中将日期转换成字符使用什么函数完成?
TO_CHAR(arg1,’fmt’):将一个日期或者数字转换为字符类型。带格式化样式 fmt。
arg1:数字或者日期类型。需要转换的数据。fmt:转换格式。
(3) 日期格式的模板元素有哪些?
(4) 时间格式模板元素
11. 数字到字符的转换
(1) 在Oracle中讲数字转换为字符的函数是什么?
TO_CHAR(arg1,’fmt’):将一个日期或者数字转换为字符类型。带格式化样式 fmt。arg1:数字或者日期类型。需要转换的数据。fmt:转换格式。
(2) 数字格式模板有哪些?
12. 字符到数字的转换
(1) 在Oracle中将字符转换为数字的函数是什么?
TO_NUMBER(‘arg1’,fmt’):将字符串转换为数值型的格式。带格式化样式 fmt。
arg1:字符串类型。需要转换的数据。
fmt:转换格式。