8.3.1Oracle的数据类型8.3.2Oracle常量、变量和表达式8.3.3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
第8章 ORACLE 数据库
8.3.3 Oracle内置函数
Oracle中提供了丰富的函数,除少数几个与SQL函数不同外, 其余均相同。 1.LENGTH与LENGTHB
上述两个函数都是求出字符串的长度,但返回结果可能不一样。 LENGTHB返回的长度单位为字节,而不是字符。LENGTH则返回 的值为字符串中字符的个数。 2.SUBSTR与SUBSTRB
1.哑表(DUAL) Oracle中经常要使用常量或伪列来说明函数的某些功能,或使
用其它开发工具调用Oracle与表无关的一些函数、过程等时,如调 用Oracle的系统日期函数SYSDATE,SELECT语句并不关心那一 行在表中,只要一条记录就足够了。为此,Oracle提供了DUAL表。 该表只包含一个字段和一条记录。使用它容易解决与表无关的一些 查询问题。
它不能用于函数。Oracle提供了函数NVL,其语法为: NVL(Expression1, Expression2) 6.DECODE
该函数类似于一系统嵌套函数,其语法为: DECODE(Base_expression , Compare_expression1, Value1, Compare_expression2,Value2,……, Compare_expressionn,Valuen,DEFAULT)
18
第8章 ORACLE 数据库
(2)UID与USER
这是在本章前面介绍过的两个函数。
(3)NULL
表示空值。应注意它与其它数据的运算及对一些函数值的影响。 具体请参阅本章前面的讨论。
17
第8章 ORACLE 数据库
(4)CURRVAL与NEXTVAL 这两个伪列与序号一起使用,表示返回序号的当前值和下一个
值。具体使用方法参见第5节。 (5)LEVEL
8.3 Oracle数据库基础
8.3.1 Oracle的数据类型 8.3.2 Oracle常量、变量和表达式 8.3.3 Oracle内置函数 8.3.4 Oracle的哑表与伪列
8.3.1 Oracle的数据类型
1.字符型 用来存储字符串或字符数据,主要类型有VARCHAR2、CHAR
和LONG。 (1)VARCHAR2
PL/SQL中除可使用预定义的子类型外,用户自己可以定义子类 型,其格式为:
SUBTYPE new_type IS original_type;
8
第8章 ORACLE 数据库
10.使用%TYPE 在许多情况下,PL/SQL变量可以用来处理存储在数据库表中的
数据,因而该变量类型与表中相应字段的数据类型相同。可使用 %TYPE说明某一变量与表中字段类型相同。其格式为:
variety_name table_name.field_name%TYPE;
9
第8章 ORACLE 数据库
8.3.2 Oracle常量、变量和表达式
在Oracle中把值存储在常量和变量中,常量的值不能改变,变 量的值可以改变。变量可分为字段变量和内存变量。用到的常量与 变量必须定义,在定义时须指明它的数据类型。
5
第8章 ORACLE 数据库
7.复合类型 (1)记录
记录定义的格式如下: TYPE Record_type IS RECORD(
Field1 Datatype1 [NOT NULL][:=Expression1], Field2 Datatype2 [NOT NULL][:=Expression2], …); 在上述格式中Record_type是一种定义的记录类型。 如果要定义记录类型的变量与已建立的某一关系表结构一致, 可使用下列定义: Record_typename table_name%ROWTYPE;
6
第8章 ORACLE 数据库
(2) 表 PL/SQL中的表类似于C语言中的数组,并与其数组的处理方式
类似,但实现方法不同。表必须定义该表类型,再声明一个属于该 类型的变量,然后才能引用。定义表类型的格式如下: TYPE Table_type IS TABLE OF type INDEX BY BINARY_INTEGER;
Oracle中的表达式与在第 4章中介绍了SQL中的表达式相同, 在此不重述。但在Oracle使用表达式时应注意NULL与其它数据的 运算。NULL与任何类型数据作运算其结果均为NULL。
10
第8章 ORACLE 数据库
但NULL 具有以下特点: (1) 等价于没有任何值; (2) 与 0、空字符串或空格不同; (3) 在WHERE条件中, Oracle认为结果为NULL的条件为 FALSE,带有这样条件的SELECT语句不返回行,并且不返回错误 信息,但NULL和FALSE是不同的; (4)排序时比其他数据都大; (5)空值不能被索引。虽然在某列上建立了索引,但是对该列的 空值查询来说,因为空值没有被索引,所以不能改善查询的效率。
16
第8章 ORACLE 数据库
2.伪列(Pseudo_column)
一个伪列是在查询时产生一个值的“列”,它的处理方式与表中一个字 段的处理方式类似,但它不是表中的一个真正字段。
(1)SYSDATE
SYSDATE是一个内置函数,它返回Oracle系统的日期与时间。 在开实际系统发时,应使用该函数,而不应使用开发工具提供的函 数,调用用户端机器上的日期与时间。
一个PL/SQL表类似于数据库中的一个只有两列的表,一列的类 型为BINARY_INTEGER,另一列的类型为定义中指定的类型。
7
第8章 ORACLE 数据库
8.LOB类型 LOB类型用来存储大型的对象,它可以是一个二进制数值或字
符型值,其最大长度为4GB。LOB可包含没有结构特征的数据,对 它的访问比对LONG 或LONG RAW数据的访问更为有效,对它的 限制更少。 9.自定义子类型
用于存储数字数据,包括整数或浮点数。在实际应用中,应指 定该类型数据长度和小数的位数。在Oracle中其指定的长度不包含 小数点和符号位。
(2)BINARY_INTEGER 它是PL/SQL的一个数据类型,它用于带符号的整数值,以2的
补码的二进制形式进行存储。
3
第8章 ORACLE 数据库
3.日期型 DATE型用于存储日期和时间信息,包括世纪、和、月、日、时、
分、秒,其占7个字节,每一部分占一个字节。 4.RAW和LONG RAW
RAW和LONG RAW用来存储二进制数据。 (1)RAW
RAW类似于CHAR,必须指定存储二进制数的最大字节数。 (2)LONG RAW
LONG RAW类似于LONG。
4
第8的每一行(ROW)都有一个地址,通过查询伪列
ROWID获得该行地址。该伪列的值为16进制字符串,该串的数据类 型为ROWID。其字符值的形式为:BLOCK.ROW.FILE。 6. 布尔型
在表中无布尔型的字段类型,只有在PL/SQL中可以定义 BOOLEAN型,它的值为TRUE、FALSE、NULL。在定义BOOLEAN型变量 时可限定变量为NOT NULL,但此时必须为该变量初始化。
TO_DATE将一个字符串转换成一个日期型数据。其格式为: TO_DATE(string,[‘format’]) 其中第一个参数是要转换的字符串,第二个参数为指定转换的 格式,若未指定格式,则使用系统的缺省格式。
13
第8章 ORACLE 数据库
5.NVL 判断某一变量是否为空时可使用IS NULL 或IS NOT NULL,但
用来存储可变长的字符串或字符型数据,在使用时,须指明其 最大字节数据。
(2)CHAR 用来存储定长的字符串或字符型数据,使用时也要指定长度,
其缺省值为1。 (3)LONG
用来存储可变长的字符串或字符型数据。
2
第8章 ORACLE 数据库
2.数字型 数字型用于存储整数或实数。主要有:number、
BINARY_INTEGER (1)NUMER
该伪列主要用于对表执行层次树遍历的SELECT语句中,它返 回树的当前层次。 (6)ROWID
该伪列用于在查询的选择列表中,它返回特定记录的行标识符, 其返回值为一个ROWID类型的数值。 (7)ROWNUM
该伪列返回查询中的当前行序号,主要用于限制要处理的记录 总数。它常用于SELECT中的WHERE子句和UPDATE语句的SET 子句中。
14
第8章 ORACLE 数据库
7.UID UID函数没有参数,它返回唯一标识当前数据库用户的整数。
8.USER 该函数没有参数,它返回当前Oracle用户的名字。
9.分组函数 分组函数忽略空值。在实际应用中,根据需要可利用NVL函数
用零代替空值
15
第8章 ORACLE 数据库
8.3.4 Oracle的哑表与伪列
SUBSTR函数据是从目标字符串中某个字符开始取出指定字符 个数的子串,而SUBSTRB函数据是从目标字符串中某个字节开始 取出指定字节个数的子串。
12
第8章 ORACLE 数据库
3.INSTR与INSTRB INSTR与INSTRB均是从指定字符串中的指定位置开始查找出现
指定次数的字符串,它们的区别与SUBSTR与SUBSTRB区别相同。 4.TO_DATE
相关文档
最新文档