SlideShare uma empresa Scribd logo
1 de 32
Oracle 数据类型 叶正盛 Alibaba-inc 2010-05 http://blog.csdn.net/yzsind
主题 数值型(NUMBER) 字符型(STRING) 日期型(DATETIME) 大字段(LOB)
数值型 NUMBER(p,s) p:整数位数+小数位数      取值范围: 1-38 s:小数位数取值范围:-47-127 Number(6,2)表示总位数为6位,整数最大可以是4位,存储的小数为2位,小数超过2位会自动四舍五入 Number(6,-2)  ??? Number(1,-2)    ???   949,950 DATA_LENGTH===22    ???
Number存储结构 实际用1-21个字节存储,具体的长度与数值有关系 0用1个字节(0x80)存储, 1用2个字节(0xC1,0x02)存储, -1用了3个字节(0x3E,0x64,0x66)存储。 SQL> select dump(123456789,16) from dual; DUMP(123456789,16) ----------------------------- Typ=2 Len=6: c5,2,18,2e,44,5a
unDumpNumber  if Bytes(0) = 128 then --128表示0     result := 0; elsif Bytes(0) > 128 then --大于128表示正数 for i in 1 .. vlength - 1 loop       result := result +                 (Bytes(i) - 1) * power(100, (Bytes(0) - 193) - i+1);     end loop;   else --小于128表示负数 for i in 1 .. vlength - 2 loop --负数的最后一个字节总是102,所以可以忽略 result := result +                 (Bytes(i) - 101) * power(100, (62 - Bytes(0)) - i+1);     end loop;   end if;   return(Result);
新数值类型(10g) BINARY_FLOAT  单精度浮点型数据,内部采用4字节存储 BINARY_DOUBLE 双精度浮点型数据,内部采用8字节存储 牺牲精度,提高性能
性能测试结果Number VS Binary_Float insert into t(c_number,c_float) select rownum/100,rownum/100 from dual connect by rownum<1000000
同义词 NUMERIC(p,s):完全映射至NUMBER(p,s) DECIMAL(p,s)或DEC(p,s):完全映射至NUMBER(p,s) INTEGER 或INT,SMALLINT:完全映射至NUMBER类型,但是小数位精度为0。 FLOAT(p):映射至NUMBER(p) 类型,但小数位精度不限制。 DOUBLE PRECISION:相当于FLOAT(126),映射至NUMBER 类型。 REAL:相当于FLOAT(63)映射至NUMBER 类型。
字符型 CHAR VARCHAR2 NCHAR NVARCHAR2
常见字符集 ASCII ANSI(GB2312,BIG5,JIS,GBK) GB2312---------7445字符 GBK--------21886字符 GB18030------------27484字符 CJK,CJKV UNICODE(UCS-2,UTF8,UTF16) ISO-8891-XX Latin-XX
ORACLE字符集 数据库字符集 Oracle数据库最早支持的编码方案是US7ASCII Oracle的字符集命名遵循以下命名规则:     <Language><bit size><encoding> 即: <语言><比特位数><编码> 比如:      ZHS16GBK表示采用GBK编码格式,16位 ZHS16DBCS表示CJK编码格式,16位 WE8ISO8859P1表示ISO-8859-1编码格式,8位 国家字符集 用以存储NCHAR, NVARCHAR2, NCLOB等类型数据 只能在unicode编码中的AF16UTF16和UTF8中选择,默认值是AF16UTF16
常用字符类型 CHAR(n [BYTE | CHAR])       1-2000 VARCHAR2(n [BYTE | CHAR])      1-4000 NCHAR(n)        1-2000,默认为1 NVARCHAR2(n)     1-4000 VARCHAR是VARCHAR2的同意词,主要是兼容作用
状态类型 CHAR(1) VARCHAR2(1) NUMBER(1) 两者存储的空间和性能在ORACLE完全一样,所以没什么区别,Thomas Kate说CHAR/NCHAR 实际上只是伪装的VARCHAR2/NVARCHAR2,所以个人认为VARCHAR2(1)可以完全代替CHAR(1)使用
Varchar2 VS Number
随机字符串 dbms_random.string函数 以下是dbms_random.string函数生成随机的字符型数据类型 -- 'u', 'U' - 返回全是大写的字符串  -- 'l', 'L' - 返回全是小写的字符串  -- 'a', 'A' - 返回大小写结合的字符串  -- 'x', 'X' - 返回全是大写和数字的字符串  -- 'p', 'P' - 返回键盘上出现字符的随机组合
字符串函数 SUBSTR(‘abcdeft’,-3,2) TRIM(‘001234560’,’01’) 如何将一串数字转换为对应的汉字? ‘34234298’         to       ’三四二三四二九八’ Translate Select Translate(‘3430387664’,‘1234567890’,’一二三四五六七八九零’) from dual;
日期型 DATE 公元前4712年1月1日至公元9999年12月31日 TIMESTAMP 保存小数秒,小数位数可以指定为0-9,默认为6位
Date内部存储 '2010-2-12 10:20:30‘ Typ=12 Len=7: 120,110,2,12,11,21,31 	第1字节:世纪+100 第2字节:年+100 第3字节:月 	第4字节:天 	第5字节:小时+1 第6字节:分+1 第7字节:秒+1
Timestamp内部存储 '2010-2-12 13:24:52.123456‘ Typ=180 Len=11: 120,110,2,12,14,25,53,7,91,202,0 第1字节:世纪+100 第2字节:年+100 第3字节:月 	第4字节:天 	第5字节:小时+1 第6字节:分+1 第7字节:秒+1 第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形
TO_CHAR日期转换 YYYY-MM-DD HH24:MI:SS 如何得到今天是本年的第几天? TO_CHAR(date,’DDD’) TO_CHAR(date,’MM’)  EXTRACT(date,’MONTH’)
求下个月的今天时间? Sysdate+30? Sysdate+31? Sysdate+NUMTOYMINTERVAL(1, 'month') ADD_MONTHS(Sysdate,1)
ADD_MONTHS ADD_MONTHS(date '2010-2-12', 1) ADD_MONTHS(date '2010-2-27', 1) ADD_MONTHS(date '2010-2-28', 1) ADD_MONTHS(date '2010-1-31', 1)
LOB CLOB(字符) BLOB(二进制) NCLOB(国家字符集) BFILE(外部文件存储) 9i MaxSize   4G Bytes 10g MaxSize 4G BLOCKS
LOB 存储定义语法 { TABLESPACE tablespace | { ENABLE | DISABLE } STORAGE IN ROW | storage_clause | CHUNK integer | PCTVERSION integer | RETENTION | FREEPOOLS integer | { CACHE   | { NOCACHE | CACHE READS } [ logging_clause ]   } }
LOB 每个LOB字段有两个段 LOBINDEX,LOGSEGMENT,如果未指定名字,则系统自动命令,如:SYS_LOB0000030371C00001$$ 名字里会有表的OBJECT#,其中30371就是表的OBJECT lob存储可以指定单独的表空间, lobindex和lobsegment在同一个表空间中。
Lobindex   &  Lobsegment
LOB ----STORAGE IN ROW ENABLE(默认) 小于4000字节与表数据存在一起,会在data_buffer里保存 大于4000字节保存在LOB指定的段中 DISABLE 所有数据都保存在LOB指定的段中
LOG ----CHUNK Size 设置LOB段每个单元分配的字节数,要求是数据块大小的整理倍,如果不是数据块大小的整理倍,ORACLE会自动向上取整,缺省为1个数据块大小,最大为32KB CHUNK是每条记录的每个LOB字段存储的最小单位,假设CHUNK=8192,如果LOB字段只有1个字节,也会点用1个CHUNK存储,如果LOB字段有8193个字节,则会点用2个CHUNK
LOB---- UNDO lobindex会像其他段一样生成undo,但是lobsegment不会,ORACLE对LOB字段进行更新时不会重用原有的存储空间,而是先重新分配新的空间,然后调整lobindex的指针到新空间的地址。 PCTVERSION percent,默认是10% 使用预留百分比的数据块保存旧版本 RETENTION 保存时间与初始化参数undo_retention相同
LOB----CACHE NOCACHE(默认值) 全部直接磁盘读写 CACHE 读写都通过缓存 CACHE READ 读的数据会缓存到内存
BFILE create or replace directory MY_DIR as 'e:/download‘; create table t(c_bfilebfile); insert into t values(bfilename('MY_DIR','Version.xml')); BFILE不是读一致性 BFILE在数据库中占用的空间是文件名长度
谢谢!

