维护啦:提供专业网站维护服务,以实惠、方便、快捷著称!一次服务,终身朋友! ·付款帐号 ·联系我们
网站维护,网站维护教程,如何维护网站
网站维护热线: 网站维护咨询热线 网站维护:
网站维护
网站建设: 网站建设
首页
维护介绍
维护套餐
案例分享
维护申请
维护反馈
维护知识
行业动态
联系我们
建站服务请点这里>>
网站维护申请
当前位置:网站维护 > 维护知识 > 数据库知识

使用 DB2 对象:创建约束

来源:网站维护 作者:www.weihula.com 人气: 2016-7-22
内容提示:约束使 DBMS 能够防止不正确的或意外的数据输入表中,从而确保表中数据的完整性。

  约束使 DBMS 能够防止不正确的或意外的数据输入表中,从而确保表中数据的完整性。DB2 中使用以下约束实施数据完整性:
  主键(Primary key)
  用来确保一个列或一组列的值的惟一性。每个表只能有一个主键。
  外键(Foreign key)或称为引用约束(referential constraint)
  用来在两个表之间建立引用关系,这两个表通常称为子表和父表,用来建立引用关系的操作在 REFERENCE 子句中定义。当在父表或子表中插入/删除/更新的数据满足预定义的条件时,就执行这个操作。外键总是应该引用父表中的主键或惟一键。
  惟一键(Unique key)
  用来确保一个列或一组列的值的惟一性。与主键相反,一个表可以有多个惟一键。惟一键还使外键能够引用主键之外的数据列。每当定义主键或惟一键时,就会创建惟一索引。
  检查约束(Check constraint)
  在表级上针对一个或多个表列定义检查约束,它们可以对这些表列实施指定的规则,使这些列中插入或更新的数据满足检查约束中预先定义的条件。与其他约束不同,检查约束可以在某些操作期间临时关闭,比如 LOAD,在对约束进行检查之前,表处于检查未决状态。
  可以在创建表时创建约束,也可以使用 ALTER TABLE 语句或 GUI 界面在以后添加约束。
  以下练习演示如何创建和使用这些约束。它还演示如何使用 Command Editor 执行一些日常管理任务:
  1、在 Control Center 主菜单中,点击 Tools > Command Editor。出现 Command Editor 窗口。使用这个编辑器编辑 DB2 命令,执行它们,然后查看返回的 DB2 或 SQL 消息。
  2、首先在 AUTHOR 表中添加另一个列,然后在这个表上添加一个主键。添加以下命令并点击图1 所示的绿色执行按钮:
  图1 Command Editor —— 修改表

  在添加主键时,由于 AUTHOR_ID 上已经有了一个惟一索引, DB2 要在幕后创建一个惟一索引。 DB2 为这个主键使用现有的索引,并返回 SQL0598W。
  3、在 Command Editor 中,还可以选择将现有命令保存到文件中,或者用接下来要编辑或运行的新命令替换它们。
  4、将 Command Editor 窗口中的命令替换为以下命令:

  CONNECT TO HWLD;
  CREATE TABLE HWLD.MODULE
  ( MODULE_ID INT NOT NULL,
  MODULE_NAME CHAR(20) NOT NULL,
  PRIMARY KEY (MODULE_ID),
  CONSTRAINT MID_UNIQ UNIQUE
  (MODULE_ID, MODULE_NAME),
  CONSTRAINT MID_CHECK CHECK (MODULE_ID >= 0)
  )
  IN TBSP_DATA1 INDEX IN TBSP_INDEX1;
  CONNECT RESET;

  5、这个 CREATE TABLE 命令在创建表期间创建一个主键约束、一个惟一键约束和一个检查约束。检查约束要求数据列 MODULE_ID 中的值都是正数。图2显示预期的运行结果:
  图 2. Command Editor —— 创建表

  可以使用 CREATE TABLE 向导完成同样的任务。
  6、现在,已经创建了两个表。表 HWLD.AUTHOR 包含 Hello World 模块的所有作者信息。表 HWLD.MODULE 包含所有 Hello World 系列模块信息。现在,创建另一个表 HWLD.PARTICIPANT,它包含所有参与者的信息,包括姓名、部门(可选)、参与的模块和测试分数。
  表 HWLD.PARTICIPANT 应该具有以下的表定义:

  (PAR_NAME VARCHAR(50) NOT NULL,
  PAR_ID BIGINT NOT NULL,
  PAR_AREA CHAR(20),
  MODULE_ID INT,
  PAR_TEST_SCORE INT)

  7、注意以下条件:
每个人可以多次测试多个模块
测试分数应该在 0 到 100 之间
HWLD.PARTICIPANT 中的 MODULE_ID 应该引用 HWLD.MODULE 中的 MODULE_ID。当从表 HWLD.MODULE 中删除一个模块时,将 PARTICIPANT 表中对应的 MODULE_ID 设置为 NULL,所以 NULL 值在这里不会是无效的 MODULE_ID 值。
当在 HWLD.PARTICIPANT 表中插入一行时,如果它的 MODULE_ID 在 HWLD.MODULE 中不存在,那么插入失败。
当更新表 HWLD.MODULE 中的一个模块时,如果 HWLD.PARTICIPANT 表中存在着引用这个 MODULE_ID 的记录,那么更新失败。
  8、添加以下约束来实施前面的条件:
