数据库学习数据库类型篇_第1页
数据库学习数据库类型篇_第2页
数据库学习数据库类型篇_第3页
数据库学习数据库类型篇_第4页
数据库学习数据库类型篇_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库学习数据库类型篇北京久其软件股份有限公司2023年4月21日第1页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日数据库地位□支撑当代计算机应用最基本的四大支柱:

◆操作系统◆网络技术◆计算机语言◆数据库

第2页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日数据库地位数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志第3页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日数据库系统概述数据库是数据管理的最新技术,是计算机科学的重要分支。常用术语数据数据库数据库管理系统数据库系统数据库管理技术的产生和发展数据库系统的特点第4页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日数据库数据类型介绍◆Oracle的数据类型可以分为四类,分别是标量类型、复合类型、引用类型和LOB类型。标量类型没有内部组件;而复合类型包含了能够被单独操作的内部组件;引用类型类似于3G语言中的指针,能够引用一个值;LOB类型就是一个lob定位器,能够指出大对象的存储位置。□1、标量(Scalar)□2、复合(composite)□3、引用(reference)□4、LOB第5页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1、标量(Scalar)□1.1数字型□1.2字符型□1.3行型□1.4日期型□1.5行标识型□1.6布尔型□1.7可信型第6页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.1数字型◆数字型可以存储整数、定点和浮点,可以表示数值的大小,参与计算。1.1.1NUMBER1.1.2PLS_INTEGER1.1.3BINARY_INTEGER第7页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.1.1NUMBER□NUMBER

我们可以使用NUMBER数据类型来存储定点和浮点数。它的取值范围是1E-130至10E125。如果表达式的值超过这个范围,我们就会得到溢出错误。我们可以为要存储的数字指定精度,包括数字的全长和小数位。

NUMBER(p,s)P为Precision(p<=38),意为数值的最大位数(十进制)S为Scale,意为小数点后的最多位数。范围(-84~127之间)如果S为负数,表示精确到小数点前若干位P,S可以省略NUMBER表示使用默认值,即等同于NUMBER(5)第8页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日NUMBER子类型◆为了能和ANSI/ISO和IBM类型兼容或是想使用一个更加具有描述意义的名字,我们可以使用下面的MUNBER子类型:

1.DEC 2.DECIMAL 3.DOUBLEPRECISION 4.FLOAT 5.INTEGER 6.INT 7.NUMERIC 8.REAL 9.SMALLINT

使用DEC、DECIMAL和NUMERIC可以声明最大精度为38位十进制的定点数字。而使用DOUBLEPERCISION和FLOAT可以声明最大精度为126为二进制的浮点数字,大约相当于38位十进制数字。或是使用REAL声明最大精度为63位二进制的浮点数字,大约相当于18位二进制数字。INTEGER、INT、和SMALLINT可以声明最大精度为38位十进制数字的整数。第9页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.1.2PLS_INTEGER□PLS_INTEGER

我们可以使用PLS_INTEGER数据类型来存储有符号整数。它的取值范围在-2^31至2^31之间。PLS_INTEGER所需要的存储空间要比NUMBER少,运算的速度要高于NUMBER和BINARY_INTEGER。虽然PLS_INTEGER和BINARY_INTEGER取值范围一样,但它们不完全兼容。PLS_INTEGER在运算时如果有溢出,则会有异常抛出,而BINARY_INTEGER发生溢出时,如果结果是要赋给一个NUMBER类型的变量时,就不会有异常抛出。为了考虑兼容性,我们仍可以在旧的应用程序中使用BINARY_INTEGER,按在新的应用程序中,PLS_INTEGER会带来更好的性能。第10页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.1.3BINARY_INTEGER□BINARY_INTEGER

可以描述不存储在数据库中,但是需要用来计算的带符号的整数值。以2的补码二进制形式表述。循环计数器常使用此类型。

◆我们可以使用BINARY_INTEGER数据类型来存储有符号整数。它的范围是-2**31至2**31。跟PLS_INTEGER一样,BINARY_INTEGER所需要的存储空间也小于NUMBER。但是,大多数的BINARY_INTEGER操作比PLS_INTEGER操作慢。

