Oracle12c学习——常用的数据类型

一 .字符串类型

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

    所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。

所谓可变长度:是指当输入的字段值小于该字段的限制长度时,直接将字段值的内容存储到数据块中,而不会补上空白,这样可以节省数据块空间

(1)CHAR(size)型,定长字符串,非NULL的CHAR(12)总是包含12字节信息,如果长度不够,会用空格填充来达到其最大长度,如果超过,则直接报错。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。

例如:创建表test1:

也可以通过dump()函数查看:


从上图可知char(16)的类型编号为96,长度为16,后面97,98,99为abc所对应的ascall码的值,后面为空格。

如上面两图可知,CHAR字段最多可以存储2,000字节的信息。

(2)VARCHAR2(size),变长字符串,VARCHAR2字段最多可以存储4,000字节的信息。

例如:创建表test3:


如上图可知VARCHAR2(size)是变长的字符串类型。

对于CHAR和VARCHAR2,如果使用的字符的长度是固定的,建议使用CHAR(size),因为这样存取的效率更高,如果存放的数据是变化的,建议使用VARCHAR(size)。

(3)NARCHAR(size)这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。

例如:创建表test4:


创建表test5


从上面三张图可知,在NCHAR(size)中,无论是中文汉字还是英文字母均占一个字符空间。而在CHAR(szie)中,一个汉字占两个字符空间。

例如表test6;


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


二 .数值类型

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

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

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

Actual Data

Specified As

Stored As

123.89

NUMBER

123.89

123.89

NUMBER(3)

124

123.89

NUMBER(6,2)

123.89

123.89

NUMBER(6,1)

123.9

123.89

NUMBER(3)

124

123.89

NUMBER(4,2)

exceeds precision

123.89

NUMBER(6,-2)

100

.01234

NUMBER(4,5)

.01234

.00012

NUMBER(4,5)

.00012

.000127

NUMBER(4,5)

.00013

.0000012

NUMBER(2,7)

.0000012

.00000123

NUMBER(2,7)

.0000012

1.2e-4

NUMBER(2,5)

0.00012

1.2e-5

NUMBER(2,5)

0.00001

三.日期、时间类型

(1) DATE类型

DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

例如:创建表test7;


注意Oracle创建日期的格式匹配。

(2) TIMESTAMP类型

这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位





















猜你喜欢

转载自blog.csdn.net/yeuteyietir/article/details/80054429