软件081李岩08083122.docx

上传人:b****4 文档编号:4380209 上传时间:2022-12-01 格式:DOCX 页数:34 大小:26.78KB
下载 相关 举报
软件081李岩08083122.docx_第1页
第1页 / 共34页
软件081李岩08083122.docx_第2页
第2页 / 共34页
软件081李岩08083122.docx_第3页
第3页 / 共34页
软件081李岩08083122.docx_第4页
第4页 / 共34页
软件081李岩08083122.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

软件081李岩08083122.docx

《软件081李岩08083122.docx》由会员分享,可在线阅读,更多相关《软件081李岩08083122.docx(34页珍藏版)》请在冰豆网上搜索。

软件081李岩08083122.docx

软件081李岩08083122

题目要求:

将下面的题目在Oracle11g中实现,并手写纸质版报告一份,包括所有实现功能的SQL*PLUS命令或SQL或PL/SQL语句及运行结果。

新建一个数据库,命名为oraclezy,并完成以下功能:

1)记录某采油厂对油/水井实施作业时所消耗的成本(命名为作业表zyb)。

(作业:

可理解为对油/水井进行大修)

2)成本的消耗包括预算、结算、入账三个状态。

预算:

采油队向管理部门提出作业申请,并经管理部门批准后,由管理部门负责录入。

结算:

某次作业施工结束后,由管理部门与施工单位共同核算各种成本,由管理部门负责录入。

入账:

结算后,财务部门将成本计入采油厂账目,由财务部门录入。

3)预算状态时需要录入的数据:

(★:

字符型◆数值型▲日期型)

★单据号:

某一作业项目的编号

★预算单位:

指需要对油水井实施作业的采油队★井号:

需要实施作业的油水井

◆预算金额★预算人▲预算日期

4)结算状态需要录入的数据:

(★:

字符型◆数值型▲日期型)

调出某条预算记录,录入以下数据:

▲开工日期▲完工日期★施工单位★施工内容

◆材料费(要求另外建表单独记录材料消耗的明细)

(★物码◆消耗数量◆单价)

◆人工费◆设备费◆其它费用

◆结算金额(材料费+人工费+设备费+其它费用)

★结算人▲结算日期

5)入账状态需要录入的数据:

(★:

字符型◆数值型▲日期型)

调出某条结算记录,录入以下数据:

◆入账金额★入账人▲入账日期

6)为了避免出现有歧义的错误,要求定义以下辅助的数据表:

(★:

字符型)

单位代码表:

★单位代码★单位名称

油水井表:

★井号★井别:

油井/水井★单位代码(表示某口井由哪个单位负责管理)

施工单位表:

★施工单位名称

物码表:

★物码★名称规格★计量单位

1.根据对以上题意的理解,利用SQLPLUS,定义所需的数据表,包括定义相关约束条件(主码、外码及其他约束)。

--Createtable

createtableZYB

单据号VARCHAR2(20)notnull,

预算单位VARCHAR2(20)notnull,

井号VARCHAR2(20)notnull,

预算金额NUMBER(10)notnull,

预算人VARCHAR2(20)notnull,

预算日期DATEnotnull,

开工日期DATE,

完工日期DATE,

施工单位VARCHAR2(20),

施工内容VARCHAR2(20),

材料费NUMBER(10),

人工费NUMBER(10),

设备费NUMBER(10),

其它费用NUMBER(10),

结算金额NUMBER(10),

结算人VARCHAR2(20),

结算日期DATE,

入账人VARCHAR2(20),

入账日期DATE,

入账金额NUMBER

tablespaceSYSTEM

pctfree10

pctused40

initrans1

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Create/Recreateprimary,uniqueandforeignkeyconstraints

altertableZYB

addconstraintDJNOprimarykey(单据号)

usingindex

tablespaceSYSTEM

pctfree10

initrans2

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Grant/Revokeobjectprivileges

grantselect,insert,update,delete,references,alter,indexonZYBtoLIYAN;

--Createtable单位代码表

--由于表名用汉字表示操作时很麻烦,就取表名的每个字的首字母并冠以Z组成表名,如本例ZDWDMB

createtableZDWDMB

单位代码VARCHAR2(20)notnull,

单位名称VARCHAR2(20)notnull

tablespaceSYSTEM

pctfree10

pctused40

initrans1

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Create/Recreateprimary,uniqueandforeignkeyconstraints

altertableZDWDMB

addconstraintDWNAMEunique(单位名称)

usingindex

tablespaceSYSTEM

pctfree10

initrans2

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Grant/Revokeobjectprivileges

grantselect,insert,update,delete,references,alter,indexonZDWDMBtoLIYAN;

--Createtable油水井表

createtableZYSJB

井号VARCHAR2(20)notnull,

井别VARCHAR2(20)notnull,

单位代码VARCHAR2(20)notnull

tablespaceSYSTEM

pctfree10

pctused40

initrans1

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Create/Recreateprimary,uniqueandforeignkeyconstraints

altertableZYSJB

addconstraintJNOprimarykey(井号)

usingindex