列 PAR_TEST_SCORE 上的检查约束确保它的值在 0 到 100 之间
MODULE_ID 上的外键引用 HWLD.MODULE 中的 MODULE_ID,并设置 ON DELETE SET NULL,ON UPDATE RESTRICT(注意,关于插入的第 4 条规则在默认情况下已经实施了)。
  可以在创建表 HWLD.PARTICIPANT 时创建这些约束。
  9、在 Control Center 中,从 Tables 视图启动 Create New Table 向导。选择 HWLD 作为表模式,输入 PARTICIPANT 作为表名,并添加注释。点击 Next。
  10、在 Columns 页面上,点击 Add 添加第一个列。指定 PAR_NAME VARCHAR(50) NOT NULL 并选择 VARCHAR 作为数据类型。
  11、点击 OK。在 Columns 页面上,添加第二个列 PAR_ID BIGINT NOT NULL。点击 OK。添加第三个列 PAR_AREA CHAR(20)。注意,这个列允许 NULL 值。
  12、同样,添加第四个列 MODULE_ID INT 和第五个列 PAR_TEST_SCORE INT。它们的数据类型都是 INTEGER,都允许 NULL 值。
  13、检查已经添加的列。
  图3. Create Table 向导 —— 列

  14、点击 Next。再次点击 Next 跳过 Data Partitions 页面。
  15、与前面创建的两个表相似,表 HWLD.PARTICIPANT 也为数据和索引使用单独的表空间。选择 TBSP_DATA1 作为数据的表空间,选择 TBSP_INDEX1 作为索引的表空间。点击 Next。
  16、在 Keys 页面上,点击 Add Foreign。输入 PMID_FOR 作为外键名。
  图4. Create Table 向导 —— 添加外键

  17、选择 HWLD.MODULE 作为父表。在 Available columns 中选择 MODULE_ID,并点击 > 将它添加为外键。对于 On delete 选择 SET NULL,对于 On update 选择 RESTRICT。点击 OK。应该会看到定义了以下约束:
  图5. Create Table 向导 —— 键

  点击 Next。(在这里,可以创建不同类型的键,比如惟一键和主键。在这个练习中,只创建一个外键。)
  18、再次点击 Next 跳过 Dimensions 页面。
  19、在 Define Check Constraints 页面上,点击 Add 启动 Add Check Constraint 向导。
  20、输入 PAR_SCORE_CHECK 作为检查约束名。添加以下代码作为检查条件: PAR_TEST_SCORE BETWEEN 0 and 100
  选择两个约束属性。
  21、输入注释。点击 OK 添加这个约束。点击 Finish。在 DB2 Message 窗口中应该会返回 DB20000。关闭它。
  22、检查新创建的 PARTICIPANT 表是否显示在 Control Center 中。
  回顾 HWLD.PARTICIPANT,考虑您是否能够想出可以用约束实现的其他条件。(提示:当前的实现对于参与者以及分配给他们的参与者 ID 没有要求惟一性;实现这一条件有两种方法。一种是将当前的 HWLD.PARTICIPANT 表分割成两个表,对参与者 ID 实施惟一性约束,并建立引用参与者 ID 的外键。您能想出另一种方法吗?)
  下图总结了前面创建的三个表以及在其中添加的约束。
  图6. 刚创建的表及其约束

【声明】本文章系本站编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!
收藏本页到:

感谢您对维护啦的大力支持!

上一篇 上一篇:使用 DB2 对象:创建模式、表和视图
下一篇 下一篇:初学:ASP内建对象Response
返回文章目录 返回维护知识
icon-008.jpg (3733 bytes) icon-009.jpg (3728 bytes)
维护啦是做什么的,点此了解>>
维护啦的优势是什么,点此了解>>
维护啦服务有哪些,点此了解>>
维护服务申请,点这里>>
维护动态 网站维护套餐介绍 更多动态 维护动态
·入门型网站维护服务 申请>>
·标准型网站维护服务 申请>>
·经济型网站维护服务 申请>>
·商务型网站维护服务 申请>>
·豪华型网站维护服务 申请>>
·专业型网站维护服务 申请>>
·订制型网站维护服务 申请>>
维护动态 网站维护案例 更多动态 维护动态
西箔侯铝箔餐盒
铜川市重德热力运营管理有限公司
青海旅游包车
西安中联传感技术有限公司
莱德种业
维护动态 网站维护知识 更多动态 维护动态
·域名知识 ·空间知识
·网页知识 ·程序知识
·数据库知识 ·邮件知识
·安全知识 ·优化知识
·营销知识 ·其他知识
网站维护 网站维护申请 网站维护申请点此进入 网站维护意见反馈 反馈意见

网站维护电话咨询

网站维护 返回顶部
关于维护啦 | 案例分享 | 维护套餐 | 维护申请 | 意见反馈 | 维护知识 | 行业动态 | 友情链接 | 网站导航 | 联系方式
2019 © 网站维护 www.weihula.com 版权所有 ICP08105261