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数据库中有着广泛的应用,根据不同的存储需求和数据类型特性,用户可以选择最适合的数据类型来定义表结构或变量类型。