实验四oracle对象管理及使用.docx

上传人:b****6 文档编号:5824918 上传时间:2023-01-01 格式:DOCX 页数:17 大小:302.18KB
下载 相关 举报
实验四oracle对象管理及使用.docx_第1页
第1页 / 共17页
实验四oracle对象管理及使用.docx_第2页
第2页 / 共17页
实验四oracle对象管理及使用.docx_第3页
第3页 / 共17页
实验四oracle对象管理及使用.docx_第4页
第4页 / 共17页
实验四oracle对象管理及使用.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验四oracle对象管理及使用.docx

《实验四oracle对象管理及使用.docx》由会员分享,可在线阅读,更多相关《实验四oracle对象管理及使用.docx(17页珍藏版)》请在冰豆网上搜索。

实验四oracle对象管理及使用.docx

实验四oracle对象管理及使用

实验四oracle对象管理及使用

一、实验目的及要求

掌握Oracle的常用对象的操作方法。

会使用常用对象解决一些实际问题。

二、实验主要内容

(1)表结构的建立、修改、查看、删除操作。

(2)索引的建立、修改、查看、删除操作。

(3)视图的建立、查询、修改、删除操作。

(4)同义词的建立、查询、修改、删除操作,比较对同义词的操作与对原数据库对象的操作是否一致。

(5)掌握序列的建立、查询、修改、删除操作,利用序列向数据库表中插入数据。

三、实验仪器设备

在局域网环境下,有一台服务器和若干台客户机。

服务器成功安装Oracle11g数据库服务器(企业版),客户机成功安装Oracle11g客户端软件,网络服务配置正确,数据库和客户端正常工作。

四、实验步骤

表的操作

1.创建表结构

利用命令行方式将下列各表建立到员工医疗保险系统数据库中。

表结构如附录员工医疗保险系统表1-表7所示。

SQL>/*======创建企业(business)表======*/

SQL>createtablebusiness(

2bnochar(10)primarykey,

3bnamechar(50)notnull,

4btypechar(4)constraintCK_1check(btypein('企业','事业','私有')),

5baddresschar(20),

6btelchar(13)

7);

表已创建。

SQL>/*======创建医院(hospital)表======*/

SQL>createtablehospital(

2hnochar(5)primarykey,

3hnamechar(40)notnull,

4haddresschar(60)

5);

表已创建。

SQL>/*======创建医保卡(card)表======*/

SQL>createtablecard(

2cnochar(15)primarykey,

3ctypechar(4)constraintCK_2check(ctypein('企业','事业','灵活就业')),

4cmoneynumber(7,2)notnull

5);

表已创建。

SQL>/*======创建员工(staff)表======*/

SQL>createtablestaff(

2snochar(5)primarykey,

3snamechar(20)notnull,

4ssexchar

(2)check(ssexin('男','女')),

5sbirthdaydate,

6saddresschar(20),

7stelchar(15)unique,

8cnochar(15)referencescard(cno),

9bnochar(10)referencesbusiness(bno)

10);

表已创建。

SQL>/*======创建就诊表(see)======*/

SQL>createtablesee(

2snochar(5)referencesstaff(sno),

3hnochar(5)referenceshospital(hno),

4sdatedate,

5constraintS_PKprimarykey(sno,hno,sdate)

6);

表已创建。

SQL>/*======创建消费表(consume)======*/

SQL>/*======创建消费表(insurance)======*/

SQL>createtableinsurance(

2idatedate,

3cnochar(15)referencescard(cno),

4imoneynumber(5,2)notnull,

5bnochar(10)referencesbusiness(bno),

6constraintI_PKprimarykey(idate,cno)

7);

表已创建。

SQL>/*======创建消费表(consume)======*/

SQL>createtableconsume(

2cnochar(15)referencescard(cno),

3hnochar(5)referenceshospital(hno),

4csdatedatenotnull,

5mnamechar(20),

6mnumintnotnull,

7csmoneynumber(7,2)notnull,

8constraintC_PKprimarykey(cno,hno,csdate)

9);

