DB2数据库技术培训(4)

2018-11-21 15:18

DB2 UDB 数据库技术

用于存储的字节数取决于数字的精度并且用公式 p/2 +1 来计算。所以,DECIMAL(10,2) 要求 10/2 + 1 或者说 6 个字节。

浮点数(Floating Point)

REAL 和 DOUBLE 用于存储数字的近似值。例如,非常小或者非常大的科学计量可以定义为 REAL。定义 REAL 时长度可以定义在 1 和 24 之间并要求用 4 个字节来存储。DOUBLE 的长度可以定义在 25 和 53 之间,并要求用 8 个字节存储。FLOAT 可以作为 REAL 或 DOUBLE 的同义词。

2、字符串型(String)数据类型

DB2 提供了几种数据类型用来存储字符数据或字符串。下列数据类型用于存储单字节字符串:

CHAR

CHAR 或 CHARACTER 用于存储固定长度的字符串,长度最大为 254 个字节。

VARCHAR

VARCHAR 用于存储可变长度的字符串。VARCHAR 列的最大长度是 32,672 个字节。在数据库中,VARCHAR 数据只占用必需的空间。

www.fenet.com.cn下列数据类型用于存储双字节字符串: GRAPHIC

GRAPHIC 用于存储固定长度的双字节字符串,最大长度是 127 个字符。 VARGRAPHIC

广州菲奈特融通软件有限公司 第13页

DB2 UDB 数据库技术

VARGRAPHIC 用于存储可变长度的双字节字符串,最大长度是 16336 个字符。

DB2 还提供了用来存储非常长的字符串数据类型。所有的长字符串数据类型都有相似的特征。首先,数据不是以行数据实际存储在数据库中,这意味着访问这些数据需要进行一些额外处理。长数据类型的长度最大可以定义到 2G。长数据类型有:

? LONG VARCHAR ? CLOB 或称字符大对象 ? LONG VARGRAPHIC

? DBCLOB 或称双字节字符大对象

?

BLOB 或称二进制大对象

3、日期时间型(Datetime)数据类型

DB2 提供了三种数据类型来存储日期和时间:

? DATE ? TIME ? TIMESTAMP

这些数据类型的值都以内部格式存储在数据库中,但在程序中您可以将它们作为字符串进行操作。这些数据类型中的任何一个被检索时,都表示为字符串。在更新这些数据类型时,必须用引号把值括起来。

DB2 提供了一些内臵函数来操作日期时间值。例如,您可以用 DAYOFWEEK 或 DAYNAME 函数确定日期值的星期号。您可以用 DAYS 函数计算两个日期间有多少天。DB2 还提供了特殊的寄存器,可用它们根据当天时钟的时间,生成当前日期、时间或时间戳记。例如,CURRENT DATE 返回一个表示系统当前日期的字符串。

www.fenet.com.cn日期和时间值的格式取决于数据库的国家或地区代码,这些代码在创建数据库时指定。几种可用的格式是:ISO、USA、EUR 和 JIS。例如,如果您的数据库使用的是 USA 格式,那么日期值的格式为“MM/DD/YYYY”。创建应用程序时,可以通过使用 BIND 命令的 DATETIME 选项更改格式。

广州菲奈特融通软件有限公司 第14页

DB2 UDB 数据库技术

TIMESTAMP 数据类型只有一种格式。字符串表示为 YYYY-MM-DD-HH.MM.SS.NNNNNN。

4、数据链接型(Datalink)

DB2 提供了 DATALINK 数据类型来管理外部文件。DATALINK 列允许您存储对数据库外部文件的引用。这些文件可以驻留在同一个服务器或者驻留在远程服务器的文件系统中。DB2 提供了一些工具使应用程序可以安全地访问这些文件。

要往 DATALINK 列中插入值,必须使用内臵函数 DLVALUE。DLVALUE 需要几个参数,这些参数告诉 DB2 文件名,以及文件存储在何处。为从 DATALINK 列检索数据,DB2 根据所需的信息提供了几个函数。

(二)、表

CREATE TABLE SQL 语句用于在数据库中定义一个表。有许多选项可用于 CREATE TABLE 语句,详细信息可以在 SQL Reference 中找到。在创建表时,您可以让 DB2 把表放在缺省的表空间内,或者也可以指定表应该驻留在哪个表空间内。

