中南大学数据库实验报告Word格式.docx

上传人:b****6 文档编号:17720234 上传时间:2022-12-08 格式:DOCX 页数:17 大小:302.34KB
下载 相关 举报
中南大学数据库实验报告Word格式.docx_第1页
第1页 / 共17页
中南大学数据库实验报告Word格式.docx_第2页
第2页 / 共17页
中南大学数据库实验报告Word格式.docx_第3页
第3页 / 共17页
中南大学数据库实验报告Word格式.docx_第4页
第4页 / 共17页
中南大学数据库实验报告Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

中南大学数据库实验报告Word格式.docx

《中南大学数据库实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《中南大学数据库实验报告Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

中南大学数据库实验报告Word格式.docx

OrderNumber,ShipmentDate,ActualDeliveryDate,DaysinTransit.(提示:

DaysinTransit=ActualDeliveryDate–ShipmentDate)

8.显示所有玩具的名称、商标和种类(ToyName,Brand,Category)。

9.显示玩具的名称和所有玩具的购物车ID。

如果玩具不在购物车中,则显示NULL值。

10.以下列格式显示所有购物者的名字和他们的简称:

(Initials,vFirstName,vLastName),例如AngelaSmith的Initials为A.S。

11.显示所有玩具的平均价格,并舍入到整数。

12.显示所有购买者和收货人的名、姓、地址和所在城市。

13.显示没有包装的所有玩具的名称。

(要求用子查询实现)

14.显示已发货定单的定单号码以及下定单的时间。

实验三:

视图与触发器

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)

=9and@OrderNo<

99Then

‘0000’+Convert(char,@OrderNo+1)

=99and@OrderNo<

999Then

‘000’+Convert(char,@OrderNo+1)

=999and@OrderNo<

9999Then

‘00’+Convert(char,@OrderNo+1)

=9999and@OrderNo<

99999Then

‘0’+Convert(char,@OrderNo+1)

=99999ThenConvert(char,@OrderNo+1)

END

RETURN

当购物者确认定单时,应该出现下面的步骤:

(1)用上面的过程产生定单号。

(2)定单号,当前日期,购物车ID,和购物者ID应该加到Orders表中。

(3)定单号,玩具ID,和数量应加到OrderDetail表中。

(4)在OrderDetail表中更新玩具成本。

Toycost=Quantity*ToyRate).

将上述步骤定义为一个事务。

编写一个过程以购物车ID和购物者ID为参数,实现这个事务。

2.编写一个程序显示每天的定单状态。

如果当天的定单值总合大于170,则显示“Highsales”,否则显示”Lowsales”.报告中要求列出日期、定单状态和定单总价值。

二、实验目的

熟悉SQL语言,加深对数据库知识的认识。

学会用SQL语言解决实际数据库问题。

三、实验源代码

实验一、

-3.

/*sp_helpconstraint@objname=Category

go

sp_helpconstraint@objname=Country

sp_helpconstraint@objname=OrderDetail

sp_helpconstraint@objname=PickOfMonth

sp_helpconstraint@objname=Category

sp_helpconstraint@objname=Recipient

sp_helpconstraint@objname=Shipment

sp_helpconstraint@objname=ShippingMode

sp_helpconstraint@objname=ShippingRate

sp_helpconstraint@objname=Shopper

sp_helpconstraint@objname=ShoppingCart

sp_helpconstraint@objname=ToyBrand

sp_helpconstraint@objname=Toys

sp_helpconstraint@objname=Wrapper;

*/

--4.

createtypexiankefromchar(3)

altertableRecipient

altercolumncCountryIdkk

altertableCountry

5.

USEGlobalToyz

GO

CREATETABLEPremiumToys

cToyIdchar(6)primarykey,

vToyNamevarchar(20)notnull,

vToyDescriptionvarchar(250),

cCategoryIdchar(3),

mToyRatemoneynotnull,

cBrandIdchar(3),

imPhotoimage,

siToyQohsmallintnotnull,

siLowerAgesmallintnotnull,

siUpperAgesmallintnotnull,

siToyWeightsmallint,

vToyImgPathvarchar(50)null

INSERTINTOPremiumToys

SELECT*FROMToys

WHEREmToyRate>

20

6.7.

ALTERTableToys

ADDsiToyQohsmallintCHECK(siToyQoh>

=0ANDsiToyQoh<

=200),

ALTERTABLEToys

ADDsiLowerAgesmallintCHECK(siLowerAge=’1’),

ADDmToyRateCHECK(mToyRate>

0)

ADDsiToyWeightCHECK(siToyWeigh=’1’)

cToyIdchar(6)primarykey,

vToyNamevarchar(20)notnull,

cCategoryIdchar(3),

mToyRatemoneynotnull(mToyRate>

0),

8.updateToys

SetmToyRate=mToyRate+1

WherecToyId=’000001’

实验二

1.SELECTvFirstName

vLastName

vEmailId

FROMGlobalToyz.dbo.Shopper

WHEREcState='

California'

ORcState='

Illinois'

2.SELECTcOrderNo

cShopperId

mTotalCost

FROMGlobalToyz.dbo.Orders

ORDERBYmTotalCostASC

3.SELECT*

FROMGlobalToyz.dbo.OrderDetail

WHEREvMessageISNULL

4.SELECTtop5

cToyId

siMonth

iYear

iTotalSold

FROMGlobalToyz.dbo.PickOfMonth

