TSQL部分.docx
- 文档编号:23493395
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:13
- 大小:3.41MB
TSQL部分.docx
《TSQL部分.docx》由会员分享,可在线阅读,更多相关《TSQL部分.docx(13页珍藏版)》请在冰豆网上搜索。
TSQL部分
TSQL视图、存储过程、触发器部分:
视图部分:
1./*创建顾客购买化妆品的视图*/
createview购物车
as
select化妆品.Cname化妆品名称,化妆品.Cprice建议零售价,销售单.Snum购买数量,销售单.Sday购买时间
from化妆品,销售单
where化妆品.Cno=销售单.Cno;
/*验证该视图*/
select*
from购物车;
dropview购物车;
、
2./*查看所有顾客的购物车里的商品信息*/
createview查看所有顾客购物车
as
select化妆品.Cname化妆品名称,化妆品.Cprice建议零售价,销售单.Snum购买数量,销售单.Sday购买时间,顾客.Customername顾客姓名
from化妆品,销售单,顾客
where化妆品.Cno=销售单.Cnoand化妆品.Cno=顾客.Cno;
/*验证该视图*/
select*
from查看所有顾客购物车;
dropview查看所有顾客购物车;
3./*创建顾客购买商品后,会员折扣单视图*/
createview会员至尊
as
select化妆品.Cname化妆品名称,化妆品.Cprice建议零售价,销售单.Snum购买数量,顾客.Customername顾客姓名,会员.Mrank会员等级,销售单.Sprize会员特价
from查看所有顾客购物车,会员,销售单,化妆品,顾客
where查看所有顾客购物车.顾客姓名=会员.Mnameand化妆品.Cno=销售单.Cnoand会员.Mname=顾客.Customernameand销售单.Cno=顾客.Cnoand会员.Mrank='vip至尊'
select*
from会员至尊;
dropview会员至尊;
存储过程部分:
1./*查询指定品牌化妆品的详细信息*/
createprocedureSelect_brand
@cbrandvarchar(20)
as
select*
from化妆品
where化妆品.Cbrand=@cbrand;
execSelect_brand'雅诗兰黛';
2./*对指定品牌的制定化妆品更新其建议零售价*/
createprocedureUpdate_price
@cnamevarchar(30),
@cbrandvarchar(20),
@cpricefloat
as
update化妆品
setCprice=@cprice
where化妆品.Cname=@cname
execUpdate_price'兰蔻(Lancome)精华肌底液','兰蔻',999
3./*新增一种品牌为雅诗兰黛的化妆品*/
createprocedureInsert_huazhuanggpin
@CnoVarchar(18),
@CnameVarchar(30),
@CbrandVarchar(20),
@CeffectVarchar(50),
@CspecificationVarchar(10),
@CshelflifeSmallint,
@CpriceFloat(10)
as
insert
into化妆品
values(@Cno,@Cname,@Cbrand,@Ceffect,@Cspecification,@Cshelflife,@Cprice)
execInsert_huazhuanggpin'021','雅诗兰黛青春抗皱','雅诗兰黛','保湿,滋润,抗皱','30ml',1,788
4./*删除品牌为雅诗兰黛、指定商品编号的一种化妆品*/
createprocedureDelete_huazhuanggpin
@CnoVarchar(18),
@CbrandVarchar(20)
as
delete
from化妆品
where化妆品.Cno=@Cnoand化妆品.Cbrand=@Cbrand
execDelete_huazhuanggpin'021','雅诗兰黛'
触发器部分:
1./*实时更新货架上化妆品的数量
每当货架上化妆品的数量<2件时,就自动往相应货架补货件化妆品*/
createtriggerhuojia_increasing_num
on货架forinsert,update
as
declare
@Dnumberint,
@Dnovarchar(10)
select@Dno=货架.Dno,@Dnumber=货架.Dnumber
frominserted,货架
whereinserted.Dno=货架.Dno
update货架
setDnumber=Dnumber+3
whereDnoin
(selectDno
from货架
whereDnumber<2)
2./*修改货架,002,003上商品的数量对以上触发器进行验证*/
update货架
set货架.Dnumber=1
whereDno='001'orDno='002'orDno='003';
2./*当销售出某种化妆品时实时更新相应货架上化妆品的数量*/
createtriggerUpdate_huazhaungpin
on销售单
forinsert,update
as
declare
@num1int,
@num2int,
@cno1varchar(18),
@cno2varchar(18)
select@num1=inserted.Snum,@cno1=inserted.Cno
frominserted
select@num2=货架.Dnumber,@cno2=货架.Cno
from货架
if(@num1-@num2)<=0
update货架
setDnumber=@num2-@num1
where货架.Cno=@cno1
else
update货架
setDnumber=0
where货架.Cno=@cno1
update货架缺货单
setBnum=@num1-@num2
where货架缺货单.Cno=@cno1
/*更新销售单进行验证*/
update销售单
setSnum=6
whereCno='007'
3./销售商品时实时更新,货架商品数量信息,并判断是否货架是否缺货,若现有货架商品数量小于顾客购买订单,自动生成商品缺货数量*/
createtriggerdingdan_huajia
on销售单
forinsert,update
as
declare
@num1int,
@num2int,
@num3int,
@cno1varchar(18)
select@num1=Snum,@cno1=Cno
frominserted
select@num2=货架.Dnumber,@cno1=货架.Cno
from货架
if(@num1-@num2)<=0
update货架
setDnumber=@num2-@num1
where货架.Cno=@cno1
else
update货架
setDnumber=0
where货架.Cno=@cno1
update货架缺货单
setBnum=@num1-@num2
where货架缺货单.Cno=@cno1
update销售单
setSnum=5
whereCno='004'
游标结合存储过程:
1./当商品出库时,利用触发器结合存储过程实时更新库存商品数量信息*/
createtriggerUpdate_kucun
on出库单afterinsert,update
as
declare
@Onovarchar(10),
@Onumint,
@Odatedate,
@Cnovarchar(18),
@Wnovarchar(10)
declarec1cursorforselectOno,Onum,Odate,Cno,Wno
frominserted
openc1
fetchnextfromc1into@Ono,@Onum,@Odate,@Cno,@Wno
while(@@FETCH_STATUS=0)
begin
select@Ono=Ono,@Onum=Onum,@Odate=Odate,@Cno=Cno,@Wno=Wno
frominserted
update库存信息
set库存信息.Anum=库存信息.Anum-@Onum
where库存信息.Cno=@Cno
fetchnextfromc1into@Ono,@Onum,@Odate,@Cno,@Wno
end
closec1
deallocatec1
update出库单
setOnum=Onum-2
whereCno='001'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TSQL 部分