ORACLE的数据类型

白昼怎懂夜的黑 提交于 2020-03-09 20:11:22

ORACLE的概述:

oracle基本上分为:字符串类型,数字类型,日期类型,大对象类型等几种。

1 字符串类型:用单引号引起来的字符序列。 

  字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种.

1.1:CHAR类型 CHAR(size [BYTE | CHAR])

CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多

可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,

例如 CHAR('字' BYTYE) CHAR('字' CHAR).一般来说默认是存储字节,可以查看数据库参数NLS_LENGTH_SEMANTICS的值。

:储存类型可以分为:字符和字节,如果要申明为字符,需要在size后面申明,默认是存储字节

ORACLE数据库汉字占用几个字节,要根据ORACLE中字符集编码决定,可以通过查询字符集知道:

注:字符集分为:AL32UTF8和ZHS16GBK

查看汉字所占的字符和字节数:

所以,一个汉字在oracle中占几个字节可以总结为:

当NLS_CHARACTERSET=AL32UTF8时()
NLS_LENGTH_SEMANTICS=BYTE时,一个汉字代表三个字节
NLS_LENGTH_SEMANTICS=CHAR时,一个汉字代表一个字节
当NLS_CHARACTERSET=ZHS16GBK时(字符集为字节)
NLS_LENGTH_SEMANTICS=BYTE时,一个汉字代表一个字节
NLS_LENGTH_SEMANTICS=CHAR时,一个汉字代表两个字节

1.2:NCHAR类型

NCHAR类型 长度固定且只储存Unicode字符集,如果储存的数据没有达到定义的长度时,数据库会自动补足空格,

最多储存2000个字节,如果不指定长度,最大的长度为1.

NCHAR和CHAR之间是不能直接互相兼容的,而是要通过Oracle的函数或者语法进行转换,比如说从NCHAR转成CHAR是要用TO_CHAR函数进行转换,

而CHAR转换为NCHAR,比如说'ABCDE'这个CHAR字符串,则要通过N'ABCDE'来进行表示,也就是说前面要有一个N这个特殊字符,表示是NCHAR类型。

1.3:VARCHAR类型

不要使用VARCHAR数据类型。使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义,VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;

varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;。

1.4: VARCHAR2类型

变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 varchar2(10)是最合算的。varchar2类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar2合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

1.5: NVARCHAR2类型

这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。


二. 数字类型

2.1 NUMBER类型

NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

2.2 INTEGER类型

INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。


三. 日期类型

  3.1 DATE:存储日期和时间,精确到秒。Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。
 
               默认存放格式:“DD-MON-YYYY” 
 
               默认显示格式:“DD-MON-YY 
 
            3.2 TIMESTAMP[(seconds_precision)]:存储日期、时间和时区信息,带小数位的秒。时间戳 
 
               如:TIMESTAMP(3)   秒后面小数点为3位。(最多可9位) 

四. LOB类型

内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型,最大存储128TB 

 

4.1 CLOB 数据类型

   它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符

4.2 NCLOB 数据类型

   它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。

4.3 BLOB 数据类型

   它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。

4.4 BFILE 数据类型

   二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!