Mais conteúdo relacionado

Destaque

Lucid arts slideshow
Lucid arts slideshowLucid arts slideshow
Lucid arts slideshowLucidarts
 
Balanço megaleite 2011 1
Balanço megaleite 2011 1Balanço megaleite 2011 1
Balanço megaleite 2011 1Katya_C
 
Redes Sociais - Ferramentas
Redes Sociais - FerramentasRedes Sociais - Ferramentas
Redes Sociais - FerramentasPriscila Torres
 
Aplicativos II - Grupo Emporos
Aplicativos II - Grupo EmporosAplicativos II - Grupo Emporos
Aplicativos II - Grupo Emporosemporos
 
2209 segurança pessoal
2209 segurança pessoal2209 segurança pessoal
2209 segurança pessoalDominngos
 
Cooper1
Cooper1Cooper1
Cooper1syanyi
 
Winterday
WinterdayWinterday
WinterdayEstera
 
Álbum de fotografias cno
Álbum de fotografias cnoÁlbum de fotografias cno
Álbum de fotografias cnocnoesv
 
Relato da semana do anti bullyng na escola mul
Relato da semana do anti bullyng na escola mulRelato da semana do anti bullyng na escola mul
Relato da semana do anti bullyng na escola mulFrancineteproinfo
 
70642 são paulo
70642 são paulo70642 são paulo
70642 são pauloDominngos
 
L’orientació educativa en els centres docents
L’orientació educativa en els centres docentsL’orientació educativa en els centres docents
L’orientació educativa en els centres docentsBaix
 
Power Point Ordenadores
Power Point OrdenadoresPower Point Ordenadores
Power Point Ordenadoresmelerillo
 

