標籤:
視圖及其他對象操作
實驗目的
(1) 掌握視圖的建立、查詢、修改、刪除操作。
(2) 掌握同義字的建立、查詢、修改、刪除操作,比較對同義字的操作與對原資料庫物件的操作是否一致。
(3) 掌握序列的建立、查詢、修改、刪除操作,利用序列向資料庫表中插入資料。
實驗內容
1.建立視圖
(1) 利用企業管理器為實現顯示醫保卡資訊建立視圖,該視圖中包括醫保卡資訊、醫保卡所屬人資訊和所屬人單位資訊,視圖名為“ygbx_card_view”。
(1)
(2)利用SQL*Plus或iSQL*Plus為實現員工持醫保卡到醫院消費的功能建立視圖,該視圖中包括員工的資訊、醫保卡資訊、醫保資訊和消費等資訊,視圖名為“consume_view”。
SQL> create view consume_view as select staff.sno,sname,ssex,sbirthday,
2 saddress,stel,staff.cno,staff.bno,ctype,cmoney,idate,imoney,see.hno,csdate,mname,mnum,csmoney
3 from staff,insurance,card,consume,see
4 where staff.sno=see.sno and see.hno=consume.cno and consume.cno=card.cno and card.cno=insurance.cno ;
(3) 利用SQL*Plus或iSQL*Plus為企業醫保繳費資訊功能建立視圖,該視圖中包括醫保繳費的公司資訊,醫保卡資訊和企業醫保繳費費用等資訊,視圖名為“insurnce_view”。
SQL> create view insurance_view as select insurance.bno,bname,btype,baddress,btel,card.cno,ctype,cmoney,
2 hno,csdate,mname,mnum,csmoney
3 from insurance,business,card,consume
4 where insurance.bno=business.bno and insurance.cno=card.cno
5 ;
(4) 利用SQL*Plus或iSQL*Plus為企業表建立視圖,視圖名為“business_view”。
SQL> create view business_view as
2 select bno,bname,btype,baddress,btel
3 from business;
2.查看視圖
(1) 利用企業管理器查看“ygbx_user”方案下的視圖。
(2) 利用企業管理器查看“consume_view”視圖的資訊。
(3)利用SQL*Plus或iSQL*Plus查看“card_view”視圖的子查詢語句。
SQL> select text from user_views where view_name=‘YGBX_CARD_UIEW‘
2 ;
(4)利用SQL*Plus或iSQL*Plus顯示“insurance_view”視圖的資訊。
SQL> select view_name,view_type,read_only,text,text_length from user_views
2 where view_name=‘insurance_view‘
3 ;
3.視圖資料的更新
(1) 利用SQL*Plus或iSQL*Plus向“business_view”插入一個記錄,企業編號為“B1997010287”,企業名稱為“格林製藥”,企業類型為“企業”,企業地址為“鴨綠江街98號”,聯絡電話為“84692315”。
SQL> alter table business modify(bno char(20));
表已更改。
SQL> insert into business_view values(‘B1997010287‘,‘格林製藥‘,‘企業‘,‘鴨綠江街98號‘,‘84692315‘);
已建立 1 行。
(2) 利用SQL*Plus或iSQL*Plus查看“business”表是否有變化。
SQL> select * from business;
4.刪除視圖
(1) 利用企業管理器刪除“business_view”視圖。
(2) 利用企業管理器刪除“card_view”視圖。
(3) 利用SQL*Plus或iSQL*Plus刪除“consume_view”視圖。
SQL> drop view consume_view;
(4) 利用SQL*Plus或iSQL*Plus刪除“insurnce_view”視圖。
SQL> drop view insurance_view;
5.建立同義字
(1) 利用企業管理器建立企業表同義字,名為“qyb”。
SQL> grant create public synonym to scott;
授權成功。
(2) 利用SQL*Plus或iSQL*Plus建立醫保卡表的同義字,名為“ybk”。
SQL> create synonym ybk for card;
同義字已建立。
6.查詢同義字
(1) 利用企業管理器查看同義字“qyb”。
(2) 利用SQL*Plus或iSQL*Plus查看同義字“ybk”。
SQL> select * from user_synonyms where synonym_name=‘ybk‘;
7.刪除同義字
(1) 利用企業管理器刪除同義字“qyb”。
(2) 利用SQL*Plus或iSQL*Plus刪除同義字“ybk”。
SQL> drop synonym ybk;
同義字已刪除。
8.建立序列
(1) 利用企業管理器建立序列,該序列最大值為“28000”,最小值為“60”,步長為“1”,可迴圈,序列名為“ygbx_seq1”。
(2) 利用SQL*Plus或iSQL*Plus建立序列,該序列最大值無限制,最小值為“1”,步長為“10”,序列名為“ygbx_seq2”。
SQL> create sequence ygbx_seq2 nocycle noorder nomaxvalue minvalue 1
2 increment by 10 start with 1;
序列已建立。
9.查詢序列
(1) 利用企業管理器查看序列“ygbx_seq1”。
(2) 利用SQL*Plus或iSQL*Plus查看同義字“ygbx_seq2”。
SQL> select * from user_sequences where sequence_name=‘ygbx_seq2‘;
10.修改序列
(1) 利用企業管理器修改序列“ygbx_seq1”,將該序列最大值設為“82000”,最小值設為“100”,步長設為“5”。
最小值不能大於當前值,所以最小值為60
(2) 利用SQL*Plus或iSQL*Plus修改序列“ygbx_seq2”,將該序列最大值設為“1000”。
SQL> alter sequence ygbx_seq2 maxvalue 1000;
序列已更改。
11.刪除序列
(1) 利用企業管理器刪除序列“ygbx_seq1”。
(2) 利用SQL*Plus或iSQL*Plus刪除序列“ygbx_seq2”。
SQL> drop sequence ygbx_seq2;
序列已刪除。
附錄:員工醫學保險系統資料表
表1 企業(business)表結構
表2醫院(hospital)表結構
表3醫保卡(card)表結構
表4員工(staff)表結構
表5就診表(see)結構
表6消費(consume)表結構
表7醫保(insurance)表結構
實驗總結:
1. 可以採用CREATE OR REPLACE VIEW 語句修改視圖,實質是刪除原視圖並重建該視圖,但是會保留該視圖上授予的各種許可權。
2. 序列用於產生惟一序號的資料庫物件,用於為多個資料庫使用者依次產生不重複的連續整數。通常使用序列自動產生表中的主鍵值。序列不佔用實際的儲存空間,在資料字典中只儲存序列的定義描述。
3. 視圖是從一個或多個表或視圖中提取出來的資料的一種表現形式。在資料庫中只有視圖的定義,而沒有實際對應“表”的存在,因此視圖是一個“虛”表。當對視圖進行操作時,系統根據視圖定義臨時產生資料。
4. 可以使用DROP VIEW語句刪除視圖。刪除視圖後,該視圖的定義從資料字典中刪除,同時該視圖上的許可權被回收,但是對資料庫表沒有任何影響。
5. 同義字是資料庫中表、索引、視圖或其他模式對象的一個別名。利用同義字,一方面為資料庫物件提供一定的安全性保證,例如可以隱藏對象的實際名稱和所有者資訊,或隱藏分散式資料庫中遠程對象的位置資訊;另一個方面是簡化對象訪問。
6. 視圖建立後,就可以對視圖進行操作,包括資料查詢、DML操作等。因為視圖是“虛表”,因此對視圖的操作最終轉換為對基本表的操作。
oracle視圖及其他對象操作