1.创建表结构(员工医疗保险系统表)企业表:医院表:医保卡表:员工表:就诊表:消费表:医保表:2.查看表结构(1) 利用OEM查看员工医疗保险系统所有表的字段信息和约束信息。
(2) 利用SQL*Plus或iSQL*Plus从数据字典DBA_TAB _COLUMNS查看员工医疗保险系统所有表的字段信息。
(3) 利用SQL*Plus或iSQL*Plus从数据字典DBA_ CONSTRAINTS查看员工医疗保险系统所有表的约束信息。
SELECT * FROM DBA_TABLES WHERE TABLE_NAME= 'STAFF';3.修改表结构(1) 利用SQL*Plus或iSQL*Plus将表“staff_sql”重新命名为“staff_sql0”。
Alter table staff rename to staff_sql0;(2) 利用企业管理器为“staff_sql0”表添加“age INT”字段,利用DESC命令查看“staff_sql0”表的字段信息。
(3) 利用SQL*Plus或iSQL*Plus为“staff_sql0”表添加“salary NUMBER(5,2)”、“salary_add NUMBER(3,1)”两个字段,利用DESC命令查看“staff_sql0”表的字段信息。
(4) 利用SQL*Plus或iSQL*Plus向“staff_sql0”表添加“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。
(5) 利用SQL*Plus或iSQL*Plus删除“staff_sql0”表上“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。
(6) 利用企业管理器从“staff_sql0”表删除“age”字段,利用DESC命令查看“staff_sql0”表的字段信息。
(7) 利用SQL*Plus或iSQL*Plus从“staff_sql0”表删除“salary”、“salary_add”两个字段,利用DESC命令查看“staff_sql0”表的字段信息。
(8) 利用SQL*Plus或iSQL*Plus将“staff_sql0”表“sname”字段长度修改为30,利用DESC 命令查看“staff_sql0”表的字段信息。
alter table 表名modify 字段名varchar2(长度); 或alter table 表名modify 字段名number(长度);只能改大。
想改小只能重新建表将数据导到新表,再将旧表drop掉。
如果想改小,没有数据可能直接用alter table table_name modify column datatype;如果有数据,改小的话可以会丢失数据。
比如:表:stu(name varchar2(20)) 要将字段name的长度改为10表中有一条数据:name(中国华西村刀光剑影) 长度超过10,截取的时候必然要丢失数据。
当然如果表中的数据长度都小于10,则可以用sql语句段来直接搞定。
beginalter table stu add (name2 varchar2(10)); 增加新字段update stu set name2=substr(trim(name),1,10); 赋值给新字段alter table stu drop(name); 删除原字段alter table stu rename column name2 to name; 将新字段改名end;4.删除表结构(1) 利用SQL*Plus或iSQL*Plus删除员工表3,看能否成功。
从原理上解释原因,同时记录外键约束表删除顺序的影响。
(2) 利用企业管理器删除员工表2,看能否成功。
从原理上解释原因。
索引、视图、同义词及序列操作1.创建索引(1) 利用企业管理器为医院表的医院名称创建索引,并以降序排列,索引名为“hospital_name_index”。
create unique index idx_test on test (testcol1 asc) --按照testcol1字段升序排列create unique index idx_test on test (testcol1 desc) --按照testcol2字段降序排列(2) 利用SQL*Plus或iSQL*Plus为员工表的员工姓名、员工性别、出生年月排序,以员工姓名升序、员工性别降序、出生年月降序排列,索引名为“staff_info_index”。
2.查看索引(1) 利用企业管理器查看“ygbx_user”方案下有几个隶属于该方案的索引,有几个系统创建的索引,有几个用户创建的索引。
------以下两个都可以select table_name,constraint_name,constraint_type from user_constraintswhere table_name='大写的表名'select table_name,constraint_name,constraint_type from dba_constraintswhere table_name='大写的表名'---------另外以下可以只查看表中的索引select * from USER_INDEXES where table_name = '大写的表名'下边的也可以select * from ALL_INDEXes where table_name = '大写的表名'(2) 利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看员工医疗保险系统所有索引的信息。
(3) 利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看“staff_info_index”索引的信息,并查看该索引列的顺序及状态。
3.删除索引(1) 利用企业管理器删除“hospital_name_index”索引。
drop index test_index;create index test_index on sys_test(aaa) indextype is ctxsys.context;执行删除操作时先判断索引是否存在,如果索引存在则删除,望给出正确SQL语句。
PL/S QL。
(2) 利用SQL*Plus或iSQL*Plus将“staff_info_index”索引删除。
4.创建视图(1) 利用企业管理器为实现显示医保卡信息创建视图,该视图中包括医保卡信息、医保卡所属人信息和所属人单位信息,视图名为“ygbx_card_view”。
create or replace view ygbx_card_view asselect o,staff.sno,business.bnamefrom insurance,staff,businesswhere o=o and staff.bno=business.bno;(2) 利用SQL*Plus或iSQL*Plus为实现员工持医保卡到医院消费的功能创建视图,该视图中包括员工的信息、医保卡信息、医保信息和消费等信息,视图名为“consume_view”。
create or replace view consume_view asselect staff.sno,o,insurance.imoney,consume.csmoneyfrom staff,insurance,consumewhere o=o and o=o;(3) 利用SQL*Plus或iSQL*Plus为企业医保缴费信息功能创建视图,该视图中包括医保缴费的企业信息,医保卡信息和企业医保缴费费用等信息,视图名为“insurnce_view”。
(4) 利用SQL*Plus或iSQL*Plus为企业表创建视图,视图名为“business_view”。
create or replace view business_view asselect *from business;5.查看视图(1) 利用企业管理器查看“ygbx_user”方案下的视图。
(2) 利用企业管理器查看“consume_view”视图的信息。
Desc consume_view;(3) 利用SQL*Plus或iSQL*Plus查看“card_view”视图的子查询语句。
(4) 利用SQL*Plus或iSQL*Plus显示“insurance_view”视图的信息。
6.视图数据的更新(1) 利用SQL*Plus或iSQL*Plus向“business_view”插入一个记录,企业编号为“B1902879701”,企业名称为“格林制药”,企业类型为“企业”,企业地址为“鸭绿江街98号”,联系电话为“84692315”。
insert into business_viewvalues('1902879701','格林制药','企业','鸭绿江街98号','84692315');(2) 利用SQL*Plus或iSQL*Plus查看“business”表是否有变化。
7.删除视图(1) 利用企业管理器删除“business_view”视图。
Drop view business_view;(2) 利用企业管理器删除“card_view”视图。
(3) 利用SQL*Plus或iSQL*Plus删除“consume_view”视图。
(4) 利用SQL*Plus或iSQL*Plus删除“insurnce_view”视图。
8.创建同义词(1) 利用企业管理器创建企业表同义词,名为“qyb”。
create or replace synonym qyb for sys.business;(2) 利用SQL*Plus或iSQL*Plus创建医保卡表的同义词,名为“ybk”。
9.查询同义词(1) 利用企业管理器查看同义词“qyb”。
select * from qyb;(2) 利用SQL*Plus或iSQL*Plus查看同义词“ybk”。
10.删除同义词(1) 利用企业管理器删除同义词“qyb”。
drop synonym qyb;(2) 利用SQL*Plus或iSQL*Plus删除同义词“ybk”。
11.创建序列(1) 利用企业管理器创建序列,该序列最大值为“28000”,最小值为“60”,步长为“1”,可循环,序列名为“ygbx_seq1”。
CREATE SEQUENCE ygbx_seq1START WITH 60INCREMENT BY 1MAXVALUE 28000CYCLE;(2) 利用SQL*Plus或iSQL*Plus创建序列,该序列最大值无限制,最小值为“1”,步长为“10”,序列名为“ygbx_seq2”。