视图及其他对象操作
实验目的
(1) 掌握视图的建立、查询、修改、删除操作。
(2) 掌握同义词的建立、查询、修改、删除操作,比较对同义词的操作与对原数据库对象的操作是否一致。
(3) 掌握序列的建立、查询、修改、删除操作,利用序列向数据库表中插入数据。
实验内容
1.创建视图
(1) 利用企业管理器为实现显示医保卡信息创建视图,该视图中包括医保卡信息、医保卡所属人信息和所属人单位信息,视图名为“ygbx_card_view”。
(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 企