Destaque (20)

Respeito
RespeitoRespeito
Respeito
 
Lucid arts slideshow
Lucid arts slideshowLucid arts slideshow
Lucid arts slideshow
 
Hebreus
HebreusHebreus
Hebreus
 
Balanço megaleite 2011 1
Balanço megaleite 2011 1Balanço megaleite 2011 1
Balanço megaleite 2011 1
 
Redes Sociais - Ferramentas
Redes Sociais - FerramentasRedes Sociais - Ferramentas
Redes Sociais - Ferramentas
 
Direitosfundamentais
DireitosfundamentaisDireitosfundamentais
Direitosfundamentais
 
Aplicativos II - Grupo Emporos
Aplicativos II - Grupo EmporosAplicativos II - Grupo Emporos
Aplicativos II - Grupo Emporos
 
CAD 2D Level 3
CAD 2D Level 3CAD 2D Level 3
CAD 2D Level 3
 
2209 segurança pessoal
2209 segurança pessoal2209 segurança pessoal
2209 segurança pessoal
 
Fotos curiosas
Fotos curiosasFotos curiosas
Fotos curiosas
 
Cooper1
Cooper1Cooper1
Cooper1
 
Winterday
WinterdayWinterday
Winterday
 
Implantação de Ciclo de Estudos
Implantação de Ciclo de EstudosImplantação de Ciclo de Estudos
Implantação de Ciclo de Estudos
 
Álbum de fotografias cno
Álbum de fotografias cnoÁlbum de fotografias cno
Álbum de fotografias cno
 
Relato da semana do anti bullyng na escola mul
Relato da semana do anti bullyng na escola mulRelato da semana do anti bullyng na escola mul
Relato da semana do anti bullyng na escola mul
 
70642 são paulo
70642 são paulo70642 são paulo
70642 são paulo
 
Resume 2016
Resume 2016Resume 2016
Resume 2016
 
Inspira 3
Inspira 3Inspira 3
Inspira 3
 
L’orientació educativa en els centres docents
L’orientació educativa en els centres docentsL’orientació educativa en els centres docents
L’orientació educativa en els centres docents
 
Power Point Ordenadores
Power Point OrdenadoresPower Point Ordenadores
Power Point Ordenadores
 

Semelhante a Oracle 数据类型

中文编码杂谈
中文编码杂谈中文编码杂谈
中文编码杂谈Xiaozhe Wang
 
Character Encoding - Concepts and Practices
Character Encoding - Concepts and PracticesCharacter Encoding - Concepts and Practices
Character Encoding - Concepts and Practicesrogeryi
 
字符集与编码
字符集与编码字符集与编码
字符集与编码lilizhang
 
Deep learning wiki on data encodingi
Deep learning  wiki on data encodingiDeep learning  wiki on data encodingi
Deep learning wiki on data encodingiwang meng
 
Ipv6協定與原理
Ipv6協定與原理Ipv6協定與原理
Ipv6協定與原理dpodp
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤jay li
 
Character Encoding and Database Transcoding Project
Character Encoding and Database Transcoding ProjectCharacter Encoding and Database Transcoding Project
Character Encoding and Database Transcoding ProjectHo Kim
 
基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计Hengyi
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点thinkinlamp
 
Java中编码以及Unicode总结V1.1
Java中编码以及Unicode总结V1.1Java中编码以及Unicode总结V1.1
Java中编码以及Unicode总结V1.1Zianed Hou
 
快快樂樂SIMD
快快樂樂SIMD快快樂樂SIMD
快快樂樂SIMDWei-Ta Wang
 

Semelhante a Oracle 数据类型 (15)

中文编码杂谈
中文编码杂谈中文编码杂谈
中文编码杂谈
 
Encoding
EncodingEncoding
Encoding
 
Character Encoding - Concepts and Practices
Character Encoding - Concepts and PracticesCharacter Encoding - Concepts and Practices
Character Encoding - Concepts and Practices
 
字符集与编码
字符集与编码字符集与编码
字符集与编码
 
Deep learning wiki on data encodingi
Deep learning  wiki on data encodingiDeep learning  wiki on data encodingi
Deep learning wiki on data encodingi
 
Ipv6協定與原理
Ipv6協定與原理Ipv6協定與原理
Ipv6協定與原理
 
Ch2 1
Ch2 1Ch2 1
Ch2 1
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
2
22
2
 
Character Encoding and Database Transcoding Project
Character Encoding and Database Transcoding ProjectCharacter Encoding and Database Transcoding Project
Character Encoding and Database Transcoding Project
 
基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计基于嵌入式系统的Avs P10编码系统设计
基于嵌入式系统的Avs P10编码系统设计
 
03
0303
03
 
数据处理算法设计要点
数据处理算法设计要点数据处理算法设计要点
数据处理算法设计要点
 
Java中编码以及Unicode总结V1.1
Java中编码以及Unicode总结V1.1Java中编码以及Unicode总结V1.1
Java中编码以及Unicode总结V1.1
 
快快樂樂SIMD
快快樂樂SIMD快快樂樂SIMD
快快樂樂SIMD
 

Oracle 数据类型