一个数据库有一个表集,称为系统目录表(System Catalog Table),它保存关于数据库中所有对象的信息。数据库中定义的每个表在目录表 SYSCAT.TABLES 中都有相应的一行。数据库中每个表的每一列在 SYSCAT.COLUMNS 中都有相应的一行。您可以用 SELECT 语句象看数据库中的任何其它表一样看目录表。

您可以使用 ALTER TABLE SQL 语句更改表的某些特征。可以更改的一些特征是:

? 添加一个或多个列 ? 添加或删除一个主键

www.fenet.com.cn? 添加或删除一个或多个唯一性或引用约束 ? 添加或删除一个或多个检查约束 ? 更改 VARCHAR 列的长度

广州菲奈特融通软件有限公司 第15页

DB2 UDB 数据库技术

(三)、约束

DB2 提供了几种方法来控制什么数据可以存储在列中。这些功能被称为约束(constraint)或规则(rule),数据库管理器强制一个数据列或一组列遵守这些约束或规则。

DB2 提供了三种类型的约束:

? 唯一性约束,用于确保列中的值是唯一的。

? 引用完整性约束,用于定义表间的关系,并确保这些关系一直有效。 ? 表检查约束,用于验证列数据没有违反为列定义的规则。

1、唯一性约束

唯一性约束用于确保列中的值是唯一的。可以对一个或多个列定义唯一性约束。唯一性约束中包括的每个列都必须定义为 NOT NULL。

唯一性约束可以定义为 PRIMARY KEY 或 UNIQUE 约束。这些可以在创建表时作为 CREATE TABLE SQL 语句的一部分定义,或者在创建表后使用 ALTER TABLE 语句添加。

什么时候定义 PRIMARY KEY 或 UNIQUE 键?这取决于数据的属性。在前面的示例中,BOOKS 表有一个 BOOKID,它用于唯一地识别一本书。这个值还可以在包含与这本书相关的信息的其它表中使用。在这个例子中,您把 bookid 定义为主键。DB2 在一个表中只允许定义一个主键。

下面的实例中,BOOKS表的ISBN 列被定义为唯一的:

CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY, BOOKNAME VARCHAR(100),

ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE )

无论何时您为列定义一个 PRIMARY 或 UNIQUE 键,DB2 都会创建一个唯一的索引以强制列的唯一性。DB2 不允许创建重复的唯一性约束或重复的索引。

www.fenet.com.cn2、引用完整性约束

引用完整性约束用于定义表间的关系。拥有与另一个表相关的主键的表被称为父表(parent table)。与父表相关的表被称为从属表(dependent table)。可以为一个父表定义多个从属表。DB2 确保只向定义了引用完整性约束的列插入有效数

广州菲奈特融通软件有限公司 第16页

DB2 UDB 数据库技术

据。这意味着在父表中必须一直有这样一行,该行的键值等于您正要插入到从属表中的行的外键值。

您还可以定义同一个表中各行之间的关系。在这种情况下,父表和从属表是同一个表。

如果为一组表定义了引用约束,当对这些表执行更新操作时,DB2 就会强制这些表遵守引用完整性规则。

当从父表中删除一行,而该行在从属表中有从属行时,DB2 也强制要遵守一些规则。DB2 采取的操作取决于为表定义的删除规则。可以指定四条规则:RESTRICT、NO ACTION、CASCADE 和 SET NULL。

? 如果指定了 RESTRICT 或 NO ACTION,那么 DB2 不允许删除父

行。必须首先删除从属表中的行才能删除父表中的行。这条规则是缺省值。

? 如果指定了 CASCADE,那么从父表中删除行时还会自动删除所有从

属表中的从属行。

? 如果指定了 SET NULL,那么从父表中删除父行时从属行中的外键值

被设臵为空(如果可以为空的话)。

更新父表中的键值时,可以指定两条规则:RESTRICT 和 NO ACTION。如果从属表中有从属行则 RESTRICT 不允许更新键值。如果在更新的最后,在从属表中有从属行,而且从属行没有父表中的父键,则 NO ACTION 将导致对父键值的更新操作被拒绝。

3、表检查约束

表检查约束被用于限制表的某一列中的值。DB2 将确保在插入和更新时不违反这条约束。

假设我们向 BOOKS 表添加了一个有关书籍类型的列,该列允许类型的值为

www.fenet.com.cn'F'(小说)和 'N'(非小说)。我们可以添加一个列 BOOKTYPE,检查约束如下:

ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK (BOOKTYPE IN ('F','N') )

广州菲奈特融通软件有限公司 第17页


DB2数据库技术培训(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:供水管网管理工作的思考

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: