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
相关推荐
随心Coding8 分钟前
【MySQL】存储引擎有哪些?区别是什么?
数据库·mysql
m0_748237051 小时前
sql实战解析-sum()over(partition by xx order by xx)
数据库·sql
dal118网工任子仪2 小时前
61,【1】BUUCTF WEB BUU XSS COURSE 11
前端·数据库·xss
萌小丹Fighting3 小时前
【Postgres_Python】使用python脚本批量创建和导入多个PG数据库
数据库
羊小猪~~4 小时前
MYSQL学习笔记(四):多表关系、多表查询(交叉连接、内连接、外连接、自连接)、七种JSONS、集合
数据库·笔记·后端·sql·学习·mysql·考研
村口蹲点的阿三6 小时前
Spark SQL 中对 Map 类型的操作函数
javascript·数据库·hive·sql·spark
暮湫7 小时前
MySQL(1)概述
数据库·mysql
fajianchen7 小时前
记一次线上SQL死锁事故:如何避免死锁?
数据库·sql
chengpei1478 小时前
实现一个自己的spring-boot-starter,基于SQL生成HTTP接口
java·数据库·spring boot·sql·http