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位