已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京久其软件股份有限公司,2019年9月11日,久其通用数据管理平台,数据库学习 数据类型篇,李双义,北京久其软件股份有限公司,2019年9月11日,数据库地位,支撑当代计算机应用最基本的四大支柱: 操作系统 网络技术 计算机语言 数据库,北京久其软件股份有限公司,2019年9月11日,数据库地位,数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支 数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透 数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志,北京久其软件股份有限公司,2019年9月11日,数据库系统概述,数据库是数据管理的最新技术,是计算机科学的重要分支。 常用术语 数据 数据库 数据库管理系统 数据库系统 数据库管理技术的产生和发展 数据库系统的特点,北京久其软件股份有限公司,2019年9月11日,数据库数据类型介绍,Oracle的数据类型可以分为四类,分别是标量类型、复合类型、引用类型和LOB类型。标量类型没有内部组件;而复合类型包含了能够被单独操作的内部组件;引用类型类似于3G语言中的指针,能够引用一个值;LOB类型就是一个lob定位器,能够指出大对象的存储位置。 1、标量(Scalar) 2、复合(composite) 3、引用(reference) 4、LOB,北京久其软件股份有限公司,2019年9月11日,1、标量(Scalar),1.1 数字型 1.2 字符型 1.3 行型 1.4 日期型 1.5 行标识型 1.6 布尔型 1.7 可信型,北京久其软件股份有限公司,2019年9月11日,1.1数字型,数字型可以存储整数、定点和浮点,可以表示数值的大小,参与计算。 1.1.1 NUMBER 1.1.2 PLS_INTEGER 1.1.3 BINARY_INTEGER,北京久其软件股份有限公司,2019年9月11日,1.1.1NUMBER,NUMBER 我们可以使用NUMBER数据类型来存储定点和浮点数。它的取值范围是1E-130至10E125。如果表达式的值超过这个范围,我们就会得到溢出错误。我们可以为要存储的数字指定精度,包括数字的全长和小数位。 NUMBER(p,s) P为Precision(p=38),意为数值的最大位数(十进制) S为Scale,意为小数点后的最多位数。范围(-84127之间) 如果S为负数,表示精确到小数点前若干位 P,S可以省略 NUMBER表示使用默认值,即等同于NUMBER(5),北京久其软件股份有限公司,2019年9月11日,NUMBER子类型,为了能和ANSI/ISO和IBM类型兼容或是想使用一个更加具有描述意义的名字,我们可以使用下面的MUNBER子类型: 1.DEC 2.DECIMAL 3.DOUBLE PRECISION 4.FLOAT 5.INTEGER 6.INT 7.NUMERIC 8.REAL 9.SMALLINT 使用DEC、DECIMAL和NUMERIC可以声明最大精度为38位十进制的定点数字。而使用DOUBLE PERCISION和FLOAT可以声明最大精度为126为二进制的浮点数字,大约相当于38位十进制数字。或是使用REAL声明最大精度为63位二进制的浮点数字,大约相当于18位二进制数字。INTEGER、INT、和SMALLINT可以声明最大精度为38位十进制数字的整数。,北京久其软件股份有限公司,2019年9月11日,1.1.2 PLS_INTEGER,PLS_INTEGER 我们可以使用PLS_INTEGER数据类型来存储有符号整数。它的取值范围在-231至231之间。PLS_INTEGER所需要的存储空间要比NUMBER少,运算的速度要高于NUMBER和BINARY_INTEGER。虽然PLS_INTEGER和BINARY_INTEGER取值范围一样,但它们不完全兼容。PLS_INTEGER在运算时如果有溢出,则会有异常抛出,而BINARY_INTEGER发生溢出时,如果结果是要赋给一个NUMBER类型的变量时,就不会有异常抛出。为了考虑兼容性,我们仍可以在旧的应用程序中使用BINARY_INTEGER,按在新的应用程序中,PLS_INTEGER会带来更好的性能。,北京久其软件股份有限公司,2019年9月11日,1.1.3 BINARY_INTEGER, BINARY_INTEGER 可以描述不存储在数据库中,但是需要用来计算的带符号的整数值。以2的补码二进制形式表述。循环计数器常使用此类型。 我们可以使用BINARY_INTEGER数据类型来存储有符号整数。它的范围是-2*31至2*31。跟PLS_INTEGER一样,BINARY_INTEGER所需要的存储空间也小于NUMBER。但是,大多数的BINARY_INTEGER操作比PLS_INTEGER操作慢。,北京久其软件股份有限公司,2019年9月11日,BINARY_INTEGER子类型,BINARY_INTEGER子类型 所谓的基类型,就是子类型继承于它。子类型在基类型的基础上添加一些约束限制,也可能重新定义数值范围。为了使用方便,PL/SQL预定义了下面的几个BINARY_INTEGER的子类 1.NATURAL 2.NATURALN 3.POSITIVE 4.POSITIVEN 5.SIGNTYPE 子类型NATURAL和POSITIVE能让我们将一个整型变量的取值范围分别限制在非负数和正整数之内。NATURALN和POSITIVEN不允许为整数类型变量赋空值。SIGNTYPE把正说的取值范围限定在-1,0,1,在编程中很适合三态逻辑(tri-state logic),北京久其软件股份有限公司,2019年9月11日,1.2 字符型,字符类型可以存放字符和数字混合的数据,表现词和文章,操作字符串 1.2.1 CHAR 1.2.2 VARCHAR2 1.2.3 LONG 1.2.4 NCHAR 1.2.5 NVARCHAR2,北京久其软件股份有限公司,2019年9月11日,1.2.1 CHAR,定长类型CHAR 我们可以使用CHAR类型来存储定长的字符数据。但该数据的内部表现形式是取决于数据库字符集的。CHAR类型有一个用于指定最大长度的可选参数,长度范围在1到32767字节之间,我们可以采用字节或字符的形式来设置该参数。具体语法如下: CHAR(maximum_sizeCHAR | BYTE ) Maximum_size不能是常量或者变量,只能是范围在1至32767之间的整数文字。 CHAR(1) 1为字符串长度,缺省值为1, 作为变量最大长度32767个字符, 作为数据存储在Oracle中最大为2000 长度固定,填充空格 性能稍好,适合固定长度的编号等,北京久其软件股份有限公司,2019年9月11日,1.2.2 VARCHAR2, 变长类型VARCHAR2 我们可以使用VARCHAR2类型来存储变长的字符数据。至于数据在数据空中的内部表现形式要取决于数据区的字符集。 语法如下: VARCHAR2(maximum_sizeCHAR |BYTE) 我们不能使用常量或变量来指定maxinum_size值,maximum_size值的有效范围在1到32767之间。 对于长度不同的VARCHAR2类型数据,PL/SQL对它们的处理方式也不相同。 截止点:2000字节 =2000 效率优先,动态分配空间 VARCHAR2(n),最大4000,北京久其软件股份有限公司,2019年9月11日,VARCAHR2子类型,下面VARCHAR2的子类型的范围与VARCHAR2完全相同,它们只是VARCHAR2的一个别名而已。 1.STRING 2.VARCHAR 我们可以使用这些子类型来与ANSI/ISO和IBM 类型兼容。 注意:目前VARCHAR和VARCHAR2有着相同的意义,但是在以后的PL/SQL版本中,为了符合SQL标准,VARCHAR有可能会作为一个单独的类型出现。所以最好使用VARCHAR2,而不是VARCHAR。,北京久其软件股份有限公司,2019年9月11日,1.2.3 Long,LONG 我们可以使用LONG类型来存储变长的字符串。 在数据库存储中可以保存2GB数据; 作为变量最大可表示32760字节的可变字符串 LONG类型和VARCHAR2很像。 注意:在SQL语句中,PL/SQL会将LONG类型的值绑定成VARCHAR2类型,而不是LONG。但是,如果被绑定的VARCHAR2值超过4000个字节,Oracle会自动地将绑定类型转换成LONG,但LONG并不能应用在SQL函数中,所以,这时我们就会得到一个错误消息。,北京久其软件股份有限公司,2019年9月11日,1.2.4 NCHAR,本地字符:NCHAR和NVARCHAR2 NCHAR 国家字符集,于环境变量NLS制定的语言有关 我们用NCHAR类型来储存定长国家特有字符数据。数据的内部表现形式取决于数据库创建时指定的国家特有字符集,字符集可能采用变长编码(UTF-8)或定长编码(AL16UTF16)。因为这种类型总是与多字节字符兼容,所以我们可以使用它支持任何Unicode字符数据。 NCHAR数据类型可以接受一个可选参数来让我们指定字符的最大长度。语法如下: NCHAR(maximum_size),北京久其软件股份有限公司,2019年9月11日,1.2.5 NVARCHAR2, NVARCHAR2 我们可以使用NVARCHAR2数据类型来存储变长的Unicode字符数据。数据的内部表现取决于数据库创建时所指定的国家特有字符集,它有可能采用变长编码(UTF8)或者定长编码(AL16UTF16)。因为这个类型纵欲多字节兼容,我们可以用它来支持Unicode字符数据。 NVARCHAR2数据类型需要接受一个指定最大大小的参数,语法如下: NCARCHAR2(maximum_size),北京久其软件股份有限公司,2019年9月11日,1.3 行型,行 存储二进制数据,不会在字符集间转换 1.3.1 Raw 1.3.2 Long Raw,北京久其软件股份有限公司,2019年9月11日,1.3.1 Raw,Raw 我们可以使用RAW数据类型来存储二进制数据或字符串。例如,一个RAW类型的变量可以存储一个数字化图形。RAW类型数据和VARCHAR2类型数据类似,只是PL/SQL不对其进行解析而已。同样在我们把RAW数据从一个系统传到另一个系统中时,Oracle Net也不会对它做字符集转换。RAW类型包含了一个可以让我们指定最大长度的可选参数,上限为32767字节。语法如下: RAW(maximum_size) maximum不能为常量或者变量来指定,必须为1到32767范围内的整数参数。 作为数据存储在Oracle中最大为2000,北京久其软件股份有限公司,2019年9月11日,1.3.2 Long Raw, Long Raw 我们可以使用LONG RAW类型来存储二进制数据或者二进制字符串。LONG RAW 和LONG类似,但是它不会被PL/SQL解析。 作为数据库列最大存储2G字节数据;作为变量最大32760字节 从9i开始,LOB类型变量可以与LONG和LONG RAW类型交换使用。Oracle推荐将LONG和LONG RAW都对应的转换成CLOB和BLOB类型,北京久其软件股份有限公司,2019年9月11日,1.4 日期型,Datetime日期时间类型 日期及时间DATE 世纪、年、月、天、小时、分钟、秒 公元前4712到公元后9999 精度为秒,适合记录一般时间 TIMESTAMP(n) TIMESTAMP是对DATE的扩展,包含了年月日时分秒 N为秒分量的小数位,从0到9,最大精度为微秒 还可以支持时区 INTERVAL时间间隔 时间间隔,这是一个差值,而不是绝对时间,北京久其软件股份有限公司,2019年9月11日,1.5 行标识型,行标识 ROWID 在Oracle内部,每个数据表都有一个伪列ROWID,用于存放被称为ROWID的二进制值。每个ROWID代表了一行数据的存储地址。物理ROWID能够标识普通数据表中的一行信息,而逻辑ROWID能够标识索引组织表(index-organized table)中的一行信息。其中ROWID类型只能存物理内容,而UROWID(universal rowid)类型可以存储物理、逻辑或外来(non-Oracle)ROWID 建议:只有在旧的应用程序中,为了兼容性我们才使用ROWID数据类型。对于新的应用程序,应该使用UROWID数据类型。,北京久其软件股份有限公司,2019年9月11日,1.6 布尔型,布尔 布尔类型能存储逻辑值TRUE、FALSE和NULL(NULL代表缺失、未知或不可用的值)。只有逻辑操作符才允许应用在布尔变量上。 boolean 数据库SQL类型并不支持布尔类型,只有PL/SQL才支持。所以就不能往数据库中插入或从数据库中检索出布尔类型的值。,北京久其软件股份有限公司,2019年9月11日,1.7 可信型,可信 可信,只有一种类型-MLSLABEL,可以在TRUSTED ORACLE中用来保存可变长的二进制标签。在标准ORACLE中,只能存储NULL值。,北京久其软件股份有限公司,2019年9月11日,2 复合(composite),复合 标量类型是经过预定义的,利用这些类型可以衍生出复合类型。主要有记录、表。 2.1 记录 2.2 表,北京久其软件股份有限公司,2019年9月11日,2.1 记录,记录 记录,可以看做成是一组标量的组合结构,它的声明方式如下: TYPE record_type_name IS RECORD filed1 type1 NOT NULL :=expr1) filedn type NOT NULL :=exprn 其中, record_type_name 是记录类型的名字,引用时必须定义相关的变量,记录只是TYPE,不是VARTABLE,北京久其软件股份有限公司,2019年9月11日,2.2 表,表 不是物理存储数据的表,在这里是一种变量类型,也成为PL/SQL表,它类似于C语言中的数组,在处理方式上也类似 。它的声明方式如下: TYPE table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTEGER; 其中, table_type_name 是类型的名字,scalar_type是一种变量类型的类型声明。引用时必须定义相关的变量。表和数组不同。表有两列,KEY和VALUE,KEY就是定义时声明的BINARY_INTEGER,VALUE就是定义时声明的scalar_type。,北京久其软件股份有限公司,2019年9月11日,3 引用,在PL/SQL8.0之前,只有一种类型 REF CURSOR,也就是游标。它的定义比较简单, CURSOR cursor_name IS selectfrom; 在PL/SQL8.0之后,引入REF类型,它指向一个对象。,北京久其软件股份有限公司,2019年9月11日,4 LOB,LOB LOB(large object)数据类型BFILE、BLOB、CLOB和NCLOB可以最大存储4G的无结构数据(例如:文本、图像、视频剪辑和音频)块,并且它们允许高效地随即地分段访问数据。 LOB类型中存储了LOB定位器,它能够指向存放于外部文件中的“大对象”,in-line或out-of-line的形式。BOLB、CLOB、NCLOB或BFILE类型的数据库字段存储了定位器。其中BLOB、CLOB和NCLOB的数据存在数据库中,in-line 或out-of-line的形式,而BFILE数据存在数据库之外的操作系统文件中。 PL/SQL是通过定位器来操作LOB的。 4.1 CLOB 4.2 NCLOB 4.3 BLOB 4.4 BFILE,北京久其软件股份有限公司,2019年9月11日,4.1 CLOB,CLOB CLOB可以在数据库中分别存储大块CHAR类型的字符数据,支持定宽和变宽字符集。指向自身类型的一个大的数据块。可以在事务中应用,能被恢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026消费分级趋势下防滑浴垫细分赛道差异化定位与增长逻辑研报
- 2026年可再生能源证书:绿电交易的市场化路径
- 2026欧盟REACH法规更新下胶凝剂合规风险与供应链重构报告
- 2026智能材料在自适应椭圆变形模具中的应用前景深度研究
- 2026吉林机关事业单位工人技术等级考试(高级制冷设备维修工)历年参考题库含答案详解
- 2026口腔执业医师-第一单元考试历年参考题库含答案详解
- 2026卫生专业技术资格考试(消毒技术-专业实践能力·主管技师)历年参考题库含答案详解
- 2026医疗卫生系统招聘考试(针灸推拿)历年参考题库含答案详解
- 2026医学影像技术期末复习-核医学(专科医学影像技术)历年题库含答案详解
- 2026副高面审答辩-副高068面审答辩精神病学历年题库含答案详解
- 落地式脚手架培训课件
- 2025年南京理工大学紫金学院智能制造学院专任教师公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 电烙铁焊接技巧和方法
- 帕金森护理常规
- T/SSR 703-2020多联式空调(热泵)机组连接用铜管订货技术条件
- 大货车转让合同协议书
- 全国公安移动警务视频应用建设指南(征求意见稿)-正式-来源广东
- 2024-2030年中国电瓷行业运行态势及发展策略研究报告
- 口腔诊所医保统计信息管理制度范本
- 电气控制与PLC原理及应用(第2版)PPT完整全套教学课件
- 英语阅读知到章节答案智慧树2023年运城幼儿师范高等专科学校
评论
0/150
提交评论