数据库实验上机答案整理 中国石油大学 龚安Word格式文档下载.docx
- 文档编号:22053083
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:22
- 大小:28.05KB
数据库实验上机答案整理 中国石油大学 龚安Word格式文档下载.docx
《数据库实验上机答案整理 中国石油大学 龚安Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库实验上机答案整理 中国石油大学 龚安Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
⑷用带子查询的删除语句删除采油一矿油井作业项目。
⑸撤消上述两个操作。
四、实验报告
提交实验内容中用SQL语句完成的题目的SQL语句文档及相应的执行结果。
实验五SQL练习3
1.掌握基本表的删除与修改;
2.掌握实体完整性、参照完整性和用户定义的完整性的定义、检查和违约处理;
3.掌握视图的定义、查询和更新,了解视图的作用。
⑴向在实验四中所定义的数据表增加“备注”列,其数据类型为字符型,并查看新增列的值。
⑵对上述数据表增加主码约束条件,并观察在数据表中存在数据的情况下主码约束是否创建成功,然后再次执行实验四中实验内容3.2的操作,并观察记录执行结果。
⑶删除上述数据表中的数据,然后再删除该数据表,对这两个操作进行比较。
2.利用QueryAnalyzer完成以下任务:
⑴对实验三中所定义的6个数据表增加主码约束条件,并观察在数据表中存在数据的情况下主码约束是否创建成功,然后执行以下2个操作,观察并记录实体完整性的检查和违约处理。
①insertinto材料费表values('
zy2016001'
'
wm004'
100,10)
②insertinto材料费表values('
zy2016002'
NULL,200,10)
注:
“材料费表”根据自己所命名的表名进行相应的替换。
⑵对实验三中所定义的6个数据表增加相应的参照完整性约束,并观察在数据表中存在数据的情况下参照完整性约束是否创建成功,然后执行以下操作,观察并记录参照完整性的检查和违约处理。
①将(y007油井112203002)插入到油水井表。
zy2016007'
wm006'
③将作业项目编号zy2016001的施工单位修改为“作业公司作业五队”。
④将单位代码表中的(112202002采油二矿二队)删除,查看油水井表和作业项目表中的数据有何变化。
⑤将物码表中的(wm004材料四袋)修改为(wm04材料四
袋)。
⑥撤销上述成功的更新操作。
⑶对实验三中所定义的6个数据表按以下要求增加相应的完整性约束条件,并观察在数据表中存在数据的情况下完整性约束是否创建成功。
①单位代码表的单位名称不能取空值、且取值唯一。
②油水井表的井别只允许取“油井”或“水井”,单位代码不能取空值。
③物码表的名称规格不能取空值、且取值唯一,计量单位不能精品文档.
取空值。
④材料费表的消耗数量不能取空值,单价不能取空值。
⑤对作业项目表根据实际应用的要求定义适当的用户定义的完整性约束条件。
⑴定义一个视图,用于保存作业项目表和材料费表的全部列。
⑵查询上面定义的视图,可任意组合查询条件,构造出2个查询。
⑶定义一个反映作业项目预算状态的视图,并向该视图插入('
zy2016008'
112202002'
y005'
10000,'
张三'
'
2016-07-02'
),查看作业项目表的数据有何变化。
⑷撤销上述成功的更新操作。
实验六其它数据库对象的管理
1.掌握事务的概念、性质、定义及使用;
2.掌握游标的概念、组成、创建及使用;
3.掌握存储过程的概念、类型、特点、创建、执行及管理。
4.掌握触发器的概念、创建、管理及使用。
1.利用QueryAnalyzer进行如下事务处理练习(把下列五条语句作为一个事务处理,只有五条语句全部成功执行才做提交,并给出成功的提示信息;
否则就做回退处理,并给出具体的错误提示信息):
insertinto作业项目表values('
zy2016006'
10000,'
07-01-2016'
'
07-04-2016'
07-25-2016'
'
作业公司作业一队'
堵漏'
7000,2500,1000,1400,11900,
李四'
07-26-2016'
11900,'
王五'
07-28-2016'
)
insertinto材料费表values('
wm001'
200,10)
wm002'
wm003'
“作业项目表”、“材料费表”根据自己所命名的表名进行相应的替换。
2.利用QueryAnalyzer进行如下游标练习:
定义一个游标,用于存放作业项目表的全部行数据,并打印以下表头和各行数据。
表头:
单据号预算单位井号预算金额预算人预算日期开工日期完工日期施工单位施工内容材料费人工费设备费其它费用结算金额结算人结算日期入账金额入账人入账日期
执行以上所定义的游标,查看是否能正确输出结果。
3.利用QueryAnalyzer定义一个存储过程,要求完成以下功能:
生成某单位(单位可以是采油厂或采油矿或采油队)某段时间内的成本运行情况(输入参数:
单位代码起始日期结束日期)。
输出格式***单位**时间---**时间成本运行情况
预算金额结算金额入账金额未结算金额未入账金额
****.******.******.******.******.**
其中:
未结算金额=预算金额-结算金额
未入账金额=结算金额-入账金额
分三种情况(单位分别为:
采油厂、采油矿、采油队)执行以上定义的存储过程,查看执行输出结果。
4.利用QueryAnalyzer针对作业项目表定义三个触发器,分别完成以下功能:
⑴对作业项目表插入一行数据时,自动计算并插入结算金额字段(结算金额=材料费+人工费+设备费+其它费用)。
⑵当修改作业表的某行数据时自动修改结算金额字段。
⑶当删除作业表中一行数据时,自动删除材料费表中相应明细数据。
⑷对上述3个触发器用适当的更新语句进行验证,并查看结果是否达到预期结果。
精品文档实验七安全机制2.利用QueryAnalyzer完成以下操作:
建立采油一矿的作业项目的视图,把该视图的查询权限授予⑴
观察执行情user11,以的身份查询该视图,user11给采油一矿的用户况;
再以其他用户的身份查询该视图,观察执行情况。
的身份执行实验六中所定义user12创建一个用户user12,以⑵
然后把该存储过程的执行权限观察记录是否成功执行;
的存储过程,观察记录是否的身份执行该存储过程,再次以user12user12授予给,成功执行。
的数据,“作业项目表”定义触发器,实现只能在工作时间内更新⑶
然后通过选择不同的时间进行适当的更新操作来验证。
3-------------------------------------------------------------------实验单位代码表TABLECREATE
20),((单位代码CHAR);
单位名称CHAR(20)
油水井表CREATETABLE20),(井号CHAR(20),井别CHAR();
CHAR(20)单位代码
施工单位表CREATETABLE
);
20)CHAR(施工单位名称(
物码表TABLECREATE),(20物码(CHAR(20),名称规格CHAR
计量单位CHAR(20));
createtable材料费表(
单据号CHAR(20),
精品文档),CHAR(20物码,消耗数量INT单价MONEY,);
作业项目表CREATETABLE
),CHAR(20(单据号),CHAR(20预算单位
(CHAR20),井号
MONEY,预算金额(20),预算人CHARDATETIME,预算日期
DATETIME,开工日期DATETIME,完工日期20),施工单位CHAR(20),施工内容CHAR(money,材料费
MONEY,人工费
MONEY设备费money,其他费用
MONEY,结算金额
),(20结算人CHARDATETIME,结算日期
MONEY入账金额,10),CHAR入账人(DATETIME)入账日期
-------------------------------------------------------------------------------
单位代码表intoinsert
('
1122'
采油厂values
单位代码表insertinto'
);
112201'
采油一矿values(
单位代码表insertinto
采油二矿'
values('
112202'
单位代码表insertinto);
采油一矿一队'
112201001'
采油一矿二队,(values'
112201002'
精品文档
单位代码表intoinsert);
采油一矿三队'
values('
112201003'
into单位代码表insert);
采油二矿一队'
112202001'
油水井表intoinsert);
'
y001'
油井'
油水井表intoinsert
油井values('
y002'
into油水井表insert
y003'
油水井表insertinto);
values('
s001'
水井'
y004'
'
values(
s002'
油水井表insertinto
水井'
s003'
values(,'
intoinsert施工单位表'
into施工单位表insert作业公司作业二队'
施工单位表intoinsert
作业公司作业三队
insertinto物码表
材料一'
吨'
精品文档物码表insertinto);
米'
材料二'
values(
物码表intoinsert桶'
材料三'
物码表intoinsert);
袋'
材料四'
)消耗数量,单价(单据号,物码,材料费表insertinto
¥10,'
200,values(
(单据号),单价,物码,消耗数量insertinto材料费表);
200,values('
单据号,物码,),单价消耗数量insertinto材料费表('
200,¥10);
----------------------------------------------------------------
物码,消耗数量单价),insertinto材料费表(单据号'
200,¥10values);
zy2016003'
物码,消耗数量,单价)insertinto材料费表(单据号,10);
200,¥values('
消耗数量,单价)insertinto材料费表(单据号,物码250,¥10'
values(,);
--------------------------------------------------------------------
消耗数量,单价)intoinsert材料费表(单据号,物码,,¥10);
values'
zy2016004'
(,'
200
单价)(材料费表单据号,物码,消耗数量insertinto10);
200'
,¥values(
单价)物码单据号,,消耗数量,insertinto材料费表();
10,200,¥(values'
------------------------------------------------------)消耗数量,,单价into材料费表(单据号,物码insert);
zy2016005'
200,values(
),单价消耗数量单据号into材料费表(,物码,insert);
10,,,(values'
200¥
精品文档单价),消耗数量,insertinto材料费表(单据号,物码10);
300,¥values('
--------------------------------------------------------------------作业项目表insertinto,'
2016/5/1'
¥10000,'
张三values('
,¥,¥2500,¥1000,¥109001400¥'
2016/5/4'
2016/5/23'
7000,'
2016/5/26'
王五);
2016/5/28'
¥10900,'
王五----------------------------------------------------------
作业项目表intoinsert
,'
¥10500,'
李,'
¥500,¥1400,¥10400'
作业公司作业二队'
调剖'
¥6500,¥2000,'
2016/5/6'
四'
10400¥,'
);
---------------------------------------------
作业项目表insertinto,张三12000,'
¥'
10600,¥,¥1600,解堵'
¥6000,¥2000,¥1000'
2016/5/24'
作业公司作业三队'
10600,'
赵六李四'
--------------------------------------------作业项目表intoinsert
,'
¥12000,values('
,¥11300¥1000,2000,¥1300'
防砂,¥7000,¥,'
2016/6/1'
李四NULL,NULL,NULL);
---------------------------------------tranbegin
作业项目表update
200人工费+=人工费set'
;
单据号=where
作业项目表update200+结算金额set结算金额='
单据号=where
delete作业项目表from
NULL;
where入账金额is
tranrollback
-------------------------------------------------实验四精品文档.
精品文档--1预算日期);
on作业项目表(createindex预算日期索引结算日期);
on作业项目表(createindex结算日期索引
入账日期);
on作业项目表(createindex入账日期索引
--
(1)*select作业项目表from
=and预算单位between'
and'
where预算日期
单位代码(select
单位代码表from
采油一矿二队'
where单位名称=
--anothersolution*select
单位代码表作业项目表,frombetween'
and预算日期单位名称单位代码=预算单位and='
where'
and--
(2)*select
作业项目表from
=预算单位'
andwhere结算日期between'
and单位代码select(单位代码表from
=采油一矿二队where单位名称
--anothersolution--select*,单位代码表--from作业项目表结算结算日期>
='
2016-5-1'
and=单位代码and单位名称--where='
and预算单位日期<
2016-5-28'
--(3)-----------------------------------------------*select
材料费表from
=单据号where单据号(select
=and预算单位where预算日期between'
and'
单位代码(select单位代码表from));
where单位名称=
--(4)------------------------------------------select*作业项目表from=and预算单位where入账日期between'
and'
单位代码select(
精品文档from单位代码表采油一矿二队'
单位名称='
where
--(5)-----------------------------------------预算金额总和sum,(预算金额)select作业项目表from='
and预算单位where预算日期between'
and
单位代码select(单位代码表from
='
where单位名称--(6)---------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库实验上机答案整理 中国石油大学 龚安 数据库 实验 上机 答案 整理 中国 石油大学