WHEREiYear=2000

ORDERBYiTotalSoldDESC

5.SELECTtop5

6.SELECTcOrderNo

mToyCost

WHEREmToyCost>

50

7.SELECTvToyName

ToyBrand.cBrandId

ToyBrand.cBrandName

Category.cCategoryId

Category.cCategory

Category.vDescription

FROMGlobalToyz.dbo.Toys,GlobalToyz.dbo.ToyBrand,GlobalToyz.dbo.Category

WHEREtoys.cBrandId=ToyBrand.cBrandId

ANDtoys.cCategoryId=Category.cCategoryId

8.SELECTvToyName

9.SELECTvToyName

ShoppingCart.cCartId

FROMGlobalToyz.dbo.Toys,GlobalToyz.dbo.ShoppingCart

WHEREToys.cToyId=ShoppingCart.cToyId

10.SELECTFLOOR(AVG(mToyRate))

FROMGlobalToyz.dbo.Toys

11.SELECTFLOOR(AVG(mToyRate))

12.SELECTShopper.vFirstName

Shopper.vLastName

Shopper.vAddress

Shopper.cCity

Recipient.vFirstName

Recipient.vLastName

Recipient.vAddress

Recipient.cCity

FROMGlobalToyz.dbo.Shopper,GlobalToyz.dbo.Recipient

13.SELECTvToyName

WHEREcToyIdIN

SELECTcToyId

WHEREcWrapperIdISNULL

14.SELECTcOrderNo

dOrderDate

WHEREcOrderNoIN

SELECTcOrderNo

FROMGlobalToyz.dbo.Shipment

WHEREcDeliveryStatus='

d'

实验三

1.CREATEVIEWIS_CHAXUN

AS

SELECTShopper.vFirstName,Shopper.vLastName,Shopper.cCity,Toys.vToyName,Toys.mToyRate,OrderDetail.siQty

FROMShopper,Orders,OrderDetail,Toys

WHEREOrders.cOrderNo=OrderDetail.cOrderNoANDShopper.cShopperId=Orders.cShopperIdANDOrderDetail.cToyId=Toys.cToyId;

2.SELECTvFirstName,vLastName,vToyName,siQty

FROMIS_CHAXUN

WHEREcCity='

;

3.UPDATEvwOrderWrapper

SETsiQty=2,mWrapperRate=mWrapperRate+1

FROMvwOrderWrapper

WHEREcOrderNo=‘000001’

4.CreateTriggertruOD

ONOrderDetail

FORUPDATE

IFUPDATE(siQty)

BEGIN

DECLARE@siQtyint

SELECT@siQty=deleted.siQty

FROMdeleted

UPDATEOrderDetail

SETmToyCost=mToyCost/@siQty*siQty

WHEREcOrderNoIN

(SELECTcOrderNo

FROMdeleted)

END

实验四

1.SELECTcOrderNo

2.CREATEPROCEDUREprcCharges

@cOrderNoint,@mShippingChargesmoneyOUTPUT,@mGiftWrapChargesmoneyOUTPUT

BEGIN

SELECT@cOrderNo=cOrderNo,@mShippingCharges=mShippingCharges,@mGiftWrapCharges=mGiftWrapCharges

FROMOrders

WHEREcOrderNo=@cOrderNo

3.CREATEPROCEDUREprcHandlingCharges@cOrderNoint

DECLARE@mSchargesmoney

DECLARE@mGWchargesmoney

EXECprcCharges@cOrderNo,

@mSchargesoutput,@mGWchargesoutput

RETURN@mScharges+@mGWcharges

实验五

1.CREATEPROCEDUREtianjia@cCartIdchar(6),@cShopperIdchar(6),@cToyIdchar(6),@siQtysmallint

BEGINTRANSACTION

DECLARE@datedatetime;

DECLARE@mToyRatemoney

DECLARE@cOrderNochar(6)

SELECT@date=GETDATE();

EXEC@cOrderNo=prcGenOrder

INSERT

INTOOrders

VALUES(@cOrderNo,@date,@cCartId,@cShopperId,null,null,null,null,null,null);

INSERT

INTOOrderDetail

VALUES(@cOrderNo,@cToyId,@siQty,null,null,null,null)

SELECT@mToyRate=mToyRate

FROMToys

WHEREcToyId=@cToyId

UPDATEOrderDetail

SETmToyCost=siQty*@mToyRate

COMMITTRANSACTION

2.CREATEPROCEDURErepor

DECLARE@totalcostmoney;

SELECT@totalcost=SUM(mTotalCost)

WHEREdOrderDate=@date

IF(@totalcost>

170)

PRINT'

HighSales'

ELSE

LowSales'

四、调用示例

五、实验心得

通过这几次实验,我加深对数据库SQL语言的理解和认识,并学会了用它解决一些简单的实际问题。

我加深了SQL语言的理解。

丰富了我的关于数据库领域的视野。

在实验中,由于自己的基础知识不牢固,遇到了很多的问题,我也认识到了课本中理论的重要性。

在实验之前一定要吃透课本。

只有把课本的基础知识掌握牢固了才能进一步地做好实际操作。

并在实验中发现问题,自己看书,自己解决问题。

实验的收获也是可观的。

不但培养了我的动手操作能力,知识运用能力,独立思考能力,而且让我学会了如何在做计算机方面的实验时,应该注意的一些东西。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1