Oracle 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 Oracle 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。

文章目录

一、字符类型(Character)

1、CHAR:定长字符数据类型

存储固定长度的字符串,最大长度为2000字节,如果存储的字符串长度小于定义的长度,Oracle会自动用空格填充至指定长度。

sql 复制代码
CREATE TABLE example_table (
    example_column CHAR(10)
);

使用 CHAR(n) 是存储长度固定为 n 个字节,如果存储的数据长度小于 n,则使用空格填充,n 的取值范围是 1 到 2000。当插入数据时,example_column 列将始终占用 10 个字节的存储空间,无论实际存储的字符长度是多少。

2、VARCHAR2:变长字符数据类型

存储可变长度的字符串,最大长度为4000字节,该类型在实际使用中非常灵活,因为它只占用实际字符串所需的存储空间,而不需要额外的空格填充。

sql 复制代码
CREATE TABLE example_table (
    example_column VARCHAR2(20)
);

此列仅存储实际输入字符所需的字节数,最大不超过 20 个字节,最大长度为 n 个字节。n 的取值范围是 1 到 4000。

3、NCHAR:存储Unicode字符集的固定长度字符串

存储 Unicode 字符集的固定长度字符串,最大长度为2000字节(在某些版本中可能为1000字节),适用于需要存储国际化字符集的数据。

sql 复制代码
CREATE TABLE example_table (
    nchar_column NCHAR(10)
);

定义一个长度为 10 的 NCHAR 类型的列,用于存储定长的 Unicode 字符数据。存储的字符将根据数据库的国家字符集进行编码,通常用于存储多语言数据。

4、NVARCHAR2:存储Unicode字符集的可变长度字符串

存储 Unicode 字符集的可变长度字符串,最大长度为4000字节(在某些版本中可能为1000字节),同样适用于国际化字符集的数据存储。

sql 复制代码
CREATE TABLE example_table (
    nvarchar2_column NVARCHAR2(20)
);

定义一个长度为 20 的 NVARCHAR2 类型的列,用于存储变长的 Unicode 字符数据。

二、数值类型(Numeric)

1、NUMBER:用于存储整型或浮点型数值。

用于存储整型或浮点型数值,可以指定精度(有效数字的位数)和小数位数。如果没有指定精度,Oracle将使用 38 作为默认精度。

创建时常用 NUMBER(p, s) ,存储精度为 p 、小数位数为 s 的数值,即 p 表示数字的总长度,s 表示小数位数。

sql 复制代码
CREATE TABLE example_table (
    numeric_column NUMBER(10, 2)
);

可以存储最大长度为 10 位的数字,其中包含 2 位小数,如 1234567.89。

2、INTEGER 或 INT :整数类型

是NUMBER的一个子集,用于存储小的整数,等同于 NUMBER(38)

sql 复制代码
CREATE TABLE example_table (
    integer_column INTEGER
);
sql 复制代码
CREATE TABLE example_table (
    integer_column INT
);

3、FLOAT:浮点数类型

是NUMBER的一个特殊表示,用于存储双精度浮点数。

sql 复制代码
CREATE TABLE example_table (
    float_column FLOAT
);

float_column FLOAT:存储单精度浮点数。

4、REAL:实数类型

同样是NUMBER的一个特殊表示,但精度更高,可达63位。

sql 复制代码
CREATE TABLE example_table (
    real_column REAL
);

存储单精度浮点数,比 FLOAT 精度稍低,是 ANSI SQL 兼容的数据类型。

三、日期和时间类型(Date and Time)

1、DATE:存储日期和时间,精确到秒

储日期和时间,包括年、月、日、时、分、秒,精确到秒,范围从公元前 4712 年 1 月 1 日到公元 9999 年 12 月 31 日。Oracle在内部使用7个字节来保存日期数据。

sql 复制代码
CREATE TABLE example_table (
    date_column DATE
);

2、TIMESTAMP:时间戳数据类型

存储日期和时间,精确到秒的小数部分,可精确到纳秒,提供了比 DATE 更高的精度。

sql 复制代码
CREATE TABLE example_table (
    timestamp_column TIMESTAMP
);

3、INTERVAL:用于表示两个时间点之间的时间间隔

用于表示两个时间点之间的时间间隔

sql 复制代码
CREATE TABLE example_table (
    interval_column INTERVAL DAY TO SECOND
);