表已创建。

2.查看表结构

利用SQL*Plus或iSQL*Plus从数据字典DBA_TAB_COLUMNS查看员工医疗保险系统所有表的字段信息。

SELECTTABLE_NAME,COLUMN_NAME,DATA_TYPE

FROMDBA_TAB_COLUMNS

WHERETABLE_NAMEIN('BUSINESS','CARD','STAFF','CONSUME','HOSPITAL','SEE','INSURANCE');

利用SQL*Plus或iSQL*Plus从数据字典DBA_CONSTRAINTS查看员工医疗保险系统所有表的约束信息。

SELECTCONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME

FROMDBA_CONSTRAINTS

WHERETABLE_NAMEIN('BUSINESS','CARD','STAFF','CONSUME','HOSPITAL','SEE','INSURANCE');

3.删除表结构

利用SQL*Plus或iSQL*Plus删除员工表3,看能否成功。

从原理上解释原因,同时记录外键约束表删除顺序的影响。

DROPTABLESTAFF;

索引操作

1.创建索引

利用SQL*Plus或iSQL*Plus为医院表的医院名称创建索引,并以降序排列,索引名为“hospital_name_index”。

createindexhospital_name_indexonhospital(hnamedesc);

2.查看索引

利用SQL*Plus或iSQL*Plus从DBA_INDEXES数据字典中查看员工医疗保险系统所有索引的信息。

selectindex_name,index_type,table_name

fromDBA_INDEXES

wheretable_namein('BUSINESS','CARD','SEE','STAFF','CONSUME','HOSPITAL','INSURANCE');

3.删除索引

利用SQL*Plus或iSQL*Plus将“hospital_name_index”索引删除。

DROPINDEXhospital_name_index;

视图操作

1.创建视图

利用SQL*Plus或iSQL*Plus为实现显示医保卡信息创建视图,该视图中包括医保卡信息、医保卡所属人信息和所属人单位信息,视图名为“ygbx_card_view”。

createorreplaceviewygbx_card_viewasselecto,c.ctype,c.cmoney,b.bno,b.bname,s.sno,s.sname,s.ssex,s.saddress,s.stel

fromcardc,staffs,businessb

whereo=oands.bno=b.bno

2.查看视图

利用SQL*Plus或iSQL*Plus查看“ygbx_card_view”视图的信息。

select*fromygbx_card_view;

3.删除视图

利用SQL*Plus或iSQL*Plus删除“ygbx_card_view”视图。

dropviewygbx_card_view;

同义词操作

1.创建同义词

利用SQL*Plus或iSQL*Plus创建企业表同义词,名为“qyb”。

CREATESYNONYMqybFORBUSINESS;

2.查询同义词

利用SQL*Plus或iSQL*Plus查看同义词“qyb”。

SELECT*FROMQYB;

3.删除同义词

利用SQL*Plus或iSQL*Plus删除同义词“qyb”。

DROPSYNONYMQYB;

序列操作

1.创建序列

利用SQL*Plus或iSQL*Plus创建序列,该序列最大值为“28000”,最小值为“60”,步长为“1”,可循环,序列名为“ygbx_seq1”。

createsequenceygbx_seql

maxvalue28000

minvalue60

incrementby1

cycle;

2.查询序列

利用SQL*Plus或iSQL*Plus查看序列“ygbx_seq1”。

selectygbx_seql.currvalfromdual;

3.修改序列

利用SQL*Plus或iSQL*Plus修改序列“ygbx_seq1”,将该序列最大值设为“82000”,最小值设为“100”,步长设为“5”。

altersequenceygbx_seql

maxvalue82000

minvalue59

incrementby5;

4.删除序列

利用SQL*Plus或iSQL*Plus删除序列“ygbx_seq1”。

dropsequenceygbx_seql;

主要算法和程序清单

SQL>/*======创建企业(business)表======*/

