Oracle 数据类型

2025 年 2 月 24 日 | 阅读需 7 分钟

本文将详细阐述 Oracle 数据类型的概念。

引言

Oracle 表用于存储由行和列组成的数据。列用于存储数据的属性。表中的每一列都有一个列名和一个数据类型。数据类型用于定义存储在表中的数据类型。

例如:某些数据类型将列值限制为字符,而其他数据类型则允许输入数字。

Oracle Data Types

Oracle 中可用的数据类型属于以下类别

类别可用数据类型
CharacterCHAR (n) , VARCHAR, VARCHAR2 (n) , NCHAR (n), NVARCHAR2 (n), LONG, RAW, LONGRAW
数字Number, Float
Date/TimeDate, Timestamp
LOB's (Large Objects)BFILE, BLOB, CLOB, NCLOB

字符数据类型:用于声明表中包含字母数字数据的列。

以下是各种字符数据类型的列表

  • CHAR (n) 数据类型:用于存储固定长度的字符串。char (n) 数据类型的默认长度为 1。它包含字母、数字或标点符号。
    例如:如果 name 字段的数据类型指定为 CHAR (23),并且某个记录的名称信息为 10 个字符,则剩余的 10 个字符将用空格填充;如果某个记录的名称信息超过 23 个字符,则会生成
  • VARCHAR 数据类型:用于存储可变长度的字符串。此数据类型现已弃用。可以使用 VARCHAR2 (n) 代替。
  • VARCHAR2 (n) 数据类型:用于存储可变长度的字符串。在声明 VARCHAR2 数据类型的列时,必须指定数据的大小。大小声明不是可选的,与 char 数据类型不同。VARCHAR2 (n) 列的最大大小为 4000 个字符。它与 char 数据类型不同之处在于,当列声明为 VARCHAR2 (n) 时。
    例如:如果 name 字段的数据类型指定为 VARCHAR2 (23),并且某个记录的名称信息为 10 个字符,则剩余的 10 个字符不会用空格填充。
  • NCHAR (n) 数据类型:用于存储固定长度的国家字符集。此字符集使开发人员和管理员能够扩展标准数据库字符集,以存储非英语语言和字符集中的数据。创建具有 NCHAR 列的表时,将以字符或字节定义列的长度。如果数据库国家字符集是固定宽度字符集,则将列大小声明为字符数;如果是可变宽度字符集,则以字节为单位声明列大小。最大列大小为 2000 字节。
  • NVARCHAR2 (n) 数据类型:此数据类型用于在数据库的国家字符集中存储可变长度字符串。在创建具有 NVARCHAR2 (n) 数据类型的列时,您必须以字符或字节指定列的长度。
  • LONG (n) 数据类型:此数据类型用于存储大量可变长度的字符串。
  • RAW 数据类型:用于存储二进制数据,如文档、图形、声音等。
  • LONGRAW 数据类型:用于存储二进制数据,如声音、图形、文档等。

数字数据类型:数字数据类型用于存储数值数据,如整数、浮点数和实数。它提供了存储数值数据的更大灵活性。

以下是各种数字数据类型的列表

  • Number (p,s):用于存储零、正数、负数、固定点数和浮点数。Number 数据类型包含精度 (p) 和标度 (s)。
    精度值包含数字的总位数。精度值的范围从 1 到 38 位。标度值可以是负数,它会将数字四舍五入到小数点左边的位数;也可以是正数,表示小数点左边的位数。

以下列表显示了 Oracle 如何使用不同的精度和标度存储数据的示例。

给定值用户输入的类型存储的值描述
245678.39NUMBER245678.39没有精度或标度的数字是 NUMBER (38),即 p = 38, s =0
245678.39NUMBER(8)245678这是一个整数,具有 8 位数字精度,标度 =0
245678.39NUMBER(5)超出精度值大于指定的精度,即 5 允许该列。
245678.39NUMBER(8,2)245678.39允许总共 8 位数字,小数点右侧有 2 位数字。
245678.39NUMBER(8,1)245678.4将数字四舍五入到一位小数,因为 s = 1
245678.39NUMBER(2,8)超出精度当 s > p 时,必须有 (s - p)。数字前面有零。例如:0.00000039
245678.39NUMBER(6,-2)2456700如果 s 为负数,则实际数据将四舍五入到小数点左边的指定位数。
245678.39NUMBER(-6,2)精度指定符超出范围P 的范围是 1 到 38。
245678.39NUMBER(*,1)245678.4将数字四舍五入到一位小数,但 s 不能用于标度。
  • FLOAT 数据类型
    Float 数据类型是 NUMBER 数据类型的子类型。其值可以在没有精度或有精度的情况下定义。标度的值根据数据解释,但无法确定。float 数据类型的范围是从 1 到 22 字节。

