【数据库原理】实验报告-实验8 T_SQL编程

实验
目的

要求

1、 掌握 T_SQL 编程基础
2、 掌握 T_SQL 流程控制语句
2、熟练运用 T_SQL 的条件语句,WHILE 语句等求解实际问题。

实验
环境

SQL Server 2014

实验内容或
实验题目

以电子商务系统数据库 ecommerce 为例
1、在 ecommerce 数据库,针对会员表 member 首先创建一个“呼和浩特地区”会员的视图 view_hohhot,然后通过该视图查询来自“呼和浩特”地区的会员信息,用批处理命令语句将问题进行分割,并分别以注释进行语句作用的说明描述
2、创建一个保存类别编号值的局部变量,并以 set 语句进行赋值,然后在 product 表中查询产品类别编号为局部变量值的产品名称 proname、单价 price、成本价 cost、库存量 stock。
3、查询供应商表 supplier,如果存在供应商编号 14001 的记录,则显示“编号为 14001 的供应商记录已经存在”的消息,并输出此供应商的详细信息;否则插入一条供应商记录(14001,‘京顺通讯有限公司’,‘刘燕’,‘北京市朝阳区’,‘1111111’)
4、查询商品表 product 的商品编号、商品名称、单价、库存量、商品类别名称信息,其中商品类别使用 CASE 语句,当类别编号为 101 时,则类别名称为手机;当类别编号为 201 时,则类别名称为激光打印机;当类别编号为 202 时,则类别名称为喷墨打印机,当类别编号为 301 时,则类别名称为平板电脑 ∙∙∙∙∙∙(具体参照商品表)
5、在 product 表中,对产品编号为 10102 的商品单价进行加价,每次加价 50,加大单价等于或高于 3000 即可,并统计加价的次数,打印输出产品名称、新单价和加价次数
6、自行设计一个多条件查询问题,并使用 CASE 语句去解决,要求 CASE 后面没有任何参数表达式,在 WHEN 子句后接有比较表达式,更加比较表达式的值,执行相对应的 THEN 后面的语句

 












 

步骤如下:
1、 在 ecommerce 数据库,针对会员表 member 首先创建一个“呼和浩特地区”会员的视图 view_hohhot,然后通过该视图查询来自“呼和浩特”地区的会员信息,用批处理命令语句将问题进行分割,并分别以注释进行语句作用的说明描述
--首先,创建一个视图 view_hohhot,用于展示呼和浩特地区的会员信息
CREATE VIEW view_hohhotAS
SELECT * FROM member
--通过 % % 来匹配地址中包含呼和浩特的用户
WHERE address LIKE '% 呼和浩特 %';

--然后,通过该视图查询来自“呼和浩特”地区的所有会员信息
SELECT * FROM view_hohhot;


 



2、 创建一个保存类别编号值的局部变量,并以 set 语句进行赋值,然后在 product 表中查询产品类别编号为局部变量值的产品名称 proname、单价 price、成本价 cost、库存量 stock。
--定义一个局部变量 @categoryNo 并赋值
DECLARE @categoryNoINT;
--假设为 101
SET @categoryNo= 101;

SELECT proname, price, cost, stock
FROM product
WHERE catno= @categoryNo;



3、 查询供应商表 supplier,如果存在供应商编号 14001 的记录,则显示“编号为 14001 的供应商记录已经存在”的消息,并输出此供应商的详细信息;否则插入一条供应商记录(14001,‘京顺通讯有限公司’,‘刘燕’,‘北京市朝阳区’,‘1111111’)
IF EXISTS (SELECT * FROM supplierWHERE supno= 14001)
BEGIN
PRINT '编号为 14001 的供应商记录已经存在';
SELECT * FROM supplierWHERE supno= 14001;
END
ELSE
BEGIN
INSERT INTO supplier (supno, supname, contactname, address, telephone)
VALUES(14001, '京顺通讯有限公司', '刘燕', '北京市朝阳区', '1111111');
END

 



