`

DB2中结构化类型和类型化表的管理

阅读更多

DB2中结构化类型和类型化表的管理
 
    使用结构化类型定义的表称为类型化表,同样使用结构化类型定义的视图称为类型化视图,
一个结构化类型可以是另一个结构化类型(超类型)的子类型,子类型可以继承超类型的所有属
性,并且可以增加新的属性,一个子类型也可以是其它结构类型的超类型,因此用户可以运行子
类型和超类型去创建一个结构化类型的类型层次,下面介绍结构化类型和类型化表的管理.
1. 创建结构化类型
   CREATE TYPE语句可以创建结构化类型
   如:
   CREATE TYPE  TYPE_NEW AS
   (EMP_NO  VARCHAR(40)
    QTY_AGE  INTEGER)
   REF USING  INTEGER
   MODE DB2SQL;
2. 创建表并且引用这个新创建的类型
   CREATE TABLE EMPLOYEE OF TYPE_NEW
   (REF IS OID USER GENERATED);
   CREATE TABLE EMP OF EMP_T UNDER EMPLOYEE
   INHERIT SELECT PRIVILEGES;
   表中的列OID是对象标识符,每个类型化表中必须有OID列作为第一列的,OID列并且是唯一的.
   OID列的数据类型是REFERENCE.
   REF IS定义OID列的列名.
   USER GENERATED子语句表示每当插入新行时,该行的OID列的值由用户决定,一旦插入成功,
   该列OID的数值就不在允许更新.
   INHERIT SELECT PRIVILEGES表示在超表中拥有SELECT权限的任何用户或组在新建的子表中
   将被授予一个相同的权限.
3. 新建表EMPLOYEE进行插入数据
   INSERT INTO EMPLOYEE
   (OID,EMP_NO,QTY_AGE)
   VALUES
   (TYPE_NEW(1),'S1895',33);
   上面的例子中结构化类型TYPE_NEW用两个属性EMP_NO,QTY_AGE来定义的,然后在类型化表
   EMPLOYEE中使用该结构化类型TYP_NEW进行定义
4. 修改结构化类型
   ALTER TYPE 语句可以增加或删除一个已经存在的结构化类型的属性
   如:
   ALTER TYPE TYPE_NEW ADD ATTRIBUTE TEL_NO CHAR(12);
   ALTER TYPE TYPE_NEW DROP ATTRIBUTE TEL_NO;
   注意:
   如果一个类型或它的子类型是一个已经存在的表的类型,则不能用ALTER TYPE来修改之.
5. 删除类型化表
   用语句DROP TABLE HIERARCHY TABLE_NAME可以删除类型化表
   用语句DROP VIEW  HIERARCHY VIEW_NAME可以删除类型化视图
6. 从类型化表中查询
   查询全部记录
   SELECT *  FROM EMPLOYEE;
   只查询表EMPLOYEE上的行,使用ONLY语句
   SELECT *  FROM ONLY(EMPLOYEE);
   不仅查询指定表上的列,还要查询该表的子表上的列,可以使用OUTER语句
   SELECT *  FROM OUTER(EMPLOYEE);
7. 更新类型化表中的记录
   UPDATE EMPLOYEE SET QTY_AGE=40  WHERE OID=TYPE_NEW(2) ;
   强制转换函数TYPE_NEW将整数类型转换为REFERENCE类型
8. 删除类型化表中的记录  
   DELETE FROM TABLE;
   如果用户只删除特定类型表(不包括它的子表)中的行,可以使用ONLY语句
   DELETE FROM ONLY(TABLE);
9. 类型化表属性的查询
   SYSCAT.TABLES中的ROWTYPESCHEMA列和ROWTYPENAME列包含类型化表的信息.
   SYSCAT.DATATYPES可以查询每一个结构化类型.
   SYSCAT.HIERARCHIES包括子表和它的直接超表间的关系以及子类型和它的直接超类型间的关系.
   其中METATYPE列的包括对象的关系类型编码如下:
   R---结构化类型之间的关系
   U---类型化表间关系
   W---类型化视图间关系
10.引用列
   在类型化表定义中,用户可以将列定义为另一个类型化表的引用列.
   被引用的类型化表称为目标表
   如:
   CREATE TYPE DEPT_T AS (NAME CHAR(10),;OCATION CHAR(20))
    REF USING INTEGER MODE DB2SQL;
   CREATE TYPE EMP_T UNDER TYPE_NEW
    AS (SALARY INTEGER,DEPTREF REF(DEPT_T)) MODE DB2SQL;
   EMP_T的定义中规定了两个属性,一个是INTEGER的SALARY,另一个是REFERENCE类型的DEPTREF,
   REF(DEPT_T)意味EMP_T类型的DEPTREF属性是引用类型的,并且引用目标是行类型DEPT_T或
   DEPT_T的子类型的表中的行.
   下面是创建基于上门的结构化类型的类型化表
   CREATE TABLE DEPT OF DEPT_T(REF IS OID USER GENERATED);
   CREATE TABLE EMP OF EMP_T UNDER EMPLOYEE
   INHERIT SELECT PRIVILEGES
   (DEPTREF WITH OPTIONS SCOPE DEPT);
   DEPTREF WITH OPTIONS SCOPE DEPT表示DEPTREF列的数值指向DEPT表中的行
   SCOPE被称为作用域,类型化表EMP引用领一个类型化表的引用列,这种关系在CREATE TABLE时称为作用域.

11.解除引用操作符(DEREFERENCE OPERATOR)
   解除引用操作符(->)从有OID列匹配的行返回目标表或它的子表的命名列值.
   如:
   SELECT E.NAME FROM EMP E
   WHERE E.DEPTREF->LOCATION='AUSTN';
   上面的语句等价于
   SELECT E.NAME FROM EMP E,DEPT D
   WHERE E.DEPTREF=D.OID
   AND D.LOCATION='AUSTN';

12.类型化表和类型化视图上的SQL函数
   DEREF(函数)
   返回变量的结构化类型.
  
   TYPE_ID(表达式)
   返回动态数据类型的内部类型标识符,它的变量必须是结构化类型.  
   如:
   SELECT TYPE_ID(DEREF(OID)),NAME FROM EMP;
  
   TYPE_NAME(表达式)
   返回动态数据类型的内部类型的绝对名,它的变量必须是结构化类型.  
   如:
   SELECT TYPE_NAME(DEREF(OID)),NAME,SALARY FROM EMP;
  
   TYPE_SCHEMA(表达式)
   返回动态数据类型的内部类型的模式名,它的变量必须是结构化类型.  
   如:
   SELECT TYPE_SCHEMA(DEREF(OID)),NAME,SALARY FROM EMP;
13.使用类型化表和视图的注意事项
   在子表(主键OID从超表继承)上不能创建主关键词
   在子表上不能创建唯一索引
   定义在表上的检查约束自动应用到该表的所有子表上
   不支持LOAD命令
   不支持复制
RUNSTATS,REORG和REORGCHK只在根表上執行

 

分享到:
评论

相关推荐

    db2表空间不足及处理.doc

    DB2表空间是数据库管理系统中用于存储数据的基本结构单元。DB2表空间不足可能会导致数据库性能下降,甚至崩溃。因此, DB2表空间的检查和处理是数据库管理员的重要任务之一。 一、DB2表空间的概念 DB2表空间是...

    DB2数据库中的各数据类型

    DB2数据库是一个强大的关系型数据库管理系统,其内部支持多种数据类型,这些数据类型的设计使得DB2能够处理各种复杂的数据结构和类型。以下是DB2数据库中主要数据类型的详细说明: 1. **数值型数据类型**: - **...

    DB2 存储结构,编目与数据库创建

    DB2是IBM开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。在深入探讨DB2的存储结构、编目以及数据库创建之前,我们首先需要理解数据库的基本概念。数据库是一个有组织的数据集合,它提供了数据的...

    DB2和ORACLE数据库导出表结构空间和存储过程脚本。

    总结来说,通过提供的压缩包文件,用户可以自动化地从DB2和Oracle数据库中提取重要的元数据,这对于数据库维护、迁移和灾难恢复都是非常有价值的。熟悉这些工具和流程,将有助于提升数据库管理的专业水平。

    Linux 和 Windows 上的DB2安装和管理入门

    4. SQL语句:DB2使用结构化查询语言(SQL)作为其数据库操作的主要工具。DB2支持大部分标准SQL语句,并提供了一些特定于DB2的扩展。 5. 备份和恢复:DB2提供了备份和恢复机制来保护数据。备份可以是逻辑备份也可以...

    DB2数据库管理手册

    - **节点组**: 一个或多个数据库分区组成的集合,用于组织和管理数据库分区。 - **数据库**: 由表空间组成,表空间的定义和属性记录在数据库系统目录中。 - **表空间**: 表的物理存储单元,分配有一个容器(如文件或...

    查看DB2表信息

    在DB2数据库管理系统中,管理和操作数据表是日常运维的重要环节。本文将深入探讨如何查看DB2表信息以及如何重命名表,这些都是DB2数据库管理员和开发者必备的技能。 首先,我们来了解一下如何重命名DB2中的表。...

    DB2数据库数据库教学管理系统

    综上所述,"DB2数据库教学管理系统"是一个集成了IBM DB2数据库技术和SQL语言的教育管理工具,通过严谨的系统设计流程,实现了教学信息的有效组织和管理,为现代教学管理提供了科技支持。这个系统不仅锻炼了开发者的...

    db2管理指南(计划)

    - **表设计**: 表是数据库中的核心组件,设计时需要考虑表结构、索引以及数据类型等因素。 - **索引策略**: 有效的索引可以显著提高查询性能,因此在设计时需要考虑如何创建合适的索引。 - **规范化**: 规范化是减少...

    db2——db2

    DB2是IBM开发的一款关系型数据库管理系统(RDBMS),在全球范围内被广泛应用于企业级的数据存储和管理。作为一款强大的数据库解决方案,DB2提供了高效、安全且可扩展的特性,适用于各种规模的企业,包括金融、电信、...

    DB2常用命令列表,DB2常用命令列表

    11. 查看表结构:describe命令用于查看表的结构,例如:db2 describe table user1.department db2 describe select * from user.tables。 12. 查看表的索引:describe命令用于查看表的索引,例如:db2 describe ...

    DB2_V95中文官方文档

    5. **DB2pureXML-db2xgc953.pdf**:DB2 pureXML功能支持XML数据的存储和查询,让DB2能够处理半结构化数据。文档会详细介绍如何使用XML数据类型、XML索引以及XML查询语言(如XQuery)。 6. **DB2NetSearchExtender-...

    db2中文帮助

    - **DB2 管理服务器:**用于监控和管理多个DB2实例。 #### 五、DB2 工具 - **控制中心(Control Center):**图形界面工具,便于数据库管理员执行日常管理任务。 - **命令编辑器(Command Editor):**用于编写和...

    IBM DB2 UDB 词汇表.zip

    1. **数据库(Database)**:数据库是存储结构化数据的集合,DB2 UDB允许用户创建、查询、更新和管理这些数据。 2. **SQL(Structured Query Language)**:SQL是用于管理关系数据库的标准语言,DB2 UDB完全支持SQL...

    DB2数据库管理指南-性能

    掌握这些内容有助于DBA们在日常工作中更加有效地管理和优化DB2数据库系统性能,从而为企业带来更高的业务价值。 以上内容基于提供的文件信息进行了综合整理和拓展,旨在全面覆盖“DB2数据库管理指南-性能”的核心...

    DB2 Express C 9.7 3rd Edition Chinese.rar

    它具有高可用性、可伸缩性和安全性,可以处理各种类型的数据,包括结构化、半结构化和非结构化数据。DB2 Express C是DB2产品家族中面向开发和测试的版本,适合于中小型企业,提供了与企业版相似的核心功能,但限制了...

    DB2-730中文教材-WATCH-watch.pdf

    结构化查询语言(SQL)是DB2中用于数据操纵的标准语言。DB2的SQL实现允许用户通过标准的SQL语句和DB2扩展来查询、插入、更新和删除数据,以及执行更复杂的查询和数据操作。 六、数据一致性和并发性 在多用户环境中...

    DB2重点解析(课件)

    DB2的核心是SQL(结构化查询语言),它是管理关系数据库的标准语言。SQL在DB2中用于创建、更新和查询数据。理解SQL的SELECT、INSERT、UPDATE和DELETE语句是DB2学习的基石。 DB2的架构包括服务器、客户端、数据库和...

Global site tag (gtag.js) - Google Analytics