日期/时间数据类型:用于在列中存储日期和时间信息。

以下是各种日期/时间数据类型的列表

  • Date 数据类型:此数据类型用于存储日期信息,它以预定义的内部 Oracle 格式存储数据,该格式不仅包含日、月、年,还包含小时和秒。默认日期格式为 'DD-MON-YY'。
    例如:'08-SEP- 23'
    如果您插入没有时间的日期值,则默认时间为 12:00:00 AM;如果您插入没有日期的时间值,则默认日期为当前月份的第一天。
    Oracle DATE 数据类型使用 7 个字节用于数据存储,1 个字节用于日期长度。
Byte7Byte6Byte5Byte4Byte3Byte2Byte1
分钟小时Day月份年份世纪
  • Timestamp 数据类型:它是 DATE 数据类型的扩展。它允许将时间存储为带有小数秒的日期。

用于创建 Timestamp 数据类型的语法如下

fract_seconds_precision 定义属于 datetime 字段的秒的小数部分的位数。该值范围可以从 0 到 9。其默认值为 6。

TIMESTAMP 数据类型的各种变体列表

  • TIMESTAMP WITH TIME ZONE 是 TIMESTAMP 数据类型的一个变体,它还包括时区。它给出协调世界时 (UTC) 和本地时间之间的差异。
  • o TIMESTAMP WITH LOCAL TIME ZONE 是 TIMESTAMP 数据类型的另一个变体。存储在此数据类型中的数据被规范化为数据库时区。服务器以用户本地会话时区返回数据,时区差异不作为列数据的一部分存储。
  • Interval Year to Month:此数据类型用于将时间存储为年和月的间隔。

以下语法用于创建 Interval Year to Month

year_precision 指定 YEAR datetime 字段的位数。默认值为 2。

这表示 202 年 5 个月的间隔

这表示 125 个月的间隔。

  • Interval Day to Second:它允许将时间存储为天到小时、分钟和秒的间隔。

大型对象数据类型

以下是各种大型对象数据类型的列表

  • BFOB 数据类型:二进制大型对象数据类型用于以文件形式存储二进制数据,如音频、图像、视频等,最多可存储 4GB 的二进制数据。
  • CLOB 数据类型:字符大型对象数据类型用于存储大量字符数据。当数据大小超过 4000 个字符时,它可用于代替 VARCHAR2 列来存储应用程序中的文本。它可以存储多达 4GB 的二进制数据。
  • BFILE 数据类型:声明为列指针的二进制文件数据类型指向存储在数据库服务器文件系统上的大型二进制数据,如图像、视频文件等。二进制数据的大小受操作系统限制。它可以存储多达 4GB 的二进制数据。
  • NCLOB 数据类型:它可以存储多达 4GB 的二进制数据。

Oracle 数据类型选择题

1. 最大精度为 38 位小数的浮点数据类型称为?

  1. DECIMAL(prec, scale)
  2. DOUBLE PRECISION
  3. NUMBER(pre, scale)
  4. BINARY_DOUBLE

答案:c

解释:NUMBER (pre, scale)

2. 在 Oracle 中,以下哪种数据类型不用于存储大块文本?

  1. Binary large objects (二进制大型对象)
  2. Character large objects (字符大型对象)
  3. Binary files (二进制文件)
  4. BINARY_DOUBLE

答案:d

解释:在 Oracle 中,有 4 种大型对象数据类型。

  • Binary large objects (二进制大型对象)
  • Character large objects (字符大型对象)
  • Binary files (二进制文件)
  • National Character Large Object (国家字符大型对象)

3. 在 Oracle 中,DATE 数据类型用于多少字节的数据存储?

  1. 4 字节
  2. 7 字节
  3. 2 字节
  4. 20 字节

答案:c

解释:Oracle DATE 数据类型使用 7 个字节进行数据存储

Byte7Byte6Byte5Byte4Byte3Byte2Byte1
分钟小时Day月份年份世纪

4. NCHAR (n) 数据类型在 Oracle 中的最大大小是多少?

  1. 400 字节
  2. 40 字节
  3. 2000 字节
  4. 20 字节

答案:c

解释:NCHAR (n) 数据类型的最大列大小为 2000 字节。

5. 在 Oracle 中,哪种数据类型用于存储固定长度的字符串?

  1. VARCHAR(n)
  2. NCHAR(n)
  3. CHAR(n)
  4. VARCHAR2(n)

答案:c

解释:CHAR(n) 数据类型用于存储固定长度的字符串。


下一主题Oracle 实例