存储时间间隔,精确到秒,范围从天到秒。

四、二进制大对象类型(Binary Large Object)

1、BLOB:存储二进制对象

存储二进制大对象,可存储多达 4GB 的二进制数据,适用于存储图片、音频、视频等二进制文件。

sql 复制代码
CREATE TABLE example_table (
    binary_data_column BLOB
);

2、CLOB:存储大文本数据

用于存储大量字符数据,可存储多达 4GB 的字符数据,适用于存储较长的文本,如文章、文档等。

sql 复制代码
CREATE TABLE example_table (
    large_text_column CLOB
);

3、NCLOB:存储Unicode字符集的字符大对象

用于存储Unicode字符集的字符大对象数据,最大长度同样为4GB。

sql 复制代码
CREATE TABLE example_table (
    nclob_column NCLOB
);

存储大量的 Unicode 字符数据,类似于 CLOB,但使用国家字符集。

五、其他类型

1、RAW:存储原始二进制数据

用于存储原始二进制数据,如多媒体图像、声音等。最大长度为2000字节。

sql 复制代码
CREATE TABLE example_table (
    raw_data_column RAW(10)
);

存储二进制数据,最大长度为 n 字节,n 的取值范围是 1 到 2000。常用于存储加密数据或 Oracle 内部使用的数据。

2、LONG:存储超长字符串数据

用于存储超长字符串数据,最大长度为2GB。但在现代Oracle版本中,建议使用 CLOB 或 NCLOB 替代 LONG 类型。

sql 复制代码
CREATE TABLE example_table (
    long_column LONG
);

定义一个 LONG 类型的列,用于存储较长的字符数据,最大长度为 2GB,但使用时需要注意其性能和功能限制,因为它不支持很多字符操作函数。

3、LONG RAW:存储可变长度的二进制数据

用于存储可变长度的二进制数据,最大长度为2GB。同样在现代Oracle版本中,建议使用 BLOB 替代 LONG RAW 类型。

sql 复制代码
CREATE TABLE example_table (
    long_raw_column LONG RAW
);

存储二进制数据,最大长度也是 2GB,适合存储一些大型的二进制数据,但功能也比较受限,例如不支持很多二进制操作函数。

4、ROWID:用于唯一标识数据库中的行

用于唯一标识数据库中的行,是一个二进制数据类型,占用固定的10个字节。

sql 复制代码
CREATE TABLE example_table (
    row_id_column ROWID
);

存储数据库中行的物理地址,用于唯一标识行,长度为 18 个字节。

5、BFILE:在数据库外部存储大型二进制对象文件

用于在数据库外部存储大型二进制对象文件,最大长度为4GB。Oracle可以读取和查询BFILE,但不能直接写入。

sql 复制代码
CREATE TABLE example_table (
    external_file_column BFILE
);

存储指向外部文件的指针,文件存储在数据库服务器的文件系统中,而不是数据库内部。

6、BOOLEAN:布尔类型

布尔类型,用于存储真或假两种状态。

sql 复制代码
CREATE TABLE example_table (
    boolean_column NUMBER(1) CHECK (boolean_column IN (0, 1))
);

由于 Oracle 没有内置的 BOOLEAN 类型,使用 NUMBER(1) 并通过 CHECK 约束来模拟布尔值,其中 1 表示 TRUE,0 表示 FALSE。

7、XML:用于存储XML文档数据。

sql 复制代码
CREATE TABLE example_table (
    xml_column XMLTYPE
);

存储 XML 数据,使用 XMLTYPE 数据类型。

8、用户自定义类型(User Defined Type)

允许用户根据自己的需求定义新的数据类型。

六、数据类型选择的注意事项

1、字符类型

  • 当数据长度固定时,使用 CHAR
  • 当数据长度不固定时,使用 VARCHAR2 以节省空间。
  • 对于大量文本数据,使用 CLOB

2、数值类型

  • 对于整数,可使用 INTEGERNUMBER
  • 对于小数,使用 NUMBER(p, s),根据精度需求确定 ps 的值。

3、日期和时间类型

  • 对于一般的日期和时间存储,使用 DATE
  • 对于需要更高精度的日期和时间,使用 TIMESTAMP
相关推荐
松涛和鸣29 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦1 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·2 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德2 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql