- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《Oracle 数据类型及存储方式》.pdf
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 表示所在的内部存储的长度(用字节表示)。虽然第一例只存了一个字符’a’ ,但是它
还是占用了10 个字节的空间。
97,32,32,32,32,32,32,32,32,32 表示内部存储方式。可见oracle 的内部存储是以数据库字符集
进行存储的。
97 正好是字符a 的ASCII 码。
可以使用chr 函数把ASCII 码转成字符。
SQL select chr(97) from dual;
CHR(97)
a
要想知道一个字符的ASCII 码,可以使用函数ascii
SQL select ascii(a) from dual;
ASCII(A)
97
32 正好是空格的ascii 码值。
Char 类型是定长类型。它总会以空格来填充以达到一个固定宽度。
使用char 类型会浪费存储空间。
Oracle 的数据类型的长度单位是字节。
SQL select dump(汉) from dual;
DUMP(汉)
Typ=96 Len=2: 186,186
可见一个汉字在oracle 中是占用了两个字节的。
英文字母或符号只占用一个字节。
Char(10)最多可存放5 个汉字。
§1.2 varchar2
是一种变长的字符类型。最多可占用4000 字节的存储空间。
1. 创建一个表,只有一列,类型为varchar2,长度为10
SQL create table test_varchar( col varchar2(10));
Table created
2.
文档评论(0)