数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
数据库实验报告
数据库实验报告
课程实验报告
课程名称:
学 号:
V20XX41129
姓 名:
吴光艺
指导老师:
胡侃
专业班级:
计算机1402班
报告日期:
20XX年4月22日
计算机科学与技术学院
一.实验目的
1.通过对某个数据库管理系统的安装使用,初步了解DBMS的工作环境和系统架构
2.熟悉通过SQL对数据库进行操作,完成下面的SQL语句
3.学习系统的备份功能,学习系统的身份、权限配置操作,了解系统的查询性能分析功能。
4.熟悉通过sql对数据进行完整性检查性控制
二.实验平台
操作系统:
win7数据库管理系统:
Server20XXR2交互式查询语言:
sql语言
三.实验要求
2.根据一下要求认真进行实验,记录所有的实验用例数据定义:
基本表的创建,修改和删除,视图的创建和删除。
数据操作:
完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询);完成各类更新操作(插入数据,删除数据,思想汇报专题修改数据,增加数据)
视图的操作:
视图的定义(创建和删除),查询,更新(注意更新的条件)3.使用sql对数据进行完整性控制(触发器),用实例证实,当操作违反了完整性约束条件时,系统是如何处理的
四.实验内容
1.Sql练习部分:
创建三个关系:
商品表【商品名称、商品类型】
GOODS【GNAMEchar(20),GTYPEchar(10)】
主关键字为(商品名称)。
商品类型为(电器、文具、服装。
。
。
)
商场【商场名称,所在地区】
PLAZA【PNAMEchar(20),PAREAchar(20)】
主关键字为商场名称。
所在地区为(洪山、汉口、汉阳、武昌。
。
。
)
销售价格表【商品名称、商场名称、当前销售价格、目前举办活动类型】
SALE【GNAME
(10)】
主关键字为(商品名称、商场名称)。
举办活动类型为(送券、打折),也可为空值,表示当前未举办任何活动。
表中记录如(‘哈森皮靴’,‘亚贸广场’,200,‘打折’),同一商场针对不同的商品可能采取不同的促销活动。
CREATETABLEGOODS
(
GNAMECHAR(20)PRIMARYKEY,GTYPECHAR(10)char(20),PNAMEchar(20),PRICEFLOAT,ATYPEchar
);
--主关键字为(商品名称)。
商品类型为(电器、文具、服装。
。
。
)
CREATETABLEPLAZA
(
PNAMECHAR(20)PRIMARYKEY,PAREACHAR(20)
);----商场【商场名称,所在地区】
CREATETABLESALE
(
GNAMECHAR(20),PNAMECHAR(20),
PRICEFLOAT,
ESGOODS(GNAME),FOREIGNKEY(PNAME)REFERENCESPLAZA(PNAME)
INSERTINTOGOODSVALUES('电风扇','电器');
INSERTINTOGOODSVALUES('电脑','电器');
INSERTINTOGOODSVALUES('彩电','电器');
INSERTINTOGOODSVALUES('空调','电器');
INSERTINTOGOODSVALUES('热水器','电器');
INSERTINTOGOODSVALUES('钢笔','文具');
INSERTINTOGOODSVALUES('练习本','文具');
INSERTINTOGOODSVALUES('墨水','文具');
INSERTINTOGOODSVALUES('书包','文具');
INSERTINTOGOODSVALUES('橡皮','文具');
INSERTINTOGOODSVALUES('西装','服装');
INSERTINTOGOODSVALUES('衬衣','服装');
INSERTINTOGOODSVALUES('裙子','服装');
INSERTINTOGOODSVALUES('内裤','服装');
INSERTINTOPLAZAVALUES('苏宁','洪山');
INSERTINTOPLAZAVALUES('国美','洪山');
INSERTINTOPLAZAVALUES('国泰','洪山');
INSERTINTOPLAZAVALUES('家乐福','汉口');
INSERTINTOPLAZAVALUES('大洋百货','武昌');
INSERTINTOPLAZAVALUES('武商','武昌');
INSERTINTOSALEVALUES('电风扇','苏宁',258,'打折');
INSERTINTOSALEVALUES('电风扇','国美',288,'送券');
INSERTINTOSALEVALUES('电风扇','中百',288,'');
INSERTINTOSALEVALUES('电风扇','国泰',275,'送券');
INSERTINTOSALEVALUES('电风扇','家乐福',188,'');
INSERTINTOSALEVALUES('电脑','苏宁',5000,'打折');
INSERTINTOSALEVALUES('电脑','国美',5200,'');
INSERTINTOSALEVALUES('电脑','中百',6400,'打折');
INSERTINTOSALEVALUES('电脑','国泰',5800,'送券');
INSERTINTOSALEVALUES('彩电','苏宁',2700,'打折');
INSERTINTOSALEVALUES('彩电','国美',2300,'送券');
INSERTINTOSALEVALUES('彩电','大洋百货',2900,'');
INSERTINTOSALEVALUES('热水器','苏宁',888,'打折');
INSERTINTOSALEVALUES('热水器','国美',488,'打折');
INSERTINTOSALEVALUES('热水器','中百',570,'');
INSERTINTOSALEVALUES('热水器','大洋百货',620,'送券');
INSERTINTOSALEVALUES('钢笔','中百',1,'打折');
INSERTINTOSALEVALUES('钢笔','大洋百货',5,'');
INSERTINTOSALEVALUES('钢笔','家乐福',3,'打折');
INSERTINTOSALEVALUES('练习本','中百',12,'送券');
INSERTINTOSALEVALUES('练习本','国泰',13,'');
INSERTINTOSALEVALUES('练习本','家乐福',6,'');
INSERTINTOSALEVALUES('墨水','中百',8,'送券');
INSERTINTOSALEVALUES('墨水','国泰',10,'打折');
INSERTINTOSALEVALUES('墨水','武商',15,'');下页
数据库实验报告
INSERTINTOSALEVALUES('书包','中百',88,'打折');
INSERTINTOSALEVALUES('书包','家乐福',88,'');
INSERTINTOSALEVALUES('书包','武商',188,'打折');
INSERTINTOSALEVALUES('橡皮','中百',2,'打折');
INSERTINTOSALEVALUES('橡皮','家乐福',5,'');
INSERTINTOSALEVALUES('长裤','中百',188,'打折');
INSERTINTOSALEVALUES('长裤','家乐福',388,'打折');
INSERTINTOSALEVALUES('长裤','武商',590,'');
INSERTINTOSALEVALUES('长裤','国泰',288,'送券');
INSERTINTOSALEVALUES('短袖','中百',188,'');
INSERTINTOSALEVALUES('短袖','家乐福',459,'');
INSERTINTOSALEVALUES('短袖','武商',118,'');
INSERTINTOSALEVALUES('短袖','国泰',268,'');
INSERTINTOSALEVALUES('裙子','中百',288,'打折');
INSERTINTOSALEVALUES('裙子','家乐福',488,'');
INSERTINTOSALEVALUES('裙子','武商',588,'送券');
INSERTINTOSALEVALUES('裙子','国泰',128,'');
INSERTINTOSALEVALUES('短裤','中百',99,'');
INSERTINTOSALEVALUES('短裤','家乐福',118,'打折');
INSERTINTOSALEVALUES('短裤','武商',198,'');
INSERTINTOSALEVALUES('短裤','国泰',88,'');
updateSALE11
SETATYPE='NULL'
WHEREATYPE='
';
6
Tablegoods
Tableplaza
Tablesale
7(转载于:
在点网)
2.数据更新:
1)向上述表格中用sql语句完成增、删、改的操作;
2)编写一个触发器,并测试该触发器;
3)将SALE表中的打折记录插入到新表SALE_CHEAP中,并基于SALE_CHEAP表创建一个统计每个商场各自打折商品平均价格的视图。
CREATETABLESALE_CHEAP
8
(
GNAMECHAR(20),PNAMECHAR(20),
PRICEFLOAT,
)
INSERTINTOSALE_CHEAP(GNAME,PNAME,PRICE,ATYPE)
SELECTGNAME,PNAME,PRICE,ATYPE
FROMSALE
WHEREATYPE='打折';
CREATEVIEWP_SALE(PNAME,AVG_PRICE)
AS
SELECTPNAME,AVG(PRICE)
FROMSALE_CHEAP
GROUPBYPNAMEATYPECHAR(10),PRIMARYKEY(GNAME,PNAME),FOREIGNKEY(GNAME)REFERENCESGOODS(GNAME),FOREIGNKEY(PNAME)REFERENCESPLAZA(PNAME)
9
3.用SQL语句完成下述查询需求:
1)查询所有以“打折”方式销售的商品的当前销售情况,并按照价格的降序排列;SELECTGNAME,PRICE
FROMSALE
WHEREATYPE='打折'
ORDERBYPRICEDESC;
2)查询所有没有任何活动的商品及其所在的商场,结果按照商品排序;
10上页 下页
数据库实验报告
SELECTGNAME,PNAME
FROMSALE
WHEREATYPE=NULL
ORDERBYGNAME;
3)查询价格在200~XXX元之间的商品名称、所在的商场名称、价格,结果按照商场名称排序;
SELECTGNAME,PNAME,PRICE
FROMSALE
WHEREPRICEBETWEEN200AND500
ORDERBYPNAME;
4)查询每种商品的最低价格、商品名称;
SELECTGNAME,MIN(PRICE)
FROMSALE
GROUPBYGNAME;
5)查询以“送券”方式销售的商品总数超过30种的商场名称;
SELECTPNAME
FROMSALE
WHEREATYPE='送券'
GROUPBYPNAMEHAVINGCOUNT(*)>15
6)查询以“送券”方式销售的商品总数超过30种的商场所在地区;
SELECTPAREA
FROMPLAZA
WHEREPLAZA.PNAMEIN
(
SELECTSALE.PNAME
FROMSALE
WHEREATYPE='送券'
GROUPBYSALE.PNAMEHAVINGCOUNT(*)>1
7)查询价格为下列取值之一的商品名称、所在商场名称、目前举办活动的类型,(88、188、288、388、488、588、888);
SELECTGNAME,PNAME,ATYPE
FROMSALE
WHEREPRICEIN(88,188,288,388,488,588,888)
8)查询以“老”字开头的所有商品的名称;(ps:
由于三个关系设计的时候没有注意题目的要求,所以没有符合的选项,故自己有另外建了一个)
CREATETABLEGOODS
(
GNAMECHAR(20)PRIMARYKEY,GTYPECHAR(10)
);
--主关键字为(商品名称)。
商品类型为(电器、文具、服装。
。
。
)
INSERTINTOGOODSVALUES('电风扇','电器');
INSERTINTOGOODSVALUES('电视','电器');
INSERTINTOGOODSVALUES('冰箱','电器');
INSERTINTOGOODSVALUES('老花镜','电器');
INSERTINTOGOODSVALUES('老干妈','电器');
SELECT*
FROMGOODS
WHEREGNAMELIKE'老
%';
9)查询同时销售“剃须刀”和“电池”的商场名称;
SELECTS1.PNAME
FROMSALES1,SALES2
WHERES1.PNAME=S2.PNAMEANDS1.GNAME='剃须刀'
ANDS2.GNAME='电池'
10)查询不举办任何活动的商场;
TPNAME
FROMSALE
WHEREATYPEISNOTNULL;
11)查询所销售的商品包含了“校园超市”所销售的所有商品的商场名称。
TPNAME
FROMSALESX
WHERENOTEXISTS
(SELECT*FROMSALESYWHEREPNAME='校园超市'
ANDNOTEXISTS (SELECT*FROMSALESZWHERESZ.PNAME=SX.PNAMEANDSZ.GNAME=SY.GNAME));
2.软件功能学习部分
(1)学习系统的备份功能。
利用SqlServer本身带有的备份功能(DTS)把数据库全部或者差额定时备份到某个目录,一旦备份成功,这时候在指定的备份目录下有.bak文件存在,选择SQLServer服务器的数据库,单击鼠标右键,选择“所有任务”选“备份数据库”即可
(2)学习系统的身份、权限配置操作。
打开“SSMS—SQLServer实例—安全性—登录名”,右键选择“新建登录名”,选择身份验证模式(身份验证模式不同,帐户类型也不一样,),输入名字,并为该用户选择一个默认数据库(比如默认为master数据库)。
该账户建立好之后,建立数据库用户,以便用户可以访问数据库,对数据库进行操作。
我们在建立数据库用户时,其实就是映射登录用户,所以在一般情况下,我们的登录名和数据库用户名是一致的。
操作方法:
打开“SSMS—SQLServer实例—具体的数据库—安全性—数据库用户”;最后是在具体的数据库对象(比如表)上授予具体的权限,三种权限:
授予、回收、拒绝。
上页 下页
数据库实验报告
(3)了解系统的查询性能分析功能。
查询优化有下面3种方法:
A建立索引,建立“适当”的索引是实现查询优化的首要前提;
B重写sql语句(即重写查询语句),SQLSERVER中有一个“查询分析优化器”,它可以计算出where子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间,也就是说,它能实现自动优化;
C其他优化方法(调整参数,建立视图,临时表等)
五.实验体会通过数据库的多次的上机实验,使我对数据库以及SQL语言有了一个更透彻的理解,对以前上课学习到的知识有了更深的认识,通过自己上机实验,对很多以前不是很清楚很明白的问题也有了更清醒的认识,在各种不同的环境中,也能够适时作出相应的调整,在某种程度上提高了自己对知识的领悟能力和学习能力。
通过这次设计,我受益非浅,亲身体验了数据库设计的全过程,在实践中了解了数据库系统设计的步骤、流程以及思路,增长了在数据库设计方面的见识,我深刻认识到以前所学的基础课程的重要性,也使我们掌握了很多新知识,特别是一些课本之外的知识,体会到了理论知识和实践相结合的重要性。
16上页