CREATE TYPE name_objtyp AS OBJECT
(first_name VARCHAR2(30),last_name VARCHAR2(30) ) ;
◼ 创建表,定义其中的属性是对象类型
[例6]
CREATE TABLE people_reltab (
Id NUMBER(10),
name_obj name_objtyp,
address_obj address_objtyp);
抽象数据类型抽象数据类型Abastract Data Type)
❖ 概念: SQL3允许用户创建指定的带有自身行为说明和内
部结构的用户定义类型称为抽象数据类型
❖ 定义ADT的一般形式为
CREATE TYPE <type_name> (
所有属性名及其类型说明,
[定义该类型的等于=和小于<函数, ]
定义该类型其他函数(方法));
NOTE:
▪ (1) ADT的属性定义和行类型的属性定义类同。
▪ (2) 在创建ADT的语句中,通过用户定义的函数比较对象的值。
▪ (3) ADT的行为通过方法(methods)、函数(functions)实现。
▪ (4) SQL3要求抽象数据类型是封装的,而行类型则不要求封装。
▪ (5) ADT有3个通用的系统内置函数
▪ (6) ADT可以参与类型继承
1.1. 参照类型(Reference Type)
❖REF类型(参照类型、引用类型)
▪ 引入的原因:
类型之间可能具有相互参照的联系
▪ 形式
REF <类型名>
▪ 特点:
➢REF类型总是和某个特定的类型相联系。
➢它的值是OID
❖创建两个表: Employee和Company,两表之间存在相互参照关系,即某个职工在某个公司工作
▪ (1)创建行类型
[例7]
CREATE ROW TYPE employee_type(
name VARCHAR(35),
age INTEGER );
CREATE ROW TYPE Comp_ type(
compname VARCHAR(20),
location VARCHAR(20) );
▪ (2)创建基于行类型的表:
CREATE TABLE Employee OF employee_type;
CREATE TABLE Company OF Comp_ type
▪ (3)描述参照关系
CREATE ROW TYPE Employment type (
employee REF (employee_type)
,
company REF (Comp type) );
CREATE TABLE Employment OF Employment _type
➢表Employment中某一个元组的employee属性值是某个职工的OID