Number类型

在Oracle中NUMBER数据类型用于存储数值类数据。其语法如下:

NUMBER[(precision[,scale])]
  • precision表示精度,即这个数字有多少位,范围是1-38。

  • scale表示小数的位数也叫做尺度,范围是-84至127。

    • 当尺度为负数则表示该数的最小单位是10-scale
  • 如果在NUMBER(p,s)列中插入数字,并且数字超过精度p,则Oracle将发出错误。 但是,如果数量超过尺度s,则Oracle将对该值进行四舍五入。

  • Oracle包含许多可用于定义数字列的别名,如下表所示:

    ANSI数据类型 Oracle NUMBER数据类型
    INT NUMBER(38)
    SMALLINT NUMBER(38)
    NUMBER(p,s) NUMBER(p,s)
    DECIMAL(p,s) NUMBER(p,s)

    ANSI所规定的数据类型在Oracle中都不是真正的数据类型,只是Oracle在内部映射的别名。

FLOAT数据类型

在Oracle中FLOAT数据类型是NUMBER的子类型, 其主要目的是促进与ANSI SQL FLOAT数据类型的兼容。

FLOAT(p)

FLOAT只能指定数据的精度。因为Oracle会从数据中去解析尺度。并且FLOAT指定的精度是二进制的,所以最大值为126,在number中的精度是10进制的。

CHAR数据类型

Oracle CHAR数据类型用于存储**固定长度**的字符串。 CHAR数据类型可以存储12000字节的字符串。

要定义一个CHAR列,需要用字节或字符来指定一个字符串长度,如下所示:

CHAR(length BYTE)
CHAR(length CHAR)

固定长度意味着如果一个数据小于CHAR列所定义的长度的话,Oracle将用空格补全不足的长度。

NCHAR数据类型

​ NCHAR用于存储固定长度的Unicode字符数据。NCHAR的字符集只能是AL16UTF16UTF8,在数据库创建时指定为国家字符集。定义NCHAR时只能指定字符长度不能指定字节长度。

VARCHAR2和NVARCHAR2数据类型

​ 和CHAR相比VARCHAR2不会在尾部填充空格补全不足长度,更省空间。

DATE数据类型

​ DATE数据类型允许以一秒的精度存储包括日期和时间的时间点值。DATE数据类型存储年份(包括世纪),月份,日期,小时数,分钟数和秒数。 它的范围从公元前4712年1月1日到公元9999年12月31日。输入和输出的标准日期格式是DD-MON-YY

  • TO_CHAR()函数采用DATE值作为参数,根据指定的格式对其进行格式化,并返回一个日期字符串。

    例如,要以特定的格式显示当前的系统日期,请按如下所示使用TO_CHAR()函数:

    SELECT
      TO_CHAR( SYSDATE, 'MM/DD/YYYY' )
    FROM
      dual;
  • 由于Oracle使用内部格式来存储DATE数据,因此在将日期值存储到日期列之前,通常必须将字符串转换为日期值。
    要转换不是标准格式的日期值,可以使用带有格式字符串的TO_DATE()函数。

    以下示例使用TO_DATE()函数将字符串“August 01,2017”转换为相应的日期:

    -- alter session set nls_language='SIMPLIFIED CHINESE';
    SELECT
      TO_DATE('2018-10-21', 'YYYY-MM-DD' )
    FROM
      dual;

TIMESTAMP数据类型

TIMESTAMP数据类型用于存储日期和时间数据,包括年,月,日,时,分和秒。

另外,它存储小数秒,它不是由DATE数据类型存储的。

要定义TIMESTAMP列,请使用以下语法:

column_name TIMESTAMP[(fractional_seconds_precision)]

INTERVAL数据类型

Oracle提供了两种日期时间数据类型:DATETIMESTAMP用于存储时间点数据。另外,它提供INTERVAL数据类型用于存储一段时间。

有两种类型的INTERVAL

  • INTERVAL YEAR TO MONTH - 间隔使用年份和月份。
  • INTERVAL DAY TO SECOND - 使用包括小数秒在内的天,小时,分钟和秒存储间隔

数据库相关      sql Oracle

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

 目录