tablespaceSYSTEM

pctfree10

initrans2

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Grant/Revokeobjectprivileges

grantselect,insert,update,delete,references,alter,indexonZYSJBtoLIYAN;

--Createtable

--施工单位表

createtableZSGDWB

施工单位名称VARCHAR2(20)notnull,

施工单位号VARCHAR2(20)notnull

tablespaceSYSTEM

pctfree10

pctused40

initrans1

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Create/Recreateprimary,uniqueandforeignkeyconstraints

altertableZSGDWB

addconstraintSGNOprimarykey(施工单位号)

usingindex

tablespaceSYSTEM

pctfree10

initrans2

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Grant/Revokeobjectprivileges

grantselect,insert,update,delete,references,alter,indexonZSGDWBtoLIYAN;

--物码表

--Createtable

createtableZWMB

物码VARCHAR2(20)notnull,

名称规格VARCHAR2(20)notnull,

计量单位VARCHAR2(20)notnull

tablespaceSYSTEM

pctfree10

pctused40

initrans1

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Create/Recreateprimary,uniqueandforeignkeyconstraints

altertableZWMB

addconstraintWNOprimarykey(物码)

usingindex

tablespaceSYSTEM

pctfree10

initrans2

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

--Grant/Revokeobjectprivileges

grantselect,insert,update,delete,references,alter,indexonZWMBtoLIYAN;

--材料费表

--Createtable

createtableZCLFB

作业项目编号VARCHAR2(20)notnull,

物码VARCHAR2(20)notnull,

消耗数量NUMBERnotnull,

单价NUMBERnotnull

tablespaceSYSTEM

pctfree10

pctused40

initrans1

maxtrans255

storage

initial64K

next1M

minextents1

maxextentsunlimited

);

2.利用SQLPLUS,录入以下相关的基础数据:

单位代码表:

1122采油厂

112201采油一矿112202采油二矿

112201001采油一矿1队112201002采油一矿2队112201003采油一矿3队

112202001采油二矿1队112202002采油二矿2队

油水井表:

(y001油112201001)(y002油112201001)

(y003油112201002)(s001水112201002)

(y004油112201003)(s002水112202001)

(s003水112202001)(y005油112202002)

施工单位表:

作业公司作业一队作业公司作业二队作业公司作业三队

物码表:

wm001材料一吨wm002材料二米wm003材料三桶wm004材料四袋

ZYB:

//某作业项目编号zy2009001

预算单位:

采油一矿1队井号:

y001预算金额:

10000.00预算人:

张三预算日期:

2009-5-1

//开工日期:

2009-5-4完工日期:

2009-5-25施工单位:

作业公司作业一队施工内容:

堵漏

材料费:

7000.00(其中材料一:

2000.00材料二:

2000.00材料三:

2000.00材料四:

1000.00)

人工费:

2500.00设备费:

1000.00其它费用:

1400.00结算金额:

11900.00

结算人:

李四结算日期:

2009-5-26

//入账金额:

11900.00入账人:

王五入账日期:

2009-5-28

//某作业项目编号zy2009002

预算单位:

采油一矿2队井号:

y003预算金额:

11000.00预算人:

张三预算日期:

2009-5-1

//开工日期:

2009-5-4完工日期:

2009-5-23施工单位:

作业公司作业二队施工内容:

检泵

材料费:

6000.00(其中材料一:

2000.00材料二:

2000.00材料三:

2000.00)//隐含单价和数量

人工费:

1500.00设备费:

1000.00其它费用:

2400.00结算金额:

10900.00

结算人:

李四结算日期:

2009-5-26

//入账金额:

10900.00入账人:

王五入账日期:

2009-5-28

//某作业项目编号zy2009003

预算单位:

采油一矿2队井号:

s001预算金额:

10500.00预算人:

张三预算日期:

2009-5-1

//开工日期:

2009-5-6完工日期:

2009-5-23施工单位:

作业公司作业二队施工内容:

检泵

材料费:

6500.00(其中材料一:

2000.00材料二:

2000.00材料三:

2500.00)

人工费:

2000.00设备费:

500.00其它费用:

1400.00结算金额:

10400.00

结算人:

李四结算日期:

2009-5-26

//入账金额:

10400.00入账人:

王五入账日期:

2009-5-28

//某作业项目编号zy2009004

预算单位:

采油二矿1队井号:

s002预算金额:

12000.00预算人:

张三预算日期:

2009-5-1

//开工日期:

2009-5-4完工日期:

2009-5-24施工单位:

作业公司作业三队施工内容:

防砂

材料费:

6000.00(其中材料一:

2000.00材料二:

2000.00材料四:

2000.00)

人工费:

2000.00设备费:

1000.00其它费用:

1600.00结算金额:

10600.00

结算人:

李四结算日期:

2009-5-26

//入账金额:

10600.00入账人:

赵六入账日期:

2009-5-28

//某作业项目编号zy2009005

预算单位:

采油二矿2队井号:

y005预算金额:

12000.00预算人:

张三预算日期:

2009-5-1

//开工日期:

2009-5-4完工日期:

2009-5-28施工单位:

作业公司作业三队施工内容:

防砂

材料费:

7000.00(其中材料一:

2000.00材料二:

2000.00材料四:

3000.00)

人工费:

1000.00设备费:

2000.00其它费用:

1300.00结算金额:

11300.00

结算人:

李四结算日期:

2009-5-28

//(未入账)

这里只列举一个导出的数据表:

"施工单位名称","施工单位号","ROWID"

"作业公司作业一队","zy01001","AAAR7YAABAAAVChAAA"

"作业公司作业二队","zy01002","AAAR7YAABAAAVChAAB"

"作业公司作业三队","zy01003","AAAR7YAABAAAVChAAC"

3.利用SQLPLUS查询以下数据:

1)采油一矿2队2009-5-1到2009-5-28有哪些项目处于结算状态,列出相应材料费明细。

结算状态有值,不用管入账是否有值。

SQL>select*fromzclfbwhere作业项目编号in

2(select单据号fromzybwhere预算单位='采油一矿2队'

3and结算日期>=to_date('2009-5-1','yyyy-mm-dd')

4*and结算日期<=to_date('2009-5-28','yyyy-mm-dd'))

作业项目编号物码消耗数量单价

------------------------------------------------------------

zy2009002wm00120010

zy2009002wm00220010

zy2009002wm00320010

zy2009003wm00120010

zy2009003wm00220010

zy2009003wm00325010

已选择6行。

已用时间:

00:

00:

00.31

2)采油一矿2队2009-5-1到2009-5-28总的入账金额。

SQL>selectSUM(入帐金额)fromzyb

2where预算单位='采油一矿2队'

3and入账日期>=TO_DATE('2009-5-1','YYYY-MM-DD')

4*AND入账日期<=TO_DATE('2009-5-28','YYYY-MM-DD')

SUM(入帐金额)

-------------

21300

3)采油一矿2009-5-1到2009-5-28总的入账金额。

SQL>selectsum(入帐金额)fromzyb

2where预算单位like'采油一矿%'

3and入账日期>=to_date('2009-5-1','yyyy-mm-dd')

4*and入账日期<=to_date('2009-5-28','yyyy-mm-dd')

SUM(入帐金额)

-------------

33200

4)有哪些人员参与了入账操作。

SQL>selectdistinct入账人fromzyb;

入账人

--------------------

王五

赵六

5)2009-5-1到2009-5-28有结算未入帐的项目。

项目-单据号

SQL>SELECT单据号FROMZYB

2WHERE结算日期<=TO_DATE('2009-5-28','YYYY-MM-DD')

3AND结算日期>=TO_DATE('2009-5-1','YYYY-MM-DD')

4*AND入账人isNULL

5AND结算人isnotNULL

单据号

--------------

zy2009005

6)列出采油一矿2队的所有项目,按入账金额从高到低排列。

项目-项目号

SQL>select单据号,入账金额fromzyb

2where预算单位='采油一矿2队'

3*orderby入账金额desc

单据号入账金额

------------------------------

zy200900210900

zy200900310400

7)列出有哪些单位实施了项目,并计算各单位所有项目结算金额总和。

SQL>SELECT施工单位,sum(结算金额)FROMZYB

2GROUPBY施工单位;

施工单位SUM(结算金额)

---------------------------------

作业公司作业一队11900

作业公司作业二队21300

作业公司作业三队21900

已用时间:

00:

00:

00.04

8)找出消耗了材料三且消耗超过了2000元的项目,列出相应明细(利用子查询)。

//谁的明细?

-该项目的

SQL>select*fromzybwhere单据号in

2(select作业项目编号fromzclfbwhere(消耗数量*单价)>2000

3*and物码='wm003')

单据号预算单位井号预算金额预算人预算日期开工日期完工日期施工单位施工内容材料费人工费设备费其它费用结算金额结算人结算日期入账人入账日期入账金额

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

zy2009003采油一矿2队s00110500张三01-5月-0906-5月-0923-5月-09作业公司作业二队检泵65002100500140010500李四26-5月-09王五28-5月-0910400

已用时间:

00:

00:

00.28

9)作业公司二队参与了哪些项目。

SQL>select单据号,施工单位FROMZYB

2*WHERE施工单位='作业公司作业二队'

单据号施工单位

----------------------------------------

zy2009002作业公司作业二队

zy2009003作业公司作业二队

已用时间:

00:

00:

00.01

10)作业公司一队和二队参与了哪些项目(利用union)。

//集合查询

SQL>select单据号FROMZYB

2WHERE施工单位='作业公司作业一队'

3UNION

4select单据号FROMZYB

5*WHERE施工单位='作业公司作业二队'

单据号

--------------------

zy2009001

zy2009002

zy2009003

已用时间:

00:

00:

00.01

4.利用SQLPLUS完成以下操作:

1)将编号为zy2009005的项目的人工费和结算金额增加100元。

--增加前的数据

SQL>select单据号,人工费,结算金额fromzyb;

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

当前位置:首页 > 工作范文 > 演讲主持

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

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