it编程 > 数据库 > Oracle

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

42人参与 2025-04-07 Oracle

前言

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

一、字符类型(character)

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

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

create table example_table (
    example_column char(10)
);

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

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

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

create table example_table (
    example_column varchar2(20)
);

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

3、nchar:存储unicode字符集的固定长度字符串

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

create table example_table (
    nchar_column nchar(10)
);

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

4、nvarchar2:存储unicode字符集的可变长度字符串

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

create table example_table (
    nvarchar2_column nvarchar2(20)
);

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

二、数值类型(numeric)

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

用于存储整型或浮点型数值,可以指定精度(有效数字的位数)和小数位数。如果没有指定精度,oracle将使用 38 作为默认精度。number 可以存储非常精确的数值,适合需要精确计算的场景(如金融计算)。

创建时常用 number(p, s) ,存储精度为 p 、小数位数为 s 的数值,即 p 表示数字的总长度,取值范围是1到38,s 表示小数位数,取值范围是-84到127。

create table example_table (
    numeric_column number(10, 2)
);

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

2、decimal:存储数字,是number的一个别名

在oracle数据库中,decimal和number是两种常用的数值类型,它们都用于存储数字,但在语法和使用上有一些细微的差别。实际上,decimal在oracle中是number的一个别名,它们在功能上几乎是等价的。

create table example_table (
    numeric_column decimal(10, 2)
);

与number的语法完全相同,p和s的含义也相同。

由于decimal和number在oracle中是完全等价的,你可以根据个人习惯或团队规范选择使用哪一个。在实际开发中,建议统一使用number,因为它是 oracle 官方推荐的数据类型,且在文档和社区中更常见。

3、integer 或 int :整数类型

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

create table example_table (
    integer_column integer
);
create table example_table (
    integer_column int
);

4、float:浮点数类型

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

create table example_table (
    float_column float
);

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

5、real:实数类型

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

create table example_table (
    real_column real
);

存储单精度浮点数,比 float 精度稍低,是 ansi sql 兼容的数据类型。

三、日期和时间类型(date and time)

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

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

create table example_table (
    date_column date
);

2、timestamp:时间戳数据类型

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

create table example_table (
    timestamp_column timestamp
);

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

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

create table example_table (
    interval_column interval day to second
);

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

四、二进制大对象类型(binary large object)

1、blob:存储二进制对象

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

create table example_table (
    binary_data_column blob
);

2、clob:存储大文本数据

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

create table example_table (
    large_text_column clob
);

3、nclob:存储unicode字符集的字符大对象

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

create table example_table (
    nclob_column nclob
);

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

五、其他类型

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

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

create table example_table (
    raw_data_column raw(10)
);

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

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

用于存储超长字符串数据,最大长度为2gb。但在现代oracle版本中,建议使用 clob 或 nclob 替代 long 类型。

create table example_table (
    long_column long
);

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

3、long raw:存储可变长度的二进制数据

用于存储可变长度的二进制数据,最大长度为2gb。同样在现代oracle版本中,建议使用 blob 替代 long raw 类型。

create table example_table (
    long_raw_column long raw
);

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

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

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

create table example_table (
    row_id_column rowid
);

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

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

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

create table example_table (
    external_file_column bfile
);

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

6、boolean:布尔类型

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

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文档数据。

create table example_table (
    xml_column xmltype
);

存储 xml 数据,使用 xmltype 数据类型。

8、用户自定义类型(user defined type)

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

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

1、字符类型

2、数值类型

3、日期和时间类型

总结 

到此这篇关于oracle数据库常见字段类型大全以及超详细解析的文章就介绍到这了,更多相关oracle数据库字段类型大全内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

重新安装Oracle前的系统环境准备工作

04-06

C#程序连接Oracle数据库的详细步骤和代码

04-06

获得Oracle认证OCA证书的考试内容与备考策略

04-07

卸载Oracle后残留文件和注册表清理的彻底方法

04-07

解决Oracle卸载过程中服务无法停止的问题

04-05

Linux系统中Oracle安装的环境配置与操作流程

04-05

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论