中南大学大型数据库报告范文.docx
- 文档编号:25105823
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:25
- 大小:142.28KB
中南大学大型数据库报告范文.docx
《中南大学大型数据库报告范文.docx》由会员分享,可在线阅读,更多相关《中南大学大型数据库报告范文.docx(25页珍藏版)》请在冰豆网上搜索。
中南大学大型数据库报告范文
中南大学
大型数据库报告
学生姓名
学院信息科学与工程学院
专业班级计科120x
《大型数据库技术》实验一
1.创建一个本地位图管理表空间CAP_ts,表空间对应一个数据文件CAP_ts.dbf,该数据文件初始大小为20M,可以自动扩展。
CREATETABLESPACECAP_tsdatafile'CAP_ts.dbf'size20Mreuseextentmanagementlocalautoallocate;
ALTERDATABASEDEFAULTTABLESPACECAP_ts;
2.在表空间CAP_ts中创建表Customers、Products和Agents,其中列cid、pid、aid分别为这3张表的主键。
向表中添加如下数据(可首先将表中数据放入EXCEL表,然后在SQLDeveloper中导入数据库)。
Customers
cid
cname
city
discnt
C001
TipTop
Duluth
10.00
C002
Basics
Dallas
12.00
C003
Allied
Dallas
8.00
C004
ACME
Duluth
8.00
C005
Oriental
Kyoto
6.00
C006
ACME
Kyoto
0.00
Products
pid
pname
city
quantity
price
P01
comb
Dallas
0.50
P02
brush
Newark
0.50
P03
razor
Duluth
1.00
P04
Pen
Duluth
1.00
P05
pencil
Dallas
1.00
P06
folder
Dallas
2.00
P07
case
Newark
1.00
Agents
aid
aname
city
percent
A01
smith
NewYork
6
A02
Jones
Newark
6
A03
Brown
Tokyo
7
A04
Gray
NewYork
6
A05
Otasi
Duluth
5
A06
Smith
Dallas
5
CREATETABLECustomers(cidVARCHAR(5)PRIMARYKEYNOTNULL,cnaemVARCHAR(10),cityVARCHAR(10),discountREAL);
CREATETABLEProducts(pidVARCHAR(5)PRIMARYKEYNOTNULL,pnaemVARCHAR(10),ityVARCHAR(10),quantityNUMBER(10),priceREAL);
CREATETABLEAgents(aidVARCHAR(5)PRIMARYKEYNOTNULL,anaemVARCHAR(10),cityVARCHAR(10),percentNUMBER(3));
insertintoCustomersvalues('C001','TipTop','Duluth',10.00);
insertintoCustomersvalues('C002','Basics','Dallas',12.00);
insertintoCustomersvalues('C003','Allied','Dallas',8.00);
insertintoCustomersvalues('C004','ACME','Duluth',8.00);
insertintoCustomersvalues('C005','Oriental','Kyoto',6.00);
insertintoCustomersvalues('C006','ACME','Kyoto',0.00);
insertintoProductsvalues('P01','comb','Dallas',,0.50);
insertintoProductsvalues('P02','brush','Newark',,0.50);
insertintoProductsvalues('P03','razor','Duluth',,1.00);
insertintoProductsvalues('P04','Pen','Duluth',,1.00);
insertintoProductsvalues('P05','pencil','Dallas',,1.00);
insertintoProductsvalues('P06','folde','Dallas',,2.00);
insertintoProductsvalues('P07','case','Newark',,1.00);
insertintoAgentsvalues('A01','smith','NewYork',6);
insertintoAgentsvalues('A02','Jones','Newark',6);
insertintoAgentsvalues('A03','Brown','Tokyo',7);
insertintoAgentsvalues('A04','Gray','NewYork',6);
insertintoAgentsvalues('A05','Otasi','Duluth',5);
insertintoAgentsvalues('A06','smith','Dallas',5);
3.通过数据字典视图查看是否已创建表Customers、Products和Agents,以及每个表的存储参数设置。
SELECTtable_name,tablespace_name,initial_extent,next_extent
FROMuser_tables
4.在表空间CAP_ts中创建分区表orders,该表以列ordno为主键,列cid、aid、pid为外键。
列month作为分区关键字,数据按照季度分区,即将一个季度的订单数据放到一个分区中。
例如一月份、二月份、三月份为第一季度,这三个月的订单记录放在一个分区中。
向表orders中添加如下数据:
Orders
ordno
month
cid
aid
pid
qty
dollars
1011
Jan
C001
A01
P01
1000
450.00
1012
Jan
C001
A01
P01
1000
450.00
1019
Feb
C001
A02
P02
400
180.00
1017
Feb
C001
A06
P03
600
540.00
1018
Feb
C001
A03
P04
600
540.00
1023
Mar
C001
A04
P05
500
450.00
1022
Mar
C001
A05
P06
400
720.00
1025
Apr
C001
A05
P07
800
720.00
1013
Jan
C002
A03
P03
1000
880.00
1026
May
C002
A05
P03
800
704.00
1015
Jan
C003
A03
P05
1200
1104.00
1014
Jan
C003
A03
P05
1200
1104.00
1021
Feb
C004
A06
P01
1000
460.00
1016
Jan
C004
A01
P01
1000
500.00
1020
Feb
C005
A03
P07
600
600.00
1024
Mar
C006
A06
P01
800
400.00
createtableorders(
ordernonumber(4)primarykeynotnull,
monthvarchar(3),
cidvarchar(5),
aidvarchar(5),
pidvarchar(5),
qtynumber(4),
dollarsreal,
constraintcid_fkforeignkey(cid)referencesCustomers(cid),
constraintaid_fkforeignkey(aid)referencesAgents(aid),
constraintpid_fkforeignkey(pid)referencesProducts(pid)
)
partitionbylist(month)(
PARTITIONseason1VALUES('Jan','Feb','Mar'),
PARTITIONseason2VALUES('Apr','May')
);
insertintoordersvalues(1011,'Jan','C001','a01','P01',1000,450.00);
insertintoordersvalues(1012,'Jan','C001','a01','P01',1000,450.00);
insertintoordersvalues(1019,'Feb','C001','a02','P02',400,180.00);
insertintoordersvalues(1017,'Feb','C001','a06','P03',600,540.00);
insertintoordersvalues(1018,'Feb','C001','a03','P04',600,540.00);
insertintoordersvalues(1023,'Mar','C001','a04','P05',500,450.00);
insertintoordersvalues(1022,'Mar','C001','a05','P06',400,720.00);
insertintoordersvalues(1025,'Apr','C001','a05','P07',800,720.00);
insertintoordersvalues(1013,'Jan','C002','a03','P03',1000,880.00);
insertintoordersvalues(1026,'May','C002','a05','P03',800,704.00);
insertintoordersvalues(1015,'Jan','C003','a03','P05',1200,1104.00);
insertintoordersvalues(1014,'Jan','C003','a03','P05',1200,1104.00);
insertintoordersvalues(1021,'Feb','C004','a06','P01',1000,460.00);
insertintoordersvalues(1016,'Jan','C004','a01','P01',1000,500.00);
insertintoordersvalues(1020,'Feb','C005','a03','P07',600,600.00);
insertintoordersvalues(1024,'Mar','C006','a06','P01',800,400.00);
select*fromorderspartition(season1);
select*fromorderspartition(season2);
5.在一季度分区中查询所有订单金额高于400的订单记录。
select*fromorderspartition(season1)wheredollars>400orderbyorderno;
6.将二季度所有的订单记录复制到表Orders_2中。
createtableorders_2asselect*fromorderspartition(season2);
select*fromorders_2;
7.为Orders表创建公有同义词,并通过该同义词访问该表。
createsynonymorde2fororders;
select*fromorde2;
8.从数据字典中查询当前用户创建的所有的同义词。
select*fromuser_synonyms;
9.基于表customers和表orders创建一个视图customer_orders,视图中的列包括每笔订单的编号、订购的产品编号、订购的数量、顾客的编号及顾客的姓名。
基于视图customer_orders查询顾客c002下的所有订单。
通过数据字典表user_updatable_columns,查看视图customer_orders中哪些列是可更新的列。
createviewcustomer_orders
as
selecto.orderno,o.pid,o.qty,o.cid,aem
fromorderso,customers
whereo.cid=customers.cid;
select*fromcustomer_orderswherecid='C002';
select*fromuser_updatable_columnswheretable_name='customers';
10.利用内联视图,查询每个顾客的编号、名称、所在城市,折扣以及所下订单的数量。
selectc.cid,aem,c.city,c.discount,order1.qty
fromcustomersc,
(selectcid,qtyfromorders)order1
wherec.cid=order1.cid;
11.创建一个物化视图mv_product_orders,视图中包含每种商品的编号、名称和订货的总量。
数据刷新的时间为ONCOMMIT,即当主表有数据提交时,立即刷新物化视图中的数据,创建方式为BUILDIMMEDIATE。
1)创建视图后,执行查询select*frommv_product_orders;
2)向表Orders中新增一行insertintoordersvalues(1027,'May','C006','A05','P05',100,50),然后执行1)中的查询,查看mv_product_orders是否有变化;
3)执行Commit命令,然后执行1)中的查询,查看mv_product_orders是否有变化。
1)creatematerializedviewlogonproducts;
creatematerializedviewmv_product_order
refreshfastoncommit
as
selectpid,pnaem,quantityfromProducts;
select*frommv_product_order;
2)insertintoordersvalues(1027,'May','C006','a05','P05',100,50);
3)commit;
12.利用下列语句创建表my_table。
createtablemy_tableNOLOGGINGasselect*fromall_objects;
1)查询表my_table的行数。
2)执行查询select*frommy_tablewhereobject_ID=3,查看执行计划和SQL优化指导。
3)在表my_table的列object_ID上创建索引,再次执行2)中的查询,并查看执行计划和SQL优化指导。
4)查看索引树的高度、删除标记的比率以及索引页块使用率。
1)
2)
3)
4)
《大型数据库技术》实验二
1.执行下面的语句,了解ROWID的编码方式。
SELECTrowidFROMagents;
2.创建一个序列orderno_sequence,起始值为1000,步长为1。
查看该序列是否被创建。
createsequenceorderno_sequence
startwith1000
incrementby1;
3.
(1)在表orders上定义一个触发器,当向表中加入一条新的订单记录时,自动使用序列orderno_sequence生成一个订单编号,并自动计算商品总价dollars。
计算公式如下:
商品总价dollars=商品数量qty*商品单价price*(1-顾客折扣discnt/100)
(2)首先将表orders中的数据全部删除,然后向表中添加如下数据验证触发器的正确性。
Orders
ordno
month
cid
aid
pid
qty
dollars
Jan
C001
A01
P01
1000
Jan
C001
A01
P01
1000
Feb
C001
A02
P02
400
Feb
C001
A06
P03
600
Feb
C001
A03
P04
600
Mar
C001
A04
P05
500
Mar
C001
A05
P06
400
Apr
C001
A05
P07
800
Jan
C002
A03
P03
1000
May
C002
A05
P03
800
Jan
C003
A03
P05
1200
Jan
C003
A03
P05
1200
Feb
C004
A06
P01
1000
Jan
C004
A01
P01
1000
Feb
C005
A03
P07
600
Mar
C006
A06
P01
800
(1)
createorreplacetriggerinsert_orders_trigger
beforeinsertonorders
foreachrow
declare
v_ordernoorders.orderno%type;
v_priceproducts.price%type;
v_discountcustomers.discount%type;
begin
selectorderno_sequence.nextvalintov_ordernofromdual;
selectpriceintov_pricefromproductswhereproducts.pid=:
new.pid;
selectdiscountintov_discountfromcustomerswherecustomers.cid=:
new.cid;
:
new.orderno:
=v_orderno;
:
new.dollars:
=(:
new.qty*v_price*(1-v_discount/100));
end;
(2)truncatetableorders;
insertintoorders(month,cid,aid,pid,qty)
values('Jan','C001','a01','P01',1000);
insertintoorders(month,cid,aid,pid,qty)
values('Jan','C001','a01','P01',1000);
insertintoorders(month,cid,aid,pid,qty)
values('Feb','C001','a02','P02',400);
insertintoorders(month,cid,aid,pid,qty)
values('Feb','C001','a06','P03',600);
insertintoorders(month,cid,aid,pid,qty)
values('Feb','C001','a03','P04',600);
insertintoorders(month,cid,aid,pid,qty)
values('Mar','C001','a04','P05',500);
insertintoorders(month,cid,aid,pid,qty)
values('Mar','C001','a05','P06',400);
insertintoorders(month,cid,aid,pid,qty)
values('Apr','C001','a05','P07',800);
insertintoorders(month,cid,aid,pid,qty)
values('Jan','C002','a03','P03',1000);
insertintoorders(month,cid,aid,pid,qty)
values('May','C002','a05','P03',800);
insertintoorders(month,cid,aid,pid,qty)
values('Jan','C003','a03','P05',1200);
insertintoorders(month,cid,aid,pid,qty)
values('Jan','C003','a03','P05',1200);
insertintoorders(month,cid,aid,pid,qty)
values('Feb','C004','a06','P01',1000);
insertintoorders(month,cid,aid,pid,qty)
values('Jan','C004','a01','P01',1000);
insertintoorders(month,cid,aid,pid,qty)
values('Feb','C005','a03','P07',600);
insertintoorders(month,cid,aid,pid,qty)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 大型 数据库 报告 范文