4、 查询商品表 product 的商品编号、商品名称、单价、库存量、商品类别名称信息,其中商品类别使用 CASE 语句,当类别编号为 101 时,则类别名称为手机;当类别编号为 201 时,则类别名称为激光打印机;当类别编号为 202 时,则类别名称为喷墨打印机,当类别编号为 301 时,则类别名称为平板电脑 ∙∙∙∙∙∙(具体参照商品表)
SELECT prono, proname, price, stock,
CASE
WHEN catno= 101THEN '手机'
WHEN catno= 201THEN '激光打印机'
WHEN catno= 202THEN '喷墨打印机'
WHEN catno= 301THEN '平板电脑'
WHEN catno= 302THEN '笔记本电脑'
WHEN catno= 303THEN '台式电脑'
WHEN catno= 401THEN '女士手提包'
WHEN catno= 402THEN '双肩背包'
WHEN catno= 501THEN '照相机'
WHEN catno= 502THEN '摄像机'
WHEN catno= 503THEN '投影仪'
WHEN catno= 601THEN '激光电视'
WHEN catno= 602THEN '平板电视'
WHEN catno= 603THEN '厨房冰箱'
WHEN catno= 604THEN '冷柜'
WHEN catno= 701THEN '考勤机'
WHEN catno= 801THEN '座椅套'
END AS CategoryName
FROM product;


5、 在 product 表中,对产品编号为 10102 的商品单价进行加价,每次加价 50,加大单价等于或高于 3000 即可,并统计加价的次数,打印输出产品名称、新单价和加价次数
DECLARE @counterINT = 0;
DECLARE @newPriceFLOAT;
DECLARE @pronamenvarchar(255);
SET @newPrice= (SELECT priceFROM productWHERE prono= 10102);
SET @proname= (SELECT pronameFROM productWHERE prono= 10102);
--加价到 3000 时停止
WHILE @newPrice<= 3000
BEGIN
SET @newPrice= @newPrice+ 50;
SET @counter= @counter+ 1;
END
PRINT '产品名称: ' + @proname
+ ',新单价: ' + CONVERT(NVARCHAR(20), @newPrice)
+ ',加价次数: ' + CONVERT(NVARCHAR(10), @counter);



6、 自行设计一个多条件查询问题,并使用 CASE 语句去解决,要求 CASE 后面没有任何参数表达式,在 WHEN 子句后接有比较表达式,更加比较表达式的值,执行相对应的 THEN 后面的语句
SELECT prono,
--计算每个商品的利润
(price- cost) AS profit,
CASE
WHEN(price- cost) < 10AND cost<= 50THEN '低利润且成本低,可作为活动促销商品,吸引顾客'
WHEN(price- cost) BETWEEN 10AND 30AND costBETWEEN 50AND 100THEN '成本稍高,利润尚可,可以适当减低价格,吸引优质顾客'
ELSE '不建议进行引流商品'
END AS MarketingAdvice
FROM product;

组内
分工

可选











实验运行结果或者是验证性的结果:
1.成功创建了“呼和浩特地区”会员的视图 view_hohhot,并通过该视图查询出了来自“呼和浩特”地区的会员信息。
2.成功创建了保存类别编号值的局部变量,并查询出了类别编号为局部变量值的产品名称、单价、成本价和库存量。
3.成功查询了供应商表 supplier,检测到编号为 14001 的供应商记录已经存在,并显示了此供应商的详细信息;若不存在,则插入了供应商记录(14001,‘京顺通讯有限公司’,‘刘燕’,‘北京市朝阳区’,‘1111111’)。
4 成功查询了商品表 product 的商品编号、商品名称、单价、库存量和商品类别名称信息,并使用 CASE 语句为不同类别编号的商品添加了类别名称。
5 成功对产品编号为 10102 的商品单价进行了加价操作,每次加价 50,直到单价等于或高于 3000,并统计了加价次数,打印输出了产品名称、新单价和加价次数。
6 成功设计了一个多条件查询问题,并使用 CASE 语句解决,依据不同的利润和成本条件为商品提供了营销建议。








分析结果以及在试验中应注意的问题:
1.在执行插入、更新、删除操作时,需确保不会破坏数据库的参照完整性,如删除记录前检查是否有其他表引用该记录。每完成一步操作后,应进行验证,比如通过查询确认数据是否正确插入、更新或删除,确保结果符合预期。
2.创建视图时,需要确保视图的定义符合预期的数据选择条件,并在实际查询中验证视图的正确性。
3.在使用局部变量进行查询时,要确保变量的赋值正确,并验证查询结果是否符合预期。
4.使用 CASE 语句时,要确保所有可能的条件都被正确处理,防止遗漏。

 

  • 25
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

司徒阿宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值