数据库实验报告10级.docx
- 文档编号:2913702
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:709.26KB
数据库实验报告10级.docx
《数据库实验报告10级.docx》由会员分享,可在线阅读,更多相关《数据库实验报告10级.docx(21页珍藏版)》请在冰豆网上搜索。
数据库实验报告10级
数据库实验报告
班级:
计算机科学与技术1005
学号:
0909102518
姓名:
赵书剑
指导教师:
盛津芳
一.实验目的………………………………………1
二.实验要求………………………………………1
三.实验内容………………………………………1
四.运行结果………………………………………9
五.实验总结………………………………………31
一.实验目的
1.了解DBMS的工作环境和系统框架;
2.通过SQL语言对数据库进行操作;
3.熟悉SQL语句。
二.实验要求
1.所有的SQL语句和源代码;
2.要求有适当的注释;
3.性约束实施、实验三、实验四和实验五要求给出相应的测试用例。
三.实验内容
实验一:
创建表、更新表和实施数据完整性
1.运行给定的SQLScript,建立数据库GlobalToyz。
2.创建所有表的关系图。
3.列出所有表中出现的约束(包括Primarykey,Foreignkey,checkconstraint,default,unique)
4.对Recipient表和Country表中的cCountryId属性定义一个用户自定义数据类型,并将该属性的类型定义为这个自定义数据类型。
5.把价格在$20以上的所有玩具的材料拷贝到称为PremiumToys的新表中。
6.对表Toys实施下面数据完整性规则:
(1)玩具的现有数量应在0到200之间;
(2)玩具适宜的最低年龄缺省为1。
7.不修改已创建的Toys表,利用规则实现以下数据完整性:
(1)玩具的价格应大于0;
(2)玩具的重量应缺省为1。
8.给id为‘000001’玩具的价格增加$1。
实验二:
查询数据库
1.显示属于California和Illinoi州的顾客的名、姓和emailID。
2.显示定单号码、商店ID,定单的总价值,并以定单的总价值的升序排列。
3.显示在orderDetail表中vMessage为空值的行。
4.显示玩具名字中有“Racer”字样的所有玩具的材料。
5.根据2000年的玩具销售总数,显示“PickoftheMonth”玩具的前五名玩具的ID。
6.根据OrderDetail表,显示玩具总价值大于¥50的定单的号码和玩具总价值。
7.显示一份包含所有装运信息的报表,包括:
OrderNumber,ShipmentDate,ActualDeliveryDate,DaysinTransit.(提示:
DaysinTransit=ActualDeliveryDate–ShipmentDate)
8.显示所有玩具的名称、商标和种类(ToyName,Brand,Category)。
9.以下列格式显示所有购物者的名字和他们的简称:
(Initials,vFirstName,vLastName),例如AngelaSmith的Initials为A.S。
10.显示所有玩具的平均价格,并舍入到整数。
11.显示所有购买者和收货人的名、姓、地址和所在城市,要求显示结果中的重复记录。
12.显示没有包装的所有玩具的名称。
(要求用子查询实现)
13.显示已收货定单的定单号码以及下定单的时间。
(要求用子查询实现)
14.显示一份基于Orderdetail的报表,包括cOrderNo,cToyId和mToyCost,记录以cOrderNo升序排列,并计算每一笔定单的玩具总价值。
(提示:
使用运算符COMPUTEBY)。
15.把价格在$20以上的所有玩具的信息拷贝到称为PremiumToys的新表中。
实验三:
视图与触发器
1.定义一个视图,包括购买者的姓名、所在州和他们所订购玩具的名称、价格和数量。
2.基于
(1)中定义的视图,查询显示所有California州的购买者的姓名和他们所订购玩具的名称及数量。
3.视图定义如下:
CREATEVIEWvwOrderWrapper
AS
SELECTcOrderNo,cToyId,siQty,vDescription,mWrapperRate
FROMOrderDetailJOINWrapper
ONOrderDetail.cWrapperId=Wrapper.cWrapperId
以下更新命令,在更新siQty和mWrapperRate属性使用了以下更新命令时出现错误:
UPDATEvwOrderWrapper
SETsiQty=2,mWrapperRate=mWrapperRate+1
FROMvwOrderWrapper
WHEREcOrderNo=‘000001’
修改更新命令,以更新基表中的值。
4.在OrderDetail上定义一个触发器,如果购物者改变了定单的数量,玩具的成本也自动地改变。
(提示:
Toycost=Quantity*ToyRate)
实验四:
存储过程
1.编写一段程序,将每种玩具的价格提高¥0.5,直到玩具的平均价格接近$24.5为止。
此外,任何玩具的最大价格不应超过$53。
2.创建一个称为prcCharges的存储过程,它返回某个定单号的装运费用和包装费用。
3.创建一个称为prcHandlingCharges的过程,它接收定单号并显示经营费用。
PrchandlingCharges过程应使用prcCharges过程来得到装运费和礼品包装费。
提示:
经营费用=装运费+礼品包装费
实验五:
事务与游标
1.名为prcGenOrder的存储过程产生存在于数据库中的定单号:
CREATEPROCEDUREprcGenOrder
@OrderNochar(6)OUTPUT
as
SELECT@OrderNo=Max(cOrderNo)FROMOrders
SELECT@OrderNo=
CASE
WHEN@OrderNo>=0and@OrderNo<9Then
‘00000’+Convert(char,@OrderNo+1)
WHEN@OrderNo>=9and@OrderNo<99Then
‘0000’+Convert(char,@OrderNo+1)
WHEN@OrderNo>=99and@OrderNo<999Then
‘000’+Convert(char,@OrderNo+1)
WHEN@OrderNo>=999and@OrderNo<9999Then
‘00’+Convert(char,@OrderNo+1)
WHEN@OrderNo>=9999and@OrderNo<99999Then
‘0’+Convert(char,@OrderNo+1)
WHEN@OrderNo>=99999ThenConvert(char,@OrderNo+1)
END
RETURN
当购物者确认定单时,应该出现下面的步骤:
(1)用上面的过程产生定单号。
(2)定单号,当前日期,购物车ID,和购物者ID应该加到Orders表中。
(3)定单号,玩具ID,和数量应加到OrderDetail表中。
(4)在OrderDetail表中更新玩具成本。
(提示:
Toycost=Quantity*ToyRate).
将上述步骤定义为一个事务。
编写一个过程以购物车ID和购物者ID为参数,实现这个事务。
编写一个程序显示每天的定单状态。
如果当天的定单值总合大于170,则显示“Highsales”,否则显示”Lowsales”.报告中要求列出日期、定单状态和定单总价值。
四.运行结果
实验一:
表的关系图如下:
实验二:
1.显示属于California和Illinoi州的顾客的名、姓和emailID
selectvFirstName,vLastName,vEmailIdfromShopperwherecState='California'orcState='Illinois';
2.显示定单号码、商店ID,定单的总价值,并以定单的总价值的升序排列。
selectcOrderNo,cShopperId,mTotalCostfromOrdersorderbymTotalCost;
3.显示在orderDetail表中vMessage为空值的行。
select*fromOrderDetailwherevMessageisNULL;
4.显示玩具名字中有“Racer”字样的所有玩具的材料。
select*fromToyswherevToyNamelike'%Racer%';
5.根据2000年的玩具销售总数,显示“PickoftheMonth”玩具的前五名玩具的ID。
selectcToyIdfromPickOfMonthgroupbycToyIdorderbysum(iTotalSold)desclimit5;
6.根据OrderDetail表,显示玩具总价值大于¥50的定单的号码和玩具总价值。
selectcOrderNo,sum(mToyCost)fromOrderDetailgroupbycOrderNohavingsum(mToyCost)>50;
7.显示一份包含所有装运信息的报表,包括:
OrderNumber,ShipmentDate,ActualDeliveryDate,DaysinTransit.(提示:
DaysinTransit=ActualDeliveryDate–ShipmentDate)
selectcOrderNoas'OrderNumber',dShipmentDateas'ShipmentDate',dActualDeliveryDateas'ActualDeliveryDate',datediff(dActualDeliveryDate,dShipmentDate)as'DaysinTransit'fromShipment;
8.显示所有玩具的名称、商标和种类(ToyName,Brand,Category)。
selectvToyName,cBrandName,cCategoryfrom(ToysnaturaljoinToybrand)joinCategoryusing(cCategoryid);
9.以下列格式显示所有购物者的名字和他们的简称:
(Initials,vFirstName,vLastName),例如AngelaSmith的Initials为A.S
selectconcat(left(vFirstName,1),'.',left(vLastName,1))asinitials,vFirstName,vLastNamefromShopper;
10.显示所有玩具的平均价格,并舍入到整数。
selectround(sum(mToyRate)/count(*))asaverage_ratefromToys;
11.显示所有购买者和收货人的名、姓、地址和所在城市,要求显示结果中的重复记录。
(selectvFirstName,vLastName,vAddress,cCityfromRecipient)unionall(selectvFirstName
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告 10