No Comments
写于2005年11月6日
Chapter4 Data Structure
数据类型
数据类型(datatype)的列(column)或存储过程中变量的一个属性。分三个基本类型:字符
数据类型,数字数据类型,表示其他类型的数据类型。
字符数据类型 Character datatype
CHAR 存储固定长度的字符值,1-2000,默认为1
VARCHAR2 存储可变长度的字符串,指定的是对该变量复制的最大长度,最多4000个字符
NCHAR和NVARCHAR2 分别存储固定长度与可变长度的字符数据,但使用和数据库其他类型
不同的字符集,创建DB时,需指定所使用的字符集
LONG 可存2GB的字符数据,但很多限制,Oracle推荐使用CLOB和NCLOB类型
CLOB和NCLOB 可存4GB字符数据,NCLOB可存NLS(National LanguageSet 本地语言集)
数字数据类型
NUMBER 自动获得38位精度,有两个限定符:
column NUMBER(precison,scale)
scale 小数点右边的位数 default:0
precison 精度 1-38
scale设为负数,Oracle将把该数取舍到小数点左边的指定位数
日期数据类型
Oracle标准日期格式:DD-MON-YY HH:MI:SS
修改实例参数NLS_DATE_FORMAT可改日期格式,支持日期运算,整数表示天,小数表示小时,分,
秒的组合
其他的数据类型
RAW和LONG RAW 主要用于对数据库进行解释,以位的形式存储数据,RAW 2k,LONG RAW 2G
ROWID 伪列
LOB 大型对象存储 4GB
CLOB 字符数据
NCLOB 本地语言字符集数据
BLOB 以二进制信息保存数据
BFILE
XML Type
Oracle SQL的连接操作符是“||”,将两个字符值连接
Oracle三个基本数据结构:表 视图 索引
表
9i可用一个值列表来定义分区,在Data Warehouse中很有用,进行性能优化
可对table和index进行相同的分区,这样表分区和索引分区都映射到相同的行集合。这种类
型的划分成为均分(equipartitioning)。可通过对分区表指定索引为LOCAL索引来自动实现
索引
Oracle中的index是DB内部使用的物理结构。键是关于逻辑实体的术语。一般其值存储在索引中
Oracle 8以后支持5个约束类型
- NOT NULL
- 唯一性
- 主键
- 外键
- 校验
尽量使用约束而不是触发器(trigger)
触发器 trigger
3个事件可以引起触发器:UPDATE, INSERT, DELETE
trigger实在行一级被定义的。
trigger的触发器有3个时机:在执行触发事件之前,在执行触发时间之后,非触发事件
注意:INSTEAD OF trigger
every trigger has a trigger restriction that is a bool expression.
触发器错误可能引起变异表(mutating table)和约束表(constraining table)
Oracle 8:取消了某些触发器激活的约束引起的错误
Oracle 8i还引入了:
database-level event trigger
schema-level event trigger