您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > oracle基础教程
第8章ORACLE数据库18.3.1Oracle的数据类型8.3.2Oracle常量、变量和表达式8.3.3Oracle内置函数8.3.4Oracle的哑表与伪列8.3Oracle数据库基础第8章ORACLE数据库21.字符型用来存储字符串或字符数据,主要类型有VARCHAR2、CHAR和LONG。(1)VARCHAR2用来存储可变长的字符串或字符型数据,在使用时,须指明其最大字节数据。(2)CHAR用来存储定长的字符串或字符型数据,使用时也要指定长度,其缺省值为1。(3)LONG用来存储可变长的字符串或字符型数据。8.3.1Oracle的数据类型第8章ORACLE数据库32.数字型数字型用于存储整数或实数。主要有:number、BINARY_INTEGER(1)NUMER用于存储数字数据,包括整数或浮点数。在实际应用中,应指定该类型数据长度和小数的位数。在Oracle中其指定的长度不包含小数点和符号位。(2)BINARY_INTEGER它是PL/SQL的一个数据类型,它用于带符号的整数值,以2的补码的二进制形式进行存储。8.3.1Oracle的数据类型第8章ORACLE数据库43.日期型DATE型用于存储日期和时间信息,包括世纪、和、月、日、时、分、秒,其占7个字节,每一部分占一个字节。4.RAW和LONGRAWRAW和LONGRAW用来存储二进制数据。(1)RAWRAW类似于CHAR,必须指定存储二进制数的最大字节数。(2)LONGRAWLONGRAW类似于LONG。8.3.1Oracle的数据类型第8章ORACLE数据库55.ROWID数据库表中的每一行(ROW)都有一个地址,通过查询伪列ROWID获得该行地址。该伪列的值为16进制字符串,该串的数据类型为ROWID。其字符值的形式为:BLOCK.ROW.FILE。6.布尔型在表中无布尔型的字段类型,只有在PL/SQL中可以定义BOOLEAN型,它的值为TRUE、FALSE、NULL。在定义BOOLEAN型变量时可限定变量为NOTNULL,但此时必须为该变量初始化。8.3.1Oracle的数据类型第8章ORACLE数据库67.复合类型(1)记录记录定义的格式如下:TYPERecord_typeISRECORD(Field1Datatype1[NOTNULL][:=Expression1],Field2Datatype2[NOTNULL][:=Expression2],…);在上述格式中Record_type是一种定义的记录类型。如果要定义记录类型的变量与已建立的某一关系表结构一致,可使用下列定义:Record_typenametable_name%ROWTYPE;8.3.1Oracle的数据类型第8章ORACLE数据库7(2)表PL/SQL中的表类似于C语言中的数组,并与其数组的处理方式类似,但实现方法不同。表必须定义该表类型,再声明一个属于该类型的变量,然后才能引用。定义表类型的格式如下:TYPETable_typeISTABLEOFtypeINDEXBYBINARY_INTEGER;一个PL/SQL表类似于数据库中的一个只有两列的表,一列的类型为BINARY_INTEGER,另一列的类型为定义中指定的类型。8.3.1Oracle的数据类型第8章ORACLE数据库88.LOB类型LOB类型用来存储大型的对象,它可以是一个二进制数值或字符型值,其最大长度为4GB。LOB可包含没有结构特征的数据,对它的访问比对LONG或LONGRAW数据的访问更为有效,对它的限制更少。9.自定义子类型PL/SQL中除可使用预定义的子类型外,用户自己可以定义子类型,其格式为:SUBTYPEnew_typeISoriginal_type;8.3.1Oracle的数据类型第8章ORACLE数据库910.使用%TYPE在许多情况下,PL/SQL变量可以用来处理存储在数据库表中的数据,因而该变量类型与表中相应字段的数据类型相同。可使用%TYPE说明某一变量与表中字段类型相同。其格式为:variety_nametable_name.field_name%TYPE;8.3.1Oracle的数据类型第8章ORACLE数据库10在Oracle中把值存储在常量和变量中,常量的值不能改变,变量的值可以改变。变量可分为字段变量和内存变量。用到的常量与变量必须定义,在定义时须指明它的数据类型。Oracle中的表达式与在第4章中介绍了SQL中的表达式相同,在此不重述。但在Oracle使用表达式时应注意NULL与其它数据的运算。NULL与任何类型数据作运算其结果均为NULL。8.3.2Oracle常量、变量和表达式第8章ORACLE数据库11但NULL具有以下特点:(1)等价于没有任何值;(2)与0、空字符串或空格不同;(3)在WHERE条件中,Oracle认为结果为NULL的条件为FALSE,带有这样条件的SELECT语句不返回行,并且不返回错误信息,但NULL和FALSE是不同的;(4)排序时比其他数据都大;(5)空值不能被索引。虽然在某列上建立了索引,但是对该列的空值查询来说,因为空值没有被索引,所以不能改善查询的效率。8.3.2Oracle常量、变量和表达式第8章ORACLE数据库12Oracle中提供了丰富的函数,除少数几个与SQL函数不同外,其余均相同。1.LENGTH与LENGTHB上述两个函数都是求出字符串的长度,但返回结果可能不一样。LENGTHB返回的长度单位为字节,而不是字符。LENGTH则返回的值为字符串中字符的个数。2.SUBSTR与SUBSTRBSUBSTR函数据是从目标字符串中某个字符开始取出指定字符个数的子串,而SUBSTRB函数据是从目标字符串中某个字节开始取出指定字节个数的子串。8.3.3Oracle内置函数第8章ORACLE数据库133.INSTR与INSTRBINSTR与INSTRB均是从指定字符串中的指定位置开始查找出现指定次数的字符串,它们的区别与SUBSTR与SUBSTRB区别相同。4.TO_DATETO_DATE将一个字符串转换成一个日期型数据。其格式为:TO_DATE(string,[‘format’])其中第一个参数是要转换的字符串,第二个参数为指定转换的格式,若未指定格式,则使用系统的缺省格式。8.3.3Oracle内置函数第8章ORACLE数据库145.NVL判断某一变量是否为空时可使用ISNULL或ISNOTNULL,但它不能用于函数。Oracle提供了函数NVL,其语法为:NVL(Expression1,Expression2)6.DECODE该函数类似于一系统嵌套函数,其语法为:DECODE(Base_expression,Compare_expression1,Value1,Compare_expression2,Value2,……,Compare_expressionn,Valuen,DEFAULT)8.3.3Oracle内置函数第8章ORACLE数据库157.UIDUID函数没有参数,它返回唯一标识当前数据库用户的整数。8.USER该函数没有参数,它返回当前Oracle用户的名字。9.分组函数分组函数忽略空值。在实际应用中,根据需要可利用NVL函数用零代替空值。8.3.3Oracle内置函数第8章ORACLE数据库161.哑表(DUAL)Oracle中经常要使用常量或伪列来说明函数的某些功能,或使用其它开发工具调用Oracle与表无关的一些函数、过程等时,如调用Oracle的系统日期函数SYSDATE,SELECT语句并不关心那一行在表中,只要一条记录就足够了。为此,Oracle提供了DUAL表。该表只包含一个字段和一条记录。使用它容易解决与表无关的一些查询问题。8.3.4Oracle的哑表与伪列第8章ORACLE数据库172.伪列(Pseudo_column)一个伪列是在查询时产生一个值的“列”,它的处理方式与表中一个字段的处理方式类似,但它不是表中的一个真正字段。Oracle中目前使用下列伪列:(1)SYSDATESYSDATE是一个内置函数,它返回Oracle系统的日期与时间。在开实际系统发时,应使用该函数,而不应使用开发工具提供的函数,调用用户端机器上的日期与时间。(2)UID与USER这是在本章前面介绍过的两个函数。(3)NULL表示空值。应注意它与其它数据的运算及对一些函数值的影响。具体请参阅本章前面的讨论。8.3.4Oracle的哑表与伪列第8章ORACLE数据库18(4)CURRVAL与NEXTVAL这两个伪列与序号一起使用,表示返回序号的当前值和下一个值。具体使用方法参见第5节。(5)LEVEL该伪列主要用于对表执行层次树遍历的SELECT语句中,它返回树的当前层次。(6)ROWID该伪列用于在查询的选择列表中,它返回特定记录的行标识符,其返回值为一个ROWID类型的数值。(7)ROWNUM该伪列返回查询中的当前行序号,主要用于限制要处理的记录总数。它常用于SELECT中的WHERE子句和UPDATE语句的SET子句中。8.3.4Oracle的哑表与伪列
本文标题:oracle基础教程
链接地址:https://www.777doc.com/doc-2884836 .html