分享
 
 
 

DB2中結构化類型和類型化表的管理

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

DB2中結构化類型和類型化表的管理

作者: CCBZZP

使用結构化類型定義的表稱為類型化表,同樣使用結构化類型定義的視圖稱為類型化視圖,

一個結构化類型可以是另一個結构化類型(超類型)的子類型,子類型可以繼承超類型的所有屬

性,并且可以增加新的屬性,一個子類型也可以是其他結构類型的超類型,因此用戶可以運行子

類型和超類型去創建一個結构化類型的類型層次,下面介紹結构化類型和類型化表的管理.

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只在根表上執行

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有