Oracle数据类型.ppt

上传人:豆**** 文档编号:25184558 上传时间:2022-07-10 格式:PPT 页数:40 大小:1.35MB
返回 下载 相关 举报
Oracle数据类型.ppt_第1页
第1页 / 共40页
Oracle数据类型.ppt_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《Oracle数据类型.ppt》由会员分享,可在线阅读,更多相关《Oracle数据类型.ppt(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Oracle数据类型数据类型SsmOracle数据类型概述LONGNVARCHAR2VARCHAR2NCHARCHARRAWBLOBLONG RAWNUMBERBINARY_FLOATBINARY_DOUBLEBFILECLOBNCLOBDATETIMESTAMPTIMESTAMPWITH TIME ZONETIMESTAMPWITH LOCAL TIME ZONEINTERVALYEAR TO MONTHINTERVALDAY TO SECONDROWIDUROWID字符类型字符类型数值类型数值类型二进制类型二进制类型日期和时间日期和时间类型类型LONG类型类型LOB类型类型ROWID/UR

2、OWID类型类型Ssm字符类型 概述Oracle中的字符数据类型包括CHAR、VARCHAR2以及带“N”的相应变体(NCHAR和NVARCHAR2),这些字符数据类型能存储2000字节或4000字节的文本。这些文本会由数据库根据需要在不同的字符集(character set)之间进行转换。CHAR、VARCHAR2、NCHAR、NVARCHAR2都是以同样的格式进行存储。Ssm字符类型 NLS(国家语言支持)NLS全称是National Language Support。NLS是数据库的一个非常强大的特性,控制着数据的许多方面,最重要的两个方面是: 文本数据持久存储在磁盘上时如何编码 透明地

3、将数据从一个字符集转换到另一个字符集Ssm字符类型 如何查看当前的数据库字符集设定 SELECT * FROM nls_database_parameters WHERE parameter=NLS_CHARACTERSETSsm字符类型 CHARCHAR是定长字符串类型,总会用空格填充来达到其最大长度。CHAR字段最多可以存储2000字节的信息。正常情况下,size的单位默认为BYTE。CHAR(size BYTE|CHAR)Ssm字符类型 VARCHAR2VARCHAR2是变长字符串类型,不会用空格填充至最大长度。此类型最多可存储4000字节的信息。VARCHAR2(size BYTE|C

4、HAR)为什么称为VARCHAR2而不是VARCHAR?也有一个数据类型是VARCHAR,然而,Oracle公司声称他们将来可能会改变VARCHAR的字段行为,我们无法知道“改变后的”VARCHAR将会如何。所以,当前应尽量避免使用VARCHARSsm字符类型 NCHAR/NVARCHAR2两种数据类型用于包含UNICODE格式数据的字符串,以支持某些应用中对多字节数据的需求。两者的存储字符数上界分别是2000/4000字节。 NVARCHAR2和NCHAR与相应的VARCHAR2和CHAR的区别在于: 文本采用数据库的国家字符集来存储和管理,而不是默认字符集 长度总是字符数,而CHAR/VA

5、RCHAR2可能会指定是字节还是字符Ssm字符类型 判断:vchar_col列可以存储多少字符(每字符4字节)? 1000字符VARCHAR2中存储的字节数上界是4000。如果选择的字符集中每个字符都要使用4个字节来表示,那么vchar_col字段只能放下1000个字符CREATE TABLE T ( vchar_col VARCHAR2(4000 CHAR);Ssm字符类型 判断:是否可以如下定义vchar_col列? 不可以NVARCHAR2中存储的字节数上界也是4000。但是定义时长度参数总是表示字符数,没有字节(BYTE)还是字符(CHAR)的选择问题CREATE TABLE T (

6、vchar_col NVARCHAR2(4000 CHAR);Ssm数值类型 NUMBEROracle9i Release 2及以前的版本只支持一种适合存储数值数据的固有数据类型。在所有的Oracle版本中NUMBER都得到支持 NUMBER类型精度可达38位。可以存储小到10e-130、大到(但不包括) 10e126的任何数值Ssm数值类型 NUMBER 精度(precision)也称为总位数,取值范围138,默认值为38,也可以用字符*表示38 小数位数(scale)也称为小数点右边的位数,合法值-48127,默认值取决于是否指定了精度。如果没有指定精度,小数位数则默认有最大的取值区间。如

7、果指定了精度,小数位数默认为0NUMBER(precision,scale)Ssm数值类型 判断:num_col字段是否可以存储小数? 可以如果没有指定精度,小数位数则默认有最大的取值区间,换句话说,定义NUMBER的列会存储浮点数(有小数)CREATE TABLE T ( num_col NUMBER);Ssm数值类型 判断:num_col字段是否可以存储小数? 不可以如果指定小数位数为0,那么相应字段只能存储整数数据(没有小数)CREATE TABLE T ( num_col NUMBER(5);Ssm数值类型 判断:num_col字段是否可以存储123456? 不可以123456含有6位

8、数字,超过了定义时所规定的精度(5位)。因此,可以使用精度来保证某些数据完整性约束。CREATE TABLE T ( num_col NUMBER(5,0);Ssm数值类型 判断:向num_col插入123.456,Oracle是否会报错? 不会小数位数可以用于控制数值的“舍入”。尽管123.456超过了5位,但是Oracle会利用小数位数将123.456”舍入”为只有两位小数,这就得到了123.46,再根据精度来验证123.46,满足精度要求CREATE TABLE T ( num_col NUMBER(5,2);Ssm数值类型 判断:向num_col插入1234,Oracle是否会报错?

9、会数值1234.00的总位数超过了5位。指定小数位数为2时,小数点左边最多只能有3位,右边有两位。因此,1234超过了定义的精度。NUMBER(5,2)列的存储范围是-999.99999.99CREATE TABLE T ( num_col NUMBER(5,2);Ssm数值类型 判断:是否可以如下定义num_col字段? 可以将小数位数定义为负值,作用在于允许对小数点左边的值舍入CREATE TABLE T ( num_col NUMBER(5,-2);Ssm数值类型 判断:向num_col插入123.456,数据库会最终存储的数值是多少? 100就像NUMBER(5,2)将值舍入为最接近的

10、0.01量级一样,NUMBER(5,-2)会把数值舍入为与之最接近的100量级CREATE TABLE T ( num_col NUMBER(5,-2);Ssm数值类型 判断:向num_col插入1234567,Oracle是否会报错? 不会精度指示了舍入后数值允许有多少位,并使用小数位数来确定如何舍入CREATE TABLE T ( num_col NUMBER(5,-2)Ssm数值类型 判断:NUMBER数据类型是定长类型? 错 NUMBER类型是一种变长格式,长度为022字节。随着有效数字数字的增加,NUMBER类型需要越来越多的存储空间。每增加两位有效数字,就需要另外一个字节的存储空间

11、。Oracle存储一个数时,会使用尽可能少的内容来表示。为此,它会存储有效数字、用户指定小数点位置的一个指数,以及有关数值符号的信息Ssm数值类型 BINARY_FLOAT/BINARY_DOUBLE类型在Oracle 10g之前的版本中没有这两种类型。他们就是IEEE标准浮点数,用于近似数值,没有NUMBER类型精确。BINARY_FLOATBINARY_DOUBLE浮点数常用于科学计算中,可在硬件(CPU,芯片)上执行运算,用于科学计算中的实数处理,处理速度会快的多。不过,浮点数不适合于存储金融信息Ssm数值类型 特殊值特殊值描述BINARY_FLOAT_NAN非BINARY_FLOAT类

12、型的数字(NaN)BINARY_FLOAT_INFINITYBINARY_FLOAT类型的无穷大(INF)BINARY_DOUBLE_NAN非BINARY_DOUBLE类型的数字(NaN)BINARY_DOUBLE_INFINITY BINARY_DOUBLE类型的无穷大(INF)Ssm数值类型 Oracle在语法上支持的其他数值数据类型NUMBERNUMERIC(p,s)DECIMAL(p,s)DEC(p,s)INTEGERINTSMALLINTFLOAT(b)DOUBLE PRECISIONREALSsm二进制类型 数据库中以二进制类型存储的二进制数据不会进行字符集转换,而文本类型需要进行

13、字符集转换 Oracle支持3种数据类型来存储二进制数据 RAW类型能够存储最多2000字节的二进制数据 BLOB类型也即大对象类型 LONG RAW类型此类型是为了支持向后兼容性提供的Ssm二进制类型 RAWRAW类型是一个变长度的二进制串,物理上限是2000字节 ,不能存储可直接显示的字符数据。当使用SQL*PLUS等许多工具处理RAW数据时,这些RAW数据会被隐式地转换为一个VARCHAR2类型。RAW(size)Ssm二进制类型 判断:对于仅包含一个16字节长RAW类型的表T,通过SQL*Plus,Oracle会如何处理如下所示的命令?能成功执行插入字符abcdef么? 会成功执行插入

14、操作,但是插入的数据并不是字符串abcdef,而是一个3字节的RAW数据。SQL*PLUS将RAW类型获取为一个串时,会隐式地调用RAWTOHEX函数,而插入串时会隐式地调用HEXTORAW函数。INSERT INTO T VALUES( abcdef );Ssm二进制类型 判断:对于仅包含一个16字节长RAW类型的表T,通过SQL*Plus,Oracle会如何处理如下所示的命令? 报错,错误信息为”invalid hex number”。INSERT INTO T VALUES( abcdefgh );Ssm日期类型 Oracle固有数据类型DATE、TIMESTAMP和INTERVAL是紧

15、密相关的。DATE和TIMESTAMP类型可以存储固定日期/时间。INTERVAL类型可以存储一个时间量。 TIMESTAMP相对于DATE的两个优势: 支持小数秒 支持时区Ssm日期类型 判断:DATE类型就是用来存储日期(年月日)的? 错DATE类型不仅可以用来存储日期,还存储了有关时间的信息,精度可以到达整数秒。Ssm日期类型 DATEDATE类型是一个7字节的定宽日期/时间数据类型。它总是包含7个属性,包括:世纪、世纪中的哪一年、月份、月份中的哪一天、小时、分钟和秒。Oracle使用一种内部格式来表示这些信息。Ssm日期类型 判断:在书写过程中使用的日期格式会以某种方式影响磁盘上存储的

16、数据,并且会影响数据如何存储? 错格式对数据如何存储根本没有任何影响。格式只是用于将存储DATE所用的二进制格式转换为一个串,或者将一个串转换为用于存储DATE的二进制格式,对于TIMESTAMP和INTERVAL也是如此Ssm日期类型 日期类型到底是怎么存储的?Oracle以数值方式存储日期。Oracle支持儒略历(Julian date)。当系统使用儒略历时,它指定一个开始日期为第一天;接下来的一天为第二天等等,每个次日都将计数值增加1。Oracle所支持的儒略历的开始日期是公元前4712年的1月1日。用户使用熟悉的文本表示方式输入日期,Oracle在后台将它们转换成对应的儒略历。此外,儒

17、略历还可以存储时间值,时间以小数值存储在表示日期的整数值之后。Ssm日期类型 使用日期相关的系统变量存储时间信息时,应注意在查询时适当结合使用TRUNC函数。SsmROWID/UROWID类型 ROWIDROWID是数据库中一行的地址。ROWID中编入了足够多的信息,足以在磁盘上找到行,以及标识ROWID所指向的对象。ROWID并不真正存储在行中,而是行的一个推导属性,基于行的物理地址生成。 Oracle中除了索引组织表(IOT)外的所有行都有ROWID。ROWID主要用于作为物理地址来减少行更新操作的操作代价,加快访问任何表中某一行的速度。SsmROWID/UROWID类型 UROWIDUR

18、OWID是ROWID的“近亲”。它用于比如索引组织表(IOT)和通过异构数据库网关访问的没有固定ROWID的表。 UROWID基于行的主键生成,是行主键值的一个表示。但是,UROWID并不作为一个单独的列存在,而只是作为现有列的一个函数。SsmLONG类型 Oracle中的LONG类型有两种: LONG文本类型:可以存储2GB的文本 LONG RAW类型:可以存储2GB的原始二进制数据“不要创建带LONG列的表,而应该使用LOB列(CLOB,NCLOB,BLOB)。支持LONG列只是为了保证向后兼容性。”(Oracle SQL Reference)Ssm大对象类型 Oracle支持LOB或大对象(Large OBject)类型共有4种,分为两类: 存储在数据库中的LOB,也称为内部LOB CLOB NCLOB BLOB 存储在数据库之外的LOB BFILESsm小结 数据类型概述 字符类型 数值类型 二进制类型 日期类型 ROWID/UROWID LONG类型 大对象类型Ssm

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com