视图及其他对象操作
实验目的
(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操作等。因为视图是“虚表”,因此对视图的操作最终转换为对基本表的操作。