freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

oracle8對象關(guān)系數(shù)據(jù)庫(編輯修改稿)

2025-02-10 23:13 本頁面
 

【文章內(nèi)容簡介】 ) ? (‘…’) 。 ? 環(huán)境設(shè)置 ? exec ? set serveroutput on 對象方法小結(jié) ? 對象類型總是有 1到多個方法(構(gòu)造方法是隱含方法,成員方法為 0~n個。 ? 成員方法可以帶輸入輸出參數(shù)。 ? 每個成員方法含有名為 SELF的隱含第一參數(shù),它具有與對象類型自身相同的類型。 ? 定義函數(shù)方法,如沒參數(shù)不用寫括號,但調(diào)用時要寫括號。定義方法形參時,類型不用寫長度,如 varchar2 對象表的特性 ? 對象表是只用對象類型定義的數(shù)據(jù)庫表,不含關(guān)系型列。 ? 對象表的列對應(yīng)(用來創(chuàng)建表的)對象類型的屬性。 ? 對象表的行是表類型的對象 (實(shí)例 ),每一行都有一個系統(tǒng)分配的唯一的對象標(biāo)識符( OID) ? 對象 ID(OID)是每一個行對象的唯一描述符 ,是全局唯一的 ,并且可以引用 ? OID不用于定位數(shù)據(jù) , ROWID仍用于定位數(shù)據(jù) ? oracle 通過對象引用實(shí)現(xiàn)數(shù)據(jù)庫中不同對象之間的聯(lián)系(與關(guān)系表完全不同) 獲取對象引用 — ref 函數(shù) ? 具有 OID的對象實(shí)例可以被引用 (REF) ? ref(對象表的別名) 返回對象表實(shí)例指針,即行對象的 引用。 ? 例: select ref(e) from employees e 。 REF(e) 000028020965D...0BEFE0340800209ADC5901403BE50000 000028020965D...0BEFE0340800209ADC5901403BE50001 000028020965D...0BEFE0340800209ADC5901403BE50002 對象引用例 ? 建立對象表 cust Create type cust_type as object ( custid number(5), name name_type, address address_type )。 create table cust of cust_type (custid primary key )。 對象引用例 ? 向 cust表中插入數(shù)據(jù) insert into cust values(1,name_type(39。王 39。,39。至遠(yuǎn) 39。), address_type(‘北京’ ,‘白頤路 5號’ ,100084) )。 insert into cust values(2,name_type(‘張’ ,‘大年 39。), address_type(39。天津 39。,39??祵幚?20號 39。,300072))。 insert into cust values(3,name_type(39。趙 39。,39。力平 39。), address_type(39。上海 39。,39。南京路 23號 39。,202392))。 對象引用例 ? 查詢 cust表 select * from cust where custid=1。 select , from cust c where =‘王’ 。 ? 修改 cust 表結(jié)構(gòu) ??? alter table cust add(address1 address_type)。 不允許?。?! 對象引用例 ? 建立 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 p1 primary key(gno)) 。 INSERT INTO goods VALUES(101,39。電視機(jī) 39。,2900)。 INSERT INTO goods VALUES(102,39。洗衣機(jī) 39。,1500)。 對象引用例 CREATE TYPE order_type AS OBJECT( orderid NUMBER(3), customer REF cust_type, orderdate DATE, qty NUMBER(5), gno NUMBER(3) )。 / CREATE TABLE orders OF order_type ( FOREIGN KEY (gno) REFERENCES goods(gno) ) 。 對象引用例 customer gno number orders 2 張大年 cust gno goods = 對象表 — 對象引用 ? REF是指向行對象的指針,易于實(shí)現(xiàn)表和表之間的聯(lián)系,對象之間連接不再需要關(guān)系表的連接( JOIN) 操作。 ? 將對象表的表別名作為 REF的參數(shù) ,可以取得對應(yīng) OID的引用值。 ? 引用只能用于具有 OID的對象。 ? customer REF cust_type SCOPE IS CUST SCOPE子句用于限定一個引用在一個指定表中,這樣可以提高查詢性能,并減少存儲指針的空間。 INSERT INTO orders SELECT 1, ref(c), ‘71月 2023’ ,165, 101 FROM cust c WHERE custid=1。 UPDATE orders SET customer = ( SELECT REF( c ) FROM cust c WHERE custid = 2 ) WHERE orderid = 1 。 引用類型數(shù)據(jù)的操作 引用類型數(shù)據(jù)的操作 SELECT customer FROM orders WHERE orderid = 1。 22023865F009D0AC262… 42A35E0340800… SELECT 顧客號 , 名 ,orderdate 日期 FROM orders o WHERE orderid = 1 顧客號 名 日期 2 大年 071月 00 對象引用 — 簡化了代碼 ? 數(shù)據(jù)庫管理對象間的連系 ,用戶只需通過屬性進(jìn)行對象的引用。 ? 在關(guān)系設(shè)計(jì)中 , 開發(fā)人員必須使用聯(lián)接 (JOIN) SELECT name,address,... FROM orders o, cust c WHERE = and orderid =1。 deref函數(shù) ? deref (ref指針)返回指針指向的對象本身 ? 例: select deref(customer) from orders where orderid=1。 DEREF(CUSTOMER)(CUSTID, NAME(FIRST_NAME, LAST_NAME), ADDRESS(CITY, STREET, ZIP)) CUST_TYPE(2, NAME_TYPE(‘張’ , ‘大年’ ), ADDRESS_TYPE(‘天津’ , ‘康寧里 20號’ , 300072)) ? 試比較: select deref(ref(c)) from cust c where custid=2。 和 select value(c) from cust c where custid=2。 SQL語句中的排序和比較 ? 傳統(tǒng)的數(shù)據(jù)類型主要為標(biāo)量數(shù)據(jù)類型: ? number, char,date ? 標(biāo)量數(shù)據(jù)類型可以排序(如 order by …) ? 排序在 SQL語句的使用: ? 關(guān)系運(yùn)算( = ) ? between 及 in 的判斷 ? order by group by distinct 子句 ? unique 和 primary key 約束 ? 自定義數(shù)據(jù)類型如何排序 select wname, address from worker order by address 。 錯誤位于第 2行: ORA22950: 無法 ORDER 沒有 MAP 或 ORDER 方法的對象 對象類型的排序方法 ? 同類的排序?qū)χС钟脩舳x的對象類型很重要。 ? 對象類型由于結(jié)構(gòu)復(fù)雜 , 必須借助方法實(shí)現(xiàn)排序和比較。 ? MAP方法將對象類型轉(zhuǎn)換為傳統(tǒng)數(shù)據(jù)類型。 ? ORDER方法提供排序規(guī)則。比較本對象和另一對象實(shí)例 , 并返回 1, 0, 1 分別代表 大于、等于、小于 。 ? 一個對象類型只能有一個 MAP方法或一個 ORDER方法: ? map member function … ? order member function… MAP 方法例 ? 對象類型 標(biāo)量類型 ? 方法返回一個傳統(tǒng)數(shù)據(jù)類型用于排序。 ? 沒有輸入?yún)?shù) (只有一個隱含參數(shù) SELF)。 ? 方法被隱含調(diào)用。 ? 在類型定義中說明 MAP方法: CREATE TYPE name_type AS OBJECT ( first_name varchar2(4), last_name varchar2(4), MAP MEMBER FUNCTION name_map RETURN varchar2 )。 ? 在類型體中實(shí)現(xiàn) MAP方法: CREATE TYPE BODY name_type AS MAP MEMBER FUNCTION name_map RETURN varchar2 IS BEGIN RETURN first_name || last_name 。 END。 END。 ? 排序: SELECT custid , FROM cust c ORDER BY name desc 。 任何基于 name_type類型的排序按名稱的拼接串作為大小比較的依據(jù)。 MAP 方法例 MAP方法隱含調(diào)用 ORDER 方法 ? 決定類型實(shí)例的序列關(guān)系。 ? 有一個參數(shù) (外加一個隱含的參數(shù) SELF) ? 函數(shù)方法返回一個整數(shù) ? 如果對象自身比參數(shù)對象小 , 返回 1 ? 如果對象自身與參數(shù)對象相等 , 返回 0 ? 如果對象自身比參數(shù)對象大 , 返回 1 ORDER 方法例 1 ? 在類型定義中聲明 order方法: CREATE or replace TYPE address_type AS OBJECT ( city VARCHAR2(10), street VARCHAR2(10), zip NUMBER(6), ORDER MEMBER FUNCTION address_order(other_address address_type) RETURN INTEGER )。 ? 在類型體中實(shí)現(xiàn)方法: CREATE OR REPLACE TYPE BODY address_type AS ORDER MEMBER FUNCTION address_order(other_address address_type) RETURN INTEGER IS BEGIN IF THEN RETURN 1 。 ELSIF THEN RETURN 1。 ELSE RETURN 0。 END IF。 END。 END 。 ORDER 方法例 1 郵編數(shù)小的地址大 ORDER 方法例 1 ? 排序: select 姓 , 名 , 城市 , 郵編 from cust c order by desc 。 ? 排序結(jié)果: 姓 名 城市 郵編 王 至遠(yuǎn) 北京 100084 趙 力平 上海 202392 張 大民 天津 300072 ORDER 方法例 2 CREATE OR REPLACE TYP
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1