SQL>createtablebusiness(

2bnochar(10)primarykey,

3bnamechar(50)notnull,

4btypechar(4)constraintCK_1check(btypein('企业','事业','私有')),

5baddresschar(20),

6btelchar(13)

7);

表已创建。

SQL>/*======创建医院(hospital)表======*/

SQL>createtablehospital(

2hnochar(5)primarykey,

3hnamechar(40)notnull,

4haddresschar(60)

5);

表已创建。

SQL>/*======创建医保卡(card)表======*/

SQL>createtablecard(

2cnochar(15)primarykey,

3ctypechar(4)constraintCK_2check(ctypein('企业','事业','灵活就业')),

4cmoneynumber(7,2)notnull

5);

表已创建。

SQL>/*======创建员工(staff)表======*/

SQL>createtablestaff(

2snochar(5)primarykey,

3snamechar(20)notnull,

4ssexchar

(2)check(ssexin('男','女')),

5sbirthdaydate,

6saddresschar(20),

7stelchar(15)unique,

8cnochar(15)referencescard(cno),

9bnochar(10)referencesbusiness(bno)

10);

表已创建。

SQL>/*======创建就诊表(see)======*/

SQL>createtablesee(

2snochar(5)referencesstaff(sno),

3hnochar(5)referenceshospital(hno),

4sdatedate,

5constraintS_PKprimarykey(sno,hno,sdate)

6);

表已创建。

SQL>/*======创建消费表(consume)======*/

SQL>/*======创建消费表(insurance)======*/

SQL>createtableinsurance(

2idatedate,

3cnochar(15)referencescard(cno),

4imoneynumber(5,2)notnull,

5bnochar(10)referencesbusiness(bno),

6constraintI_PKprimarykey(idate,cno)

7);

表已创建。

SQL>/*======创建消费表(consume)======*/

SQL>createtableconsume(

2cnochar(15)referencescard(cno),

3hnochar(5)referenceshospital(hno),

4csdatedatenotnull,

5mnamechar(20),

6mnumintnotnull,

7csmoneynumber(7,2)notnull,

8constraintC_PKprimarykey(cno,hno,csdate)

9);

表已创建。

SELECTTABLE_NAME,COLUMN_NAME,DATA_TYPE

FROMDBA_TAB_COLUMNS

WHERETABLE_NAMEIN('BUSINESS','CARD','STAFF','CONSUME','HOSPITAL','SEE','INSURANCE');

SELECTCONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME

FROMDBA_CONSTRAINTS

WHERETABLE_NAMEIN('BUSINESS','CARD','STAFF','CONSUME','HOSPITAL','SEE','INSURANCE');

DROPTABLESTAFF;

createindexhospital_name_indexonhospital(hnamedesc);

selectindex_name,index_type,table_name

fromDBA_INDEXES

wheretable_namein('BUSINESS','CARD','SEE','STAFF','CONSUME','HOSPITAL','INSURANCE');

DROPINDEXhospital_name_index;

createorreplaceviewygbx_card_viewasselecto,c.ctype,c.cmoney,b.bno,b.bname,s.sno,s.sname,s.ssex,s.saddress,s.stel

fromcardc,staffs,businessb

whereo=oands.bno=b.bno

select*fromygbx_card_view;

dropviewygbx_card_view;

CREATESYNONYMqybFORBUSINESS;

SELECT*FROMQYB;

DROPSYNONYMQYB;

createsequenceygbx_seql

maxvalue28000

minvalue60

incrementby1

cycle;

selectygbx_seql.currvalfromdual;

altersequenceygbx_seql

maxvalue82000

minvalue59

incrementby5;

dropsequenceygbx_seql

疑难小结:

本次实验中只要多锻炼,记住语法就太大问题,需要注意的是在建表的时候主键/外键的相互引用,另外关键字必须记清楚,这就要求要经常锻炼。

附录:

员工医疗保险系统表

表1企业(business)表结构

表2医院(hospital)表结构

表3医保卡(card)表结构

表4员工(staff)表结构

表5就诊表(see)结构

表6消费(consume)表结构

表7医保(insurance)表结构

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1