数据库实验报告 (2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告题目:数据库实验上机实验报告
专业班级:计算机科学与技术1210班
学号:U201215079
姓名:候宝峰
指导教师:
报告日期:2015-06-04
计算机科学与技术学院
目录
一、基本SQL操作(部分选做) (1)
1)数据定义 (1)
2)数据更新 (3)
3)用SQL语句完成下述查询需求: (4)
二、DBMS综合运用(部分选做) (8)
1)学习sqlserver的两种完全备份方式:数据和日志文件的脱机备份、系统的备份功能(选做)。 (8)
2)学习系统的身份、权限配置操作 (9)
3)了解SQLSERVER的存储过程、触发器、函数实现过程 (14)
三、实验总结 (17)
1)实验问题及解决 (17)
2)实验心得 (18)
一、基本SQL操作(部分选做)
1)数据定义
参照下面的内容建立自己实验所需的关系数据
创建三个关系:
商品表【商品名称、商品类型】
GOODS【GNAME char(20),GTYPE char(10)】
主关键字为(商品名称)。商品类型为(电器、文具、服装。。。)
商场【商场名称,所在地区】
PLAZA【PNAME char(20),PAREA c har(20)】
主关键字为商场名称。所在地区为(洪山、汉口、汉阳、武昌。。。)
销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】
SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE c har(10)】
主关键字为(商品名称、商场名称)。举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。表中记录如(‘哈森皮靴’,‘亚贸广场’,200,‘打折’),同一商场针对不同的商品可能采取不同的促销活动。
create table goods(gname char(20) primary key,gtype char(10));
create table plaza(pname char(20) primary key,parea char(20));
create table sale
(gname char(20),
pname char(20),
price FLOAT,
atype char(10)check (atype in('送券','打折','')),
primary key(gname,pname),
foreign key(gname)references goods(gname),
foreign key(pname)references plaza(pname));
图1 goods表
图2 plaza表
图3 sale表
2)数据更新
(1)向上述表格中用sql语句完成增、删、个、改的操作;
增加记录:insert into goods(gname,gtype)values(’anta’,’服装’);
删除记录:delete from goods where gname=’南孚’and gtype=’电池’;
更新记录:update goods set gtype=’电器’ where gname=’飞科’;
(2)编写一个触发器,并测试该触发器;
当插入一个“anta”货物时不能把它售价低于350 ,如果低于350 就修改成350
create trigger [dbo].[Chang_Update_sale] on [dbo].[sale]
after insert as
if(select count(*)from sale,inserted where sale.gname='anta'and sale.price<350)=1 begin
update sale set sale.price=350
where sale.gname='anta'and sale.pname='家乐福'
end
图4 触发器执行图
如图,将原有的记录删掉后插入一条新纪录,应该是俩行受影响,由于触发器修改最小值,则会显示三行受影响,查表知,是触发器有效执行了。
(3)将SALE表中的打折记录插入到新表SALE_CHEAP中,并基于SALE_CHEAP表创建一个统计每个商场各自打折商品平均价格的视图。
create view SALE_CHEAP as
select sale.pname,sale.gname,sale.price
from sale where atype='打折';
select pname,avg(price) avg
from SALE_CHEAP
group by(pname)
图5 视图
3)用SQL语句完成下述查询需求:
(1)查询所有以“打折”方式销售的商品的当前销售情况,并按照价格的降序排列;select GNAME,PNAME,PRICE
from sale
where ATYPE='打折'
order by price desc;
图6 查询1
2)查询所有没有任何活动的商品及其所在的商场,结果按照商品排序;
select GNAME,PNAME
from sale
where ATYPE is null
order by gname;