Oracle 数据类型及存储方式Word格式文档下载.docx

上传人:b****3 文档编号:15069548 上传时间:2022-10-27 格式:DOCX 页数:41 大小:38.59KB
下载 相关 举报
Oracle 数据类型及存储方式Word格式文档下载.docx_第1页
第1页 / 共41页
Oracle 数据类型及存储方式Word格式文档下载.docx_第2页
第2页 / 共41页
Oracle 数据类型及存储方式Word格式文档下载.docx_第3页
第3页 / 共41页
Oracle 数据类型及存储方式Word格式文档下载.docx_第4页
第4页 / 共41页
Oracle 数据类型及存储方式Word格式文档下载.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

Oracle 数据类型及存储方式Word格式文档下载.docx

《Oracle 数据类型及存储方式Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Oracle 数据类型及存储方式Word格式文档下载.docx(41页珍藏版)》请在冰豆网上搜索。

Oracle 数据类型及存储方式Word格式文档下载.docx

createtabletest_char(colAchar(10));

Tablecreated

2.向这个表中插入一些数据。

insertintotest_charvalues('

a'

);

1rowinserted

aa'

aaa'

aaaa'

aaaaaaaaaa'

注意:

最多只能插入10个字节。

否是就报错。

aaaaaaaaaaa'

insertintotest_charvalues('

ORA-12899:

valuetoolargeforcolumn"

PUB_TEST"

."

TEST_CHAR"

COLA"

(actual:

11,maximum:

10)

3.使用dump函数可以查看每一行的内部存数结构。

selectcolA,dump(colA)fromtest_char;

COLA 

 

DUMP(COLA)

------------------------------------------------------------------------------------------

Typ=96Len=10:

97,32,32,32,32,32,32,32,32,32

aa 

97,97,32,32,32,32,32,32,32,32

aaa 

97,97,97,32,32,32,32,32,32,32

aaaa 

97,97,97,97,32,32,32,32,32,32

aaaaaaaaaaTyp=96Len=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码转成字符。

selectchr(97)fromdual;

CHR(97)

-------

a

要想知道一个字符的ASCII码,可以使用函数ascii

selectascii('

)fromdual;

ASCII('

A'

----------

97

32正好是空格的ascii码值。

Char类型是定长类型。

它总会以空格来填充以达到一个固定宽度。

使用char类型会浪费存储空间。

Oracle的数据类型的长度单位是字节。

selectdump('

汉'

DUMP('

---------------------

Typ=96Len=2:

186,186

可见一个汉字在oracle中是占用了两个字节的。

英文字母或符号只占用一个字节。

Char(10)最多可存放5个汉字。

1.2 

varchar2

是一种变长的字符类型。

最多可占用4000字节的存储空间。

1.创建一个表,只有一列,类型为varchar2,长度为10

createtabletest_varchar(colvarchar2(10));

2.插入一些数据

insertintotest_varcharvalues('

2.用dump函数查看每一行的内部存储结构。

selectcol,dump(col)fromtest_varchar;

COL 

DUMP(COL)

Typ=1Len=1:

Typ=1Len=2:

97,97

Typ=1Len=3:

97,97,97

aaaaaaaaaaTyp=1Len=10:

Typ=1,说明varchar2类型在oracle中的类型编号为1

Len代表了每一行数据所占用的字节数。

后面是具体的存储值。

由此可见,varchar2是存多少就占用多少空间。

比较节省空间的。

不会像char那样用空格填充。

1.3 

byte和char

在10g中,字符类型的宽度定义时,可以指定单位。

Byte就是字节。

Char就是字符。

Varchar2(10byte)长度为10个字节。

Varchar2(10char)长度为10个字符所占的长度。

Char(10byte)长度为10个字节。

Char(10char)长度为10个字符所占的长度。

一个字符占用多少个字节,是由当前系统采用的字符集来决定的。

如一个汉字占用两个字节。

查看当前系统采用的字符集

select*fromnls_database_parameterswhereparameter='

NLS_CHARACTERSET'

;

PARAMETER 

VALUE

--------------------------------------------------------------------------------------------------------------

NLS_CHARACTERSET 

ZHS16GBK

如果在定义类型时,不指定单位。

默认是按byte,即以字节为单位的。

采用char为单位的好处是,使用多字节的字符集。

比如,在ZHS16GBK字符集中,一个汉字占用两个字节。

把数据表的某一列长度定义为可存放10个汉字,通过下面的定义就可以了。

Createtabletest_varchar(col_char 

varchar2(10char));

这样相对简单一些。

在数据库表设计时需要注意。

继续实验,新建一个表,包含两列。

一列采用byte为单位,一列采用char为单位

createtabletest_varchar2(col_charvarchar2(10char),col_bytevarchar2(10byte));

Col_char列,定义为可存放10个字符。

Col_byte列,定义为可存放10个字节的字符。

当前的系统采用字符集为ZHS16GBK.所以一个字符占两个字节。

试着在表中插入一些数据

insertintotest_varchar2values('

'

袁'

袁袁袁袁袁袁袁袁袁袁'

insertintotest_varchar2values('

TEST_VARCHAR2"

COL_BYTE"

20,maximum:

第一次,在两列中都插入字符a

第二次,在col_char列插入字符’袁’,在col_byte插入字符a

第三次,在col_char列中插入10个中文字符’袁’,在col_byte插入10个字符a

第四次,在两列中都插入中文字符’袁’时,报错了。

第二列长度不够。

再看看每一行的存储结构

selectcol_char,dump(col_char)fromtest_varchar2;

COL_CHAR 

DUMP(COL_CHAR)

----------------------------------------------------------------------------------------------------

袁 

212,172

袁袁袁袁袁袁袁袁袁袁Typ=1Len=20:

212,172,212,172,212,172,212,172,212,172,212,172,212,172,212,172,21

当我们在col_char列插入10个汉字时,它的长度为2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1