开发者

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

目录
  • 前言
  • 一、字符类型(Character)
    • 1、CHAR:定长字符数据类型
    • 2、VARCHAR2:变长字符数据类型
    • 3、NCHAR:存储Unicode字符集的固定长度字符串
    • 4、NVARCHAR2:存储Unicode字符集的可变长度字符串
  • 二、数值类型(Numeric)
    • 1、NUMBER:用于存储整型或浮点型数值。
    • 2、DECIMAL:存储数字,是NUMBER的一个别名
    • 3、INTEGER 或 INT :整数类型
    • 4、FLOAT:浮点数类型
    • 5、REAL:实数类型
  • 三、日期和时间类型(Date and Time)
    • 1、DATE:存储日期和时间,精确到秒
    • 2、TIMESTAMP:时间戳数据类型
    • 3、INTERVAL:用于表示两个时间点之间的时间间隔
  • 四、二进制大对象类型(Binary Large Object)
    • 1、BLOB:存储二进制对象
    • 2、CLOB:存储大文本数据
    • 3、NCLOB:存储Unicode字符集的字符大对象
  • 五、其他类型
    • 1、RAW:存储原始二进制数据
    • 2、LONG:存储超长字符串数据
    • 3、LONG RAW:存储可变长度的二进制数据
    • 4、ROWID:用于唯一标识数据库中的行
    • 5、BFILE:在数据库外部存储大型二进制对象文件
    • 6、BOOLEAN:布尔类型
    • 7、XML:用于存储XML文档数据。
    • 8、用户自定义类型(User Defined Type)
  • 六、数据类型选择的注意事项
    • 1、字符类型
    • 2、数值类型
    • 3、日期和时间类型
  • 总结 

    前言

    在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 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。

    • 如果p和s都未指定,则NUMBER可以存储任意精度和小数点后的位数的数值。
    • 如果指定了p但未指定s,则默认为整数(s=0)。
    • 如果指定了p和s,则表示该数值的总位数为p,小数点后的位数为s。
    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(5):与NUMBER(5)等价。
    • DECIMAL(5, 2):与NUMBER(5, 2)等价。

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

    3、INTEGER 或 INT :整数类型

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

    CREATE TABLE example_www.devze.comtable (
        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 Tijavascriptme)

    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 (
        rawjs_data_column RAW(10)
    );
    

    存储二进制数据,最大长度为 n 字节,n&jsnbsp;的取值范围是 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、字符类型

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

    2、数值类型

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

    3、日期和时间类型

    • 对于一般的日期和时间存储,使用 DATE
    • 对于需要更高精度的日期和时间,使用 TIMESTAMP

    总结 

    到此这篇关于Oracle数据库常见字段类型大全以及超详细解析的文章就介绍到这了,更多相关Oracle数据库字段类型大全内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