摘要
通过实例,全面深入地分析了oralce的基本数据类型及其存储方法。本文以oracle 10G为基础,介绍了Oracle 10G引入的新的数据类型。让你对oracle数据类型有了新的认识。揭露一些不为人知的秘密和被忽视的盲点。从实用和优化的角度出发,讨论了每种数据类型的特点。从这里开始甲骨文之旅!
第一部分人物类型
&教派;1.1字符
一个定长字符串,将用空单元格填充以达到其最大长度,最大2000字节。
1.创建一个新的测试表test_char。只有一个char类型的列。长度为10
SQL & gt创建表test _ char(colA char(10));
表已创建
2.在此表中插入一些数据。
SQL & gt插入到test_char值(' a ');
插入1行
SQL & gt插入到test_char值(' aa ');
插入1行
SQL & gt插入到test_char值(' AAA ');
插入1行
SQL & gt插入到test_char值(' AAAA ');
插入1行
SQL & gtinsert into test_char值(' aaaaaaaaaa ');
插入1行
注意:最多只能插入10个字节。否则,报告一个错误。
SQL & gt插入到test_char值中(' aaaaaaaaaaaa ');
插入到test_char值(' aaaaaaaaaaa ')
ORA-12899:对于列& quot发布测试& quot。"测试_字符& quot。"可乐& quot(实际:11,最大:10)
3.使用dump函数查看每一行的内存结构。
SQL & gtselect colA,dump(可乐)from test _ char
可乐转储(可乐)
- -
一个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
aaa Typ=96 Len=10: 97,97,97,32,32,32,32,32,32
aaaa Typ=96 Len=10: 97,97,97,97,32,32,32,32,32
aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97
注意:Typ=96表示数据类型的ID。Oracle对每种数据类型进行编号。表示字符类型的数字是96。
Len =10表示内部存储的长度(以字节为单位)。虽然在第一种情况下只有一个角色被保存& rsquoa & rsquo,但在空之间还是占了10个字节。
7,32,32,32,32,32,32,32,32,32,32表示内部存储方法。可以看出,oracle的内存是以数据库字符集存储的。
97正是字符a的ASCII码。
您可以使用chr函数将ASCII码转换成字符。
SQL & gt从dual中选择chr(97);
人权委员会(97)
-
a
要知道一个字符的ascii码,可以使用函数ASCII。
SQL & gt从dual中选择ascii(' a ');
ASCII码(' A ')
-
97
32正好是空的ascii码值。
Char类型是固定长度类型。它将始终填充空单元格以达到固定宽度。
使用char类型会浪费空的存储空间。
Oracle数据类型的长度单位是字节。
SQL & gt从dual中选择dump(' Han ');
转储('韩')
-
Typ=96 Len=2: 186,186
可以看出,甲骨文中一个汉字占两个字节。
英文字母或符号只占一个字节。
Char(10)最多可以存储5个汉字。
&教派;1.2 varchar2
是长度可变的字符类型。它可以占用4000字节的存储空间空。
1.创建一个只有一列的表,类型为varchar2,长度为10。
SQL & gt创建表test _ varchar(col varchar 2(10));
表已创建
2.插入一些数据
SQL & gt插入到test_varchar值(' a ');
插入1行
SQL & gt插入到test_varchar值(' aa ');
插入1行
SQL & gt插入到test_varchar值(' AAA ');
插入1行
SQL & gt插入到test_varchar值中(' aaaaaaaaaa ');
插入1行
SQL & gt插入到test_varchar值(' aaaaaaaaaaaa ');
2.用dump函数检查每一行的内部存储结构。
SQL & gtselect col,dump(col)from test _ varchar;
列转储
- -
典型=1透镜=1: 97
aa Typ=1 Len=2: 97,97
aaa Typ=1 Len=3: 97,97,97
aaaaaaaaaa Typ=1 Len=10: 97,97,97,97,97,97,97,97,97,97
Typ=1,表示oracle中varchar2的类型号为1。
Len代表每行数据占用的字节数。
随后是特定的存储值。
可以看出,varchar2占用的空房间和节省的一样多。在空之间比较。不会像char一样用空单元格填充。
&教派;1.3字节和字符
在10g中,当定义字符类型的宽度时,可以指定单位。
字节就是字节。
Char是一个字符。
Varchar2(10字节)的长度是10个字节。
Varchar2(10 char)的长度为10个字符。
Char(10字节)长度为10字节。
Char(10 char)的长度为10个字符。
一个字符占用多少字节是由当前系统采用的字符集决定的。
本文链接:http://www.123down.cn/gonglue/227382.html