Oracle 數據類型及存儲方式
袁光東 原創
概述
通過實例,全面而深入的分析oralce的基本數據類型及它們的存儲方式。以ORACLE 10G為基礎,介紹oralce 10g引入的新的數據類型。讓你對oracle數據類型有一個全新的認識。揭示一些不為人知的秘密和被忽略的盲點。從實用和優化的角度出發,討論每種數據類型的特點。從這里開始oracle之旅!
第一部份 字符類型
§1.1? char
定長字符串,會用空格來填充來達到其最大長度,最長2000個字節。
1. 新建一個測試表test_char.,只有一個char類型的列。長度為10
SQL> create table test_char(colA char(10));
Table created
2. 向這個表中插入一些數據。
SQL> insert into test_char values('a');
1 row inserted
SQL> insert into test_char values('aa');
1 row inserted
SQL> insert into test_char values('aaa');
1 row inserted
SQL> insert into test_char values('aaaa');
1 row inserted
SQL> insert into test_char values('aaaaaaaaaa');
1 row inserted
注意:最多只能插入10個字節。否是就報錯。
SQL> insert into test_char values('aaaaaaaaaaa');
insert into test_char values('aaaaaaaaaaa')
ORA-12899: value too large for column "PUB_TEST"."TEST_CHAR"."COLA" (actual: 11, maximum: 10)
3. 使用dump函數可以查看每一行的內部存數結構。
SQL> select colA, dump(colA) from test_char;
COLA?????? DUMP(COLA)
---------- --------------------------------------------------------------------------------
a????????? Typ=96 Len=10: 97,32,32,32,32,32,32,32,32,32
aa???????? Typ=96 Len=10: 97,97,32,32,32,32,32,32,32,32
aaa??????? Typ=96 Len=10: 97,97,97,32,32,32,32,32,32,32
aaaa?????? Typ=96 Len=10: 97,97,97,97,32,32,32,32,32,32
aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97,97
注意:Typ=96 表示數據類型的ID。Oracle為每一種數據類型都進行了編號。說明char類型的編號是96.
Len =10 表示所在的內部存儲的長度(用字節表示)。雖然第一例只存了一個字符