数据库程序设计9 表结构设计——数据结构设计

目录

Oracle数据类型

数值类型

number

binary_float和binary_double

特殊值

其他数值类型

字符类型

char

VARCHAR2

NCHAR/NVARCHAR2

日期类型

DATE类型

大对象

lob对象

Rowid\URowid 类型


Oracle数据类型

数值类型

number

一般用于数值运算的。

Number(precision,scale)

precision:精度。也称为总位数,取值范围1~38,默认值为38,也可以用字符*表示38。

版本10之后的新类型:

binary_floatbinary_double

在Oracle10g之前的版本中没有这两种类型。他们就是IEEE标准浮点数,用于近似数值,没有NUMBER类型精确。

特殊值

BINARY_FLOAT_NAN 非BINARY_FLOAT类型的数字(NaN) 
BINARY_FLOAT_INFINITY BINARY_FLOAT类型的无穷大(INF) 
BINARY_DOUBLE_NAN 非BINARY_DOUBLE类型的数字(NaN) 
BINARY_DOUBLE_INFINITY BINARY_DOUBLE类型的无穷大(INF) 


其他数值类型

效率不同,效率会比较高。

字符类型

Oracle中的字符数据类型包括CHAR、 VARCHAR2以及带“N”的相应变体(NCHAR 和NVARCHAR2),这些字符数据类型能存储 2000字节或4000字节的文本。这些文本会由数 据库根据需要在不同的字符集(character set)之间进行转换。 
CHAR、VARCHAR2、NCHAR、 NVARCHAR2都是以同样的格式进行存储。

纯英文不需要n开头的,处理中文日文等需要考虑带n的。

char

CHAR (size[ BYTE | CHAR] )

VARCHAR2

VARCHAR2 (size[ BYTE | CHAR] )

VARCHAR2是变长字符串类型,不会用空格填充至最大长度。此类型最多可存储4000字节的信息。

NCHAR/NVARCHAR2

带N表示Unicode字符集,兼容中文。

NVARCHAR2和NCHAR与相应的VARCHAR2和CHAR的区别在于:

  • 文本采用数据库的国家字符集来存储和管理,而不是默认字符集
  • 长度总是字符数,而CHAR/VARCHAR2可能会指定是字节还是字符

日期类型

Oracle固有数据类型DATE、TIMESTAMP和 INTERVAL是紧密相关的。DATE和 TIMESTAMP类型可以存储固定日期/时间。 INTERVAL类型可以存储一个时间量。 

DATE类型

DATE类型是一个7字节的定宽日期/时间数据 类型。它总是包含7个属性,包括:世纪、世纪中的哪一年、月份、月份中的哪一天、小时、分钟和秒。Oracle使用一种内部格式来表示这些信息。 

存储中,oracle将不同字段分开存。在使用时,我们经常会将年月日分开使用。

大对象

Oracle Database 10g系统提供了4种大对象 (large object,lob)类型。这4种大对象类型的 特点分别如下:

  • blob类型:二进制lob类型,主要用于存储二进制 数据。
  • clob类型:字符lob类型,可以用来存储各种字符 数据。
  • nclob类型:国际语言字符lob类型,使用多字节存 储各种语言的字符,主要用于存储非英文字符。
  • bfile类型:二进制file类型,用于存储指向数据库 系统外的文件系统中的文件的指针。这些外部文件 可以储存在硬盘上、DVD或CD等介质上。 

尽量使用lob类型来处理,因为兼容。

lob对象

每一个lob对象都由两部分组成:指针(定位器)和数据内容。

LOB数据的处理

对于每一个lob列,Oracle系统将保存一个定 位器值,以便找到该记录存储的外部数据。 在向包含了lob值的表中插入记录时,可以用 函数来告诉Oracle为内部存储的lob列创建一 个空定位器。

注意,空定位器值与null值不同。如果一个内 部存储的lob列值为null,那么在更新为非null 值之前,必须将其设置为空定位器.

在Oracle系统中,可以采用以下方式设置Lob 数据的空定位器: 

  • blob:empty_blob()
  • clob:empty_clob()
  • bfile:bfilename() 

提高大对象的使用效率 

Database 10g系统提供了许多提高使用大对象效率 的方法。这些方法主要包括:

  • 数据分区技术
  • 压缩数据技术 
  • 并行处理技术 
  • 物化视图技术 
  • RAC技术 (实时应用集群)

数据分区技术

在Oracle Database 10g系统中,可以通过采 用分区技术,将大量的业务数据分区成比较小的数据。但是,这种分区技术对于终端用户来说是不透明的。在Oracle Database 10g系统 中,从终端用户的角度来看,这里只有一个表。

压缩数据技术 

如果业务数据的增长速度超过了系统设计的能 力,那么会由于数据量过大带来一系列查询性 能上的问题。这时,可以使用Oracle database 10g系统提供的压缩数据功能来压缩业务数据,从而降低数据量。

并行技术 

在Oracle Database 10g系统中,还可以通过并行处 理的方式来提高查询的性能。并行处理适用于大量数 据需要处理的情况,例如,扫描包含大量数据的表、 连接查询多个表、创建大表的索引和扫描分区索引等。 

物化视图技术 

物化视图具有视图的特征,但是与视图也不完 全相同。可以基于select语句创建物化视图, 但是物化视图可以物理地保留和存储数据。使用物化视图,可以执行各种查询操作、可以被 分区、可以被压缩、可以被并行处理,甚至可 以在其上面创建索引。

Rowid\URowid 类型

ROWID是数据库中一行的地址。ROWID中编入了足够多的信息,足以在磁盘上找到行,以及标识ROWID所指向的对象。ROWID并不真正存储在行中,而是行的一个推导属性,基于行的物理地址生成。

UROWID是ROWID的“近亲”。它用于比如索引组织表(IOT) 和通过异构数据库网关访问的没有固定ROWID的表。UROWID基于行的主键生成,是行主键值的一个表示。但是,UROWID并不作为一个单独的列存在,而只是作为现有列的一个函数。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值