第11页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日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-statelogic)第12页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.2字符型◆字符类型可以存放字符和数字混合的数据,表现词和文章,操作字符串□1.2.1CHAR□1.2.2VARCHAR2□1.2.3LONG□1.2.4NCHAR□1.2.5NVARCHAR2第13页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.2.1CHAR□定长类型CHAR

我们可以使用CHAR类型来存储定长的字符数据。但该数据的内部表现形式是取决于数据库字符集的。CHAR类型有一个用于指定最大长度的可选参数,长度范围在1到32767字节之间,我们可以采用字节或字符的形式来设置该参数。具体语法如下:

CHAR[(maximum_size[CHAR|BYTE])]

Maximum_size不能是常量或者变量,只能是范围在1至32767之间的整数文字。

CHAR(1)

1为字符串长度,缺省值为1, 作为变量最大长度32767个字符, 作为数据存储在Oracle中最大为2000

◆长度固定,填充空格

◆性能稍好,适合固定长度的编号等第14页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.2.2VARCHAR2□变长类型VARCHAR2

我们可以使用VARCHAR2类型来存储变长的字符数据。至于数据在数据空中的内部表现形式要取决于数据区的字符集。 语法如下:

VARCHAR2(maximum_size[CHAR|BYTE])

我们不能使用常量或变量来指定maxinum_size值,maximum_size值的有效范围在1到32767之间。 对于长度不同的VARCHAR2类型数据,PL/SQL对它们的处理方式也不相同。 截止点:2000字节

<2000性能优先,声明时分配指定大小

>=2000效率优先,动态分配空间◆VARCHAR2(n),最大4000第15页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日VARCAHR2子类型下面VARCHAR2的子类型的范围与VARCHAR2完全相同,它们只是VARCHAR2的一个别名而已。

1.STRING 2.VARCHAR

我们可以使用这些子类型来与ANSI/ISO和IBM类型兼容。

注意:目前VARCHAR和VARCHAR2有着相同的意义,但是在以后的PL/SQL版本中,为了符合SQL标准,VARCHAR有可能会作为一个单独的类型出现。所以最好使用VARCHAR2,而不是VARCHAR。第16页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.2.3Long□LONG

我们可以使用LONG类型来存储变长的字符串。 在数据库存储中可以保存2GB数据; 作为变量最大可表示32760字节的可变字符串

LONG类型和VARCHAR2很像。

注意:在SQL语句中,PL/SQL会将LONG类型的值绑定成VARCHAR2类型,而不是LONG。但是,如果被绑定的VARCHAR2值超过4000个字节,Oracle会自动地将绑定类型转换成LONG,但LONG并不能应用在SQL函数中,所以,这时我们就会得到一个错误消息。第17页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.2.4NCHAR本地字符:NCHAR和NVARCHAR2□NCHAR

国家字符集,于环境变量NLS制定的语言有关 我们用NCHAR类型来储存定长国家特有字符数据。数据的内部表现形式取决于数据库创建时指定的国家特有字符集,字符集可能采用变长编码(UTF-8)或定长编码(AL16UTF16)。因为这种类型总是与多字节字符兼容,所以我们可以使用它支持任何Unicode字符数据。

NCHAR数据类型可以接受一个可选参数来让我们指定字符的最大长度。语法如下:

NCHAR(maximum_size)第18页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.2.5NVARCHAR2□NVARCHAR2

我们可以使用NVARCHAR2数据类型来存储变长的Unicode字符数据。数据的内部表现取决于数据库创建时所指定的国家特有字符集,它有可能采用变长编码(UTF8)或者定长编码(AL16UTF16)。因为这个类型纵欲多字节兼容,我们可以用它来支持Unicode字符数据。

NVARCHAR2数据类型需要接受一个指定最大大小的参数,语法如下:

NCARCHAR2(maximum_size)第19页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.3行型□行 存储二进制数据,不会在字符集间转换◆1.3.1Raw◆1.3.2LongRaw第20页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.3.1Raw□Raw

我们可以使用RAW数据类型来存储二进制数据或字符串。例如,一个RAW类型的变量可以存储一个数字化图形。RAW类型数据和VARCHAR2类型数据类似,只是PL/SQL不对其进行解析而已。同样在我们把RAW数据从一个系统传到另一个系统中时,OracleNet也不会对它做字符集转换。RAW类型包含了一个可以让我们指定最大长度的可选参数,上限为32767字节。语法如下:

RAW(maximum_size) maximum不能为常量或者变量来指定,必须为1到32767范围内的整数参数。 作为数据存储在Oracle中最大为2000第21页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.3.2LongRaw□LongRaw

我们可以使用LONGRAW类型来存储二进制数据或者二进制字符串。LONGRAW和LONG类似,但是它不会被PL/SQL解析。 作为数据库列最大存储2G字节数据;作为变量最大32760字节 从9i开始,LOB类型变量可以与LONG和LONGRAW类型交换使用。Oracle推荐将LONG和LONGRAW都对应的转换成CLOB和BLOB类型第22页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.4日期型□Datetime日期时间类型□日期及时间DATE ◆世纪、年、月、天、小时、分钟、秒 ◆公元前4712到公元后9999 ◆精度为秒,适合记录一般时间

□TIMESTAMP(n) TIMESTAMP是对DATE的扩展,包含了年月日时分秒

◆N为秒分量的小数位,从0到9,最大精度为微秒 ◆还可以支持时区□INTERVAL时间间隔 ◆时间间隔,这是一个差值,而不是绝对时间第23页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.5行标识型□行标识 ◆ROWID

在Oracle内部,每个数据表都有一个伪列ROWID,用于存放被称为ROWID的二进制值。每个ROWID代表了一行数据的存储地址。物理ROWID能够标识普通数据表中的一行信息,而逻辑ROWID能够标识索引组织表(index-organizedtable)中的一行信息。其中ROWID类型只能存物理内容,而UROWID(universalrowid)类型可以存储物理、逻辑或外来(non-Oracle)ROWID

建议:只有在旧的应用程序中,为了兼容性我们才使用ROWID数据类型。对于新的应用程序,应该使用UROWID数据类型。

第24页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.6布尔型□布尔 布尔类型能存储逻辑值TRUE、FALSE和NULL(NULL代表缺失、未知或不可用的值)。只有逻辑操作符才允许应用在布尔变量上。

boolean

数据库SQL类型并不支持布尔类型,只有PL/SQL才支持。所以就不能往数据库中插入或从数据库中检索出布尔类型的值。第25页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日1.7可信型□可信

可信,只有一种类型---MLSLABEL,可以在TRUSTEDORACLE中用来保存可变长的二进制标签。在标准ORACLE中,只能存储NULL值。

第26页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日2复合(composite)□复合

标量类型是经过预定义的,利用这些类型可以衍生出复合类型。主要有记录、表。◆2.1记录◆2.2表第27页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日2.1记录□记录

记录,可以看做成是一组标量的组合结构,它的声明方式如下:

TYPErecord_type_nameISRECORD {filed1type1[NOTNULL][:=expr1])

… filedntype[NOTNULL][:=exprn]}

其中,record_type_name是记录类型的名字,引用时必须定义相关的变量,记录只是TYPE,不是VARTABLE第28页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日2.2表□表

不是物理存储数据的表,在这里是一种变量类型,也成为PL/SQL表,它类似于C语言中的数组,在处理方式上也类似。它的声明方式如下:

TYPEtable_type_nameISTABLEOFscalar_typeINDEXBYBINARY_INTEGER;

其中,table_type_name是类型的名字,scalar_type是一种变量类型的类型声明。引用时必须定义相关的变量。表和数组不同。表有两列,KEY和VALUE,KEY就是定义时声明的BINARY_INTEGER,VALUE就是定义时声明的scalar_type。第29页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日3引用在PL/SQL8.0之前,只有一种类型REFCURSOR,也就是游标。它的定义比较简单,CURSORcursor_nameISselect…from…;在PL/SQL8.0之后,引入REF类型,它指向一个对象。第30页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日4LOB□LOB

LOB(largeobject)数据类型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.1CLOB◆4.2NCLOB◆4.3BLOB◆4.4BFILE第31页,共36页,2023年,2月20日,星期六北京久其软件股份有限公司2023年4月21日4.1CLOB□CLOB CLOB可以在数据库中分别存储大块CHAR类型的字符数据,支持定宽和变宽字符集。指向自身类型的一个大的数据块。可以在事务中应用,能被恢复和复制。定位器可以跨事务使用,但不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论