oracle常用数据类型说明


Oracle数据库中的常用数据类型非常丰富,它们用于定义表中列的数据类型,以及存储过程、函数、触发器等中的变量和参数的数据类型。以下是一些Oracle数据库中常用的数据类型及其简要说明:

### 数值型数据类型

1. **NUMBER**:

- 用于存储整数或带有小数点的数字。

- 可以指定精度(precision)和标度(scale)。例如,NUMBER(5,2)表示最多有5位数字,其中2位是小数。

- 最多可以存储38位有效数字。

2. **INTEGER**:

- 是NUMBER类型的一种特殊形式,用于存储不带小数的整数。

- 占用较小的存储空间,适用于存储空间要求较高的场景。

- 最大存储38位整数,会四舍五入。

3. **FLOAT**:

- 浮点数类型,用于存储近似值。

- 具有比NUMBER更大范围和较低的精度要求。

- 可以指定二进制位数(precision)和十进制位数(scale)。

4. **BINARY_FLOAT** 和 **BINARY_DOUBLE**:

- 分别用于存储单精度和双精度浮点数。

- 提供了更高精度的科学计算和工程领域应用。

### 字符型数据类型

1. **CHAR**:

- 定长字符串,长度固定。

- 如果存储的字符串长度小于指定长度,则会用空格填充以达到其最大长度。

- 最多可以存储2000字节的信息。

2. **VARCHAR2**:

- 变长字符串,长度会自动调整。

- 不会使用空格填充至最大长度,可以节省存储空间。

- 最多可以存储4000字节的信息。

3. **NCHAR** 和 **NVARCHAR2**:

- 分别用于存储固定长度和可变长度的Unicode字符串。

- 支持多语言文本,特别是那些需要特殊字符集的语言。

4. **CLOB** 和 **NCLOB**:

- 用于存储大量文本数据,CLOB存储单字节和多字节字符数据,NCLOB存储Unicode类型的数据。

- 最多可以存储(4 gigabytes-1) * (database block size)大小的文本数据。

### 日期和时间型数据类型

1. **DATE**:

- 用于存储日期和时间信息,包括年、月、日、时、分、秒。

- 占用7个字节的存储空间。

2. **TIMESTAMP**:

- 是DATE类型的扩展,可以存储到毫秒级别。

- 带小数秒的TIMESTAMP在小数点右边最多可以保留9位。

3. **TIMESTAMP WITH TIME ZONE** 和 **TIMESTAMP WITH LOCAL TIME ZONE**:

- 这两个类型进一步扩展了TIMESTAMP的功能,分别用于存储带有时区信息的日期时间。

### 二进制数据类型

1. **BLOB**:

- 二进制大对象,用于存储非结构化的二进制数据,如图片、音频、视频等。

- 最多可以存储(4 gigabytes-1) * (database block size)的二进制数据。

2. **RAW** 和 **LONG RAW**:

- RAW类型用于存储可变长度的二进制数据,最多2000字节。

- LONG RAW类型能存储2GB的原始二进制数据,但建议使用BLOB来代替。

### 其他数据类型

- **ROWID** 和 **UROWID**:

- 特殊的列类型,用于表示行的物理位置或行主键的表示。

- ROWID与磁盘驱动的特定位置有关,是获得行的最快方法,但不建议在事务中使用。

- UROWID是基于主键生成的,使用更安全。

- **BOOLEAN**:

- 布尔类型,用于存储逻辑值TRUE、FALSE或NULL。

- **XMLType**:

- 用于存储XML数据。

这些数据类型在Oracle数据库中有着广泛的应用,根据不同的存储需求和数据类型特性,用户可以选择最适合的数据类型来定义表结构或变量类型。