`

Oracle基本数据类型存储格式研究(一)—字符类型

阅读更多

1.char

char是定长字符型,内部代码是:96,最多可以存储2000个字节,其中在char字符变量中,字节长度无法满足申请长度的则自动以空格变量补足,空格变量ASCII码为32;

2.varchar2

varchar2是变长字符型,内部代码是:1,最多可以存储4000个字符

实验如下:

 

SYS@huiche> create table test_char (char_col char(10), varchar_col varchar2(10));

表已创建。

SYS@huiche>insert into test_char values ('abc','abc');

已创建 1 行。

SYS@huiche>insert into test_char values ('testchar12','testchar12');

已创建 1 行。

SYS@huiche>insert into test_char values ('中国','中国');

已创建 1 行。

SYS@huiche>commit;

提交完成。
SYS@huiche>select dbms_rowid.rowid_object(rowid) object_id, dbms_rowid.rowid_relative_fno(rowid) file_id,
  2  dbms_rowid.rowid_block_number(rowid) block_id ,dbms_rowid.rowid_row_number(rowid) num from test_char;

 OBJECT_ID    FILE_ID   BLOCK_ID        NUM
---------- ---------- ---------- ----------
     63183          1      86858          0
     63183          1      86858          1
     63183          1      86858          2

SYS@huiche>alter system dump datafile 1 block 86858;

系统已更改。

SYS@huiche>

 其中dump文件内容为:

 

data_block_dump,data header at 0x524845c
===============
tsiz: 0x1fa0
hsiz: 0x18
pbl: 0x0524845c
bdba: 0x0041534a
     76543210
flag=--------
ntab=1
nrow=3
frre=-1
fsbo=0x18
fseo=0x1f60
avsp=0x1f48
tosp=0x1f48
0xe:pti[0] nrow=3 offs=0
0x12:pri[0] offs=0x1f8e
0x14:pri[1] offs=0x1f75
0x16:pri[2] offs=0x1f60
block_row_dump:
tab 0, row 0, @0x1f8e
tl: 18 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [10]  61 62 63 20 20 20 20 20 20 20
col  1: [ 3]  61 62 63
tab 0, row 1, @0x1f75
tl: 25 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [10]  74 65 73 74 63 68 61 72 31 32
col  1: [10]  74 65 73 74 63 68 61 72 31 32
tab 0, row 2, @0x1f60
tl: 21 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [10]  e4 b8 ad e5 9b bd 20 20 20 20
col  1: [ 6]  e4 b8 ad e5 9b bd
end_of_block_dump

End dump data blocks tsn: 0 file#: 1 minblk 86858 maxblk 86858

 

 其中也可以用dump函数:

SYS@huiche>select char_col,dump(char_col,16) from test_char;

CHAR_COL             DUMP(CHAR_COL,16)
-------------------- --------------------------------------------------
abc                    Typ=96 Len=10: 61,62,63,20,20,20,20,20,20,20
testchar12         Typ=96 Len=10: 74,65,73,74,63,68,61,72,31,32
中国             Typ=96 Len=10: e4,b8,ad,e5,9b,bd,20,20,20,20

SYS@huiche>select varchar_col,dump(varchar_col,16) from test_char;

VARCHAR_COL          DUMP(VARCHAR_COL,16)
-------------------- --------------------------------------------------
abc                     Typ=1 Len=3: 61,62,63
testchar12          Typ=1 Len=10: 74,65,73,74,63,68,61,72,31,32
中国              Typ=1 Len=6: e4,b8,ad,e5,9b,bd

SYS@huiche>SYS@huiche>select * from nls_database_parameters where parameter like '%CHARACTERSET%';

PARAMETER                                                    VALUE
------------------------------------------------------------ ----------------------------
NLS_CHARACTERSET                                             AL32UTF8
NLS_NCHAR_CHARACTERSET                                       UTF8

 

 根据dump文件和dump函数的比较可以说明:字符类型在oracle数据库底层是以16进制的ASCII码存储,汉字根据数据库字符集不同,在GBK字符集中占用2字节,在UTF8字符集中占用3个字节。

1
1
分享到:
评论

相关推荐

    Oracle基本数据类型存储格式浅析

    《Oracle基本数据类型存储格式详解》 Oracle数据库中,数据类型的存储格式对于数据库的性能和空间利用率至关重要。本文将深入探讨Oracle的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储...

    oracle基本数据类型存储格式浅析.pdf

    ### Oracle基本数据类型存储格式浅析 —— 字符类型 #### 概述 在Oracle数据库中,字符类型是非常常见的数据类型之一,它主要用于存储文本信息。本文将详细探讨Oracle数据库中几种基本字符类型的存储格式,包括`...

    oracle基本数据类型

    Oracle 中有多种基本数据类型,包括字符类型、数字类型、日期类型、二进制类型等。了解这些数据类型的特点和使用场景,对于数据库设计和开发至关重要。本文将详细介绍 Oracle 中的基本数据类型,并讨论它们的特点和...

    Oracle基本数据类型.pdf

    ### Oracle基本数据类型详解 #### 一、概述 Oracle 数据库提供了多种数据类型来满足不同的需求,这些数据类型包括字符型、数值型、日期时间型、大对象类型等。了解这些基本数据类型对于正确设计数据库表结构至关...

    Oracle基本数据类型

    以下是关于Oracle基本数据类型的详细说明: 1. **Char(n)**:这是一个定长字符串数据类型,长度可设置为1到2000字节。无论实际存储的数据是否占满指定长度,Oracle都会分配足够的空间。如果未指定长度,默认为1个...

    Oracle与.Net 数据类型映射

    它提供了一个OracleDbType枚举,该枚举定义了所有Oracle数据类型到.NET数据类型的映射。例如,OracleDbType.Number对应.NET的decimal,OracleDbType.Varchar2对应.NET的string,OracleDbType.Date对应.NET的DateTime...

    oracle基本数据类型及用法

    以下是对Oracle数据类型的详细解释: 1. **字符型数据类型**: - **CHAR**: 用于存储固定长度的文本数据,如果输入的数据不足指定长度,Oracle会用空格填充。 - **VARCHAR2**: 用于存储可变长度的文本,比CHAR更...

    Oracle 数据类型及存储方式.pdf

    Oracle数据库中数据类型的存储方式是数据库管理的基础知识之一,了解这一点对于进行数据设计和应用开发至关重要。Oracle数据库支持多种数据类型,包括数值型、字符型、日期时间型和LOB等大对象数据类型,每种数据...

    oracle和sql数据类型

    Oracle 和 SQL 数据类型是数据库管理系统中用于定义和存储数据的基础组件。它们决定了数据的结构、大小以及如何进行处理。以下是两种数据库系统中主要数据类型的详细比较: **Oracle 数据类型** 1. **Char**: Char...

    Oracle各种数据类型的介绍,适合中高级编程开发人员

    本文将详细介绍Oracle中的几种常见数据类型,并针对每种类型的特点进行分析,旨在帮助中高级编程开发人员以及初学者更好地理解和使用Oracle数据类型。 #### Character 类型 - **CHAR**: 是一种固定长度的字符类型...

    java、mysql以及oracle数据类型对照表

    标题"java、mysql以及oracle数据类型对照表"揭示了本主题的核心,即比较Java、MySQL和Oracle数据库的数据类型。Java的数据类型主要分为基本类型(如int、double、boolean)和引用类型(如类、接口和数组)。MySQL和...

    oracle_数据类型讲解.ppt

    Oracle 数据类型是数据库管理系统中用于存储不同类型数据的结构。在Oracle数据库中,数据类型分为多个类别,包括字符类型、数值类型、二进制类型、日期和时间类型以及特殊类型。下面将详细介绍这些数据类型。 1. **...

    Oracle数据库基本数据类型.pdf

    Oracle 基本数据类型 Oracle 数据库中有多种基本数据类型,包括 char、varchar2、number、date、long、raw、long raw、blob、clob、nclob、bfile 等。这些数据类型是我们在设计数据库时最基本的组成部分,了解每种...

    oracle数据类型.doc

    在Oracle中,数据类型可以分为基本数据类型、对象数据类型和大型对象数据类型。以下是对Oracle主要数据类型的详细说明: 1. **Char(n)**: 这是一种定长字符串数据类型,其中n的范围是1到2000字节。如果未指定长度,...

    ORACLE 10g 数据类型

    Oracle 10g 数据类型是数据库管理的基础,它定义了数据在存储和处理时的格式。Oracle 提供了丰富的数据类型来满足各种数据存储需求,主要包括字符型、数值型、日期时间型和大对象型。 1. 字符型 字符型数据类型包括...

    Oracle数据类型

    Oracle数据库中常用的数据类型主要包括字符类型、数字类型、日期时间类型以及LOB类型等,每一种数据类型适用于特定的数据存储需求。 1. 字符类型 - CHAR类型是固定长度的,用于存储定长的字符串,最多2000个字符。...

    Oracle基本数据类型[借鉴].pdf

    以下是对Oracle中一些基本数据类型的详细说明: 1. **Char(n)**: Char数据类型用于存储定长字符串,最大长度为2000字节。无论实际输入的数据长度如何,Oracle都会在该字段中填充足够的空格以达到指定的长度。这意味...

Global site tag (gtag.js) - Google Analytics