欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    对象关系数据库Word格式文档下载.docx

    • 资源ID:5176228       资源大小:46.06KB        全文页数:36页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    对象关系数据库Word格式文档下载.docx

    1、(3)创建对象表,实现面向对象的数据库设计(而非关系型数据库设计)。二. 利用对象类型定义复合数据类型1. 用户自定义数据类型使用对象类型定义一个记录数据类型CREATE TYPE name_type AS OBJECT ( first_name VARCHAR2(4), last_name VARCHAR2(4) ) ; CREATE TYPE address_type AS OBJECT( city VARCHAR2(10), street VARCHAR2(10), zip NUMBER(6) ) ;CREATE TABLE worker ( wid NUMBER(5) PRIMARY

    2、KEY, wname name_type , address address_type ) ;2. 对象类型数据的操作(1)使用对象类型声明了关系表中的列,DML语句必须用一些特殊的语法(2)插入新记录时,对于对象类型的列,要使用构造函数构造出对应类型的数据。(3)构造函数是对象类型的特殊方法,利用此方法为该类型创建对象。构造方法的名称与对象类型(类)同名。(4)对记录型数据的分量进行操作时,要使用“别名”插入语句例:insert into worker values(1,name_type(王,至远), address_type(北京白颐路5号,100084);insert into wor

    3、ker values(2,name_type(张,大年 address_type(天津,康宁里20号,300072);insert into worker values(3,name_type(赵力平上海南京路23号,200092);查询语句1 :select * from worker ;查询语句2 : select wid, wname from worker;WID NAME(FIRST_NAME, LAST_NAME)- - 1 NAME_TYPE(王, 至远) 2 NAME_TYPE(张, 大年) 3 NAME_TYPE(赵, 力平)3. 对象类型数据的查询查询语句3 (用别名 )s

    4、elect wid 顾客编号,w.address.city 城市, w.address.street 街道,w.address.zip 邮编from worker w ;查询语句4(别名的使用) select * from worker w order by w.address.zip ;4. 对象类型数据的操作修改update worker w set w.address.zip=100083 where wid=1 ;删除delete from worker where wid=1;delete from worker w where w.wname.first_name=张 ;修改表结构

    5、alter table cust add(address1 address_type);不能对表修改自定义的数据类型格式 5.用户自定义数据类型(1)对象类型更加贴近现实世界的数据特征。(2)使用对象类型可以更加统一、自然地声明和操作表中的数据 (在整个数据库中地址一致性)(3)创建可为大家引用的新数据类型:a.创建一个模式(如 pub) b.建立公共对象类型(新数据类型)c.设置必要的权限(4)使用 CREATE PROCEDURE new_worker( wid NUMBER , name pub.name_type , address pub.address_type ) ;6. 自定义

    6、数据类型上的索引create index aaa on worker(wname);ORA-02327: 无法在具有数据类型 ADT 的列上创建索引。(即使在name_type类中定义了排序方法也不可以)(1)如经常进行如下查询:select wid 顾客编号,w.address.city 城市,w.address.street 街道,w.address.zip 邮编from worker w where w.address.zip=100084 ;(2)可建索引如下:create index I_zip on worker(address.zip);三使用对象表 面向对象数据库设计1. 建立

    7、对象表的类建类型(对象类型声明)create type 类型名 as object( 属性名1 类型说明, 属性名2 类型说明, . member function 函数名 (参数说明) return 返回类型, member procedure 过程名(参数说明), ) ;2. 对象属性类型对象类型必须包含一个或多个属性,属性的类型可以是:Oracle的原始数据类型 LOB 对象对象的引用(REF) 收集(COLLECTION)等3. 对象方法(1)方法是一个过程或函数, 是对象类型定义的一部分,是程序员编写的用于操纵对象属性的子程序,被封装在对象类型中。(2)方法的种类:a.成员方法 (m

    8、ember) b.构造方法 (constructor)c.MAP 或 ORDER 方法(排序方法)(3)一个类可以有多个方法(也可以不定义方法)(4)对象类型不存储数据;必须创建相应的表来存储数据4. 编写方法代码建类型体(实现类成员方法)create type body 类型名 ASmember function 函数方法名 (参数说明) return 返回类型is 说明部分begin 执行部分end ;member procedure 过程方法名(参数说明)isbeginEND ;5. 建立对象表建对象表 Create table 表名 of 对象类型( ) ;例:CREATE TYPE

    9、employee_type AS OBJECT(.) ;CREATE TABLE employees OF employee_type (empno constraint e1 primary key );表定义的其他说明,如完整性约束等,表的列不能再定义CREATE TYPE BODY employee_type() ;6. 建立对象类型例CREATE TYPE employee_type AS OBJECT ( Empno NUMBER(3), Ename VARCHAR2(10), sal NUMBER(6,2), hiredate DATE , MEMBER FUNCTION days

    10、_at_company RETURN NUMBER, MEMBER PROCEDURE raise_salary(increment_sal NUMBER) );/7. 创建对象表CREATE TABLE employees OF employee_type ( PRIMARY KEY(empno),UNIQUE(ename),CHECK(sal300)8. 建立对象类型体CREATE OR REPLACE TYPE BODY employee_type ASMEMBER FUNCTION days_at_company RETURN NUMBER IS BEGINRETURN floor(s

    11、ysdate - hiredate);END; raise_salary(increment_sal NUMBER) IS UPDATE employees SET sal = sal + increment_sal WHERE empno = SELF.empno;9. 对方法的限制(1)编译软件包中的函数或过程时, 可以使用PRAGMA编译指令通知PL/SQL编译器禁止某方法对数据库表和包中的变量读写, 当方法体中出现违反情况时, 编译出错。(2)格式: PRAGMA RESTRICT_REFERENCES ( function_name, WNDS , WNPS , RNDS , RNP

    12、S );WNDS 不允许写数据库 RNDS 不允许读数据库 WNPS 不允许改程序包变量 RNPS 不允许引用程序包变量 CREATE OR REPLACE TYPE employee_type AS OBJECT ( empno NUMBER, ename VARCHAR2(10), sal NUMBER, hiredate DATE , RETURN NUMBER, raise_salary(increment_sal NUMBER) , PRAGMA RESTRICT_REFERENCES (days_at_company, WNDS , WNPS ) );10. 对象类型-构造子方法(

    13、1)Oracle 自动地为每个对象类型创建一个构造方法。(2)构造子方法的名称采用对象类型名。(3)构造子方法的参数即对象类型的所有属性。(4)构造子方法初始化一个对象类型的实例, 并将它的属性赋值。(5)例:insert into employees values(employee_type(1 , Jone , 500 , 5-10月-1989);11. 对象表操作(1)建表 create table employees of employee_type;(2)插入数据insert into employees values(employee_type(1,Jone,500,5-10月-1

    14、989);下面插入语句省略构造方法 :insert into employees values (1,Jone,1500, 5-10月-1989);insert into employees values (2,smith,700,10-5月-1997insert into employees values (3,king,900,25-12月-2000);12. 获取行对象value函数(1)value(对象表别名)返回一个行对象(对象类型)(2)value用于从对象表中取得对象实例。(3)不使用value, SELECT只能返回一个对象的各个列值。select * from employe

    15、es; EMPNO ENAME HIREDATE- 1 Jone 05-10月-89 2 smith 10-5月-97 3 king 25-12月 -00select value(e) from employees e;VALUE(E) (EMPNO, ENAME, HIREDATE)-EMPLOYEE_TYPE(1, Jone, 05-10月-89)EMPLOYEE_TYPE(2, smith, 10-5月-97EMPLOYEE_TYPE(3, king, 25-12月 -0013. 对象表方法调用select ename ,hiredate from employees where emp

    16、no=1 ;select ename , e.days_at_company() days from employees e where empno=3;14.PL/SQL中对象方法的调用(1)在PL/SQL程序中,取得的对象实例必须被相同类型的对象变量接收。(2)例:declareemp employee_type; select value(e) into emp from employees e where empno=1; emp.raise_salary(500);end;DECLAREemp_variabl employee_type;days_employed number;SE

    17、LECT VALUE( e ) INTO emp_variable FROM employees eWHERE e.empno = 3 ;days_employed := emp_variable.days_at_company() ;dbms_output.put_line(Days employed: | to_char(days_employed) ;15. 对象方法小结(1)对象类型总是有1到多个方法(构造方法是隐含方法,成员方法为0n个。(2)成员方法可以带输入输出参数。(3)每个成员方法含有名为SELF的隐含第一参数,它具有与对象类型自身相同的类型。(4)定义函数方法,如没参数不用

    18、写括号,但调用时要写括号。定义方法形参时,类型不用写长度,如varchar2 16. 对象表的特性(1)对象表是只用对象类型定义的数据库表,不含关系型列。(2)对象表的列对应(用来创建表的)对象类型的属性。(3)对象表的行是表类型的对象(实例),每一行都有一个系统分配的唯一的对象标识符(OID)a.对象ID(OID)是每一个行对象的唯一描述符,是全局唯一的,并且可以引用b.OID不用于定位数据, ROWID仍用于定位数据 (4)oracle 通过对象引用实现数据库中不同对象之间的联系(与关系表完全不同) 17. 获取对象引用ref 函数(1)具有OID的对象实例可以被引用(REF) (2)re

    19、f(对象表的别名)-返回对象表实例指针,即行对象的引用。(3)例:select ref(e) from employees e ;REF(e)-000028020965D.0BEFE0340800209ADC5901403BE50000000028020965D.0BEFE0340800209ADC5901403BE50001000028020965D.0BEFE0340800209ADC5901403BE50002 18. 对象引用例(1)建立对象表cust create type cust_type as object (custid number(5), Name name_type,

    20、address address_type ); create table cust of cust_type (custid primary key );(2) 向cust表中插入数据insert into cust values(1,name_type( address_type(北京,白颐路5号,100084) );insert into cust values(2,name_type(张,大年 address_type(天津康宁里20号,300072);insert into cust values(3,name_type(3)查询cust表select * from cust wher

    21、e custid=1;select c.address.city,c.address.zip from cust c where c.name.first_name=王 ;(4)修改cust 表结构 ?alter table cust add(address1 address_type); 不允许!(5)建立goods_type CREATE TYPE goods_type AS OBJECT( gno NUMBER(3), gname varchar2(20), price number(6,2);CREATE TABLE goods OF goods_type ( constraint p

    22、1 primary key(gno) ;INSERT INTO goods VALUES(101,电视机,2900);INSERT INTO goods VALUES(102,洗衣机,1500);(6)CREATE TYPE order_type AS OBJECT( orderid NUMBER(3), customer REF cust_type, orderdate DATE, qty NUMBER(5), gno NUMBER(3);/ (7) CREATE TABLE orders OF order_type ( FOREIGN KEY (gno) REFERENCES goods(

    23、gno) ) ;19. 对象表对象引用(1)REF是指向行对象的指针,易于实现表和表之间的联系,对象之间连接不再需要关系表的连接(JOIN)操作。(2)将对象表的表别名作为REF的参数,可以取得对应OID的引用值。(3)引用只能用于具有OID的对象。(4)customer REF cust_type SCOPE IS CUST SCOPE子句用于限定一个引用在一个指定表中,这样可以提高查询性能,并减少存储指针的空间。20.引用类型数据的操作 INSERT INTO orders SELECT 1, ref(c), 7-1月-2000,165, 101 FROM cust c WHERE cus

    24、tid=1;UPDATE orders SET customer = ( SELECT ref( c ) FROM cust c WHERE custid = 2 )WHERE orderid = 1 ;SELECT customer FROM orders WHERE orderid = 1;SELECT o.customer.custid 顾客号, o.customer.name.last_name 名,orderdate 日期 FROM orders o WHERE orderid = 1 21.对象引用简化了代码(1)数据库管理对象间的连接,用户只需通过属性进行对象的引用。(2)在关系

    25、设计中, 开发人员必须使用联接(JOIN)SELECT name,address,. FROM orders o, cust cWHERE o.custid = c.custid and orderid =1;22.deref函数(1)deref (ref指针)返回指针指向的对象本身 select deref(customer) from orders where orderid=1;23. SQL语句中的排序和比较(1)传统的数据类型主要为标量数据类型: number, char,date (2)标量数据类型可以排序(如order by ) (3)排序在SQL语句的使用:a. 关系运算( =

    26、 ) b. between 及 in 的判断c. order by group by distinct 子句 d. unique 和 primary key 约束 (4)自定义数据类型如何排序select wname, address from worker order by address ;错误位于第2行:ORA-22950: 无法 ORDER 没有 MAP 或 ORDER 方法的对象24. 对象类型的排序方法(1)同类的排序对支持用户定义的对象类型很重要。(2)对象类型由于结构复杂, 必须借助方法实现排序和比较。a.MAP方法将对象类型转换为传统数据类型。b.ORDER方法提供排序规则。比较本对象和另一对象实例, 并返回1, 0, -1 分别代表 大于、等于、小于。(3)一个对象类型只能有一个MAP方法或一个 ORDER方法:a. map member function b


    注意事项

    本文(对象关系数据库Word格式文档下载.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开