课 程 设 计 报 告
题目: 数据库实验上机实验报告
专业班级: 计算机科学与技术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 char(20)】
主关键字为商场名称。所在地区为(洪山、汉口、汉阳、武昌。。。)
销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】 SALE【GNAME char(20),PNAME char(20),PRICE FLOAT,ATYPE char(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
图1 goods表
图2 plaza表
图3 sale表
2
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表创建一个统计每个商场各自打折商品平均价格的视图。
3