步骤如下: 1、 在 ecommerce 数据库,针对会员表 member 首先创建一个“呼和浩特地区”会员的视图 view_hohhot,然后通过该视图查询来自“呼和浩特”地区的会员信息,用批处理命令语句将问题进行分割,并分别以注释进行语句作用的说明描述 --首先,创建一个视图 view_hohhot,用于展示呼和浩特地区的会员信息 CREATE VIEW view_hohhotAS SELECT * FROM member --通过 % % 来匹配地址中包含呼和浩特的用户 WHERE address LIKE '% 呼和浩特 %';
--然后,通过该视图查询来自“呼和浩特”地区的所有会员信息 SELECT * FROM view_hohhot; ![](https://img-blog.csdnimg.cn/img_convert/3a9dcbeb94b93dcc1a630a5b4befc23d.png) ![](https://img-blog.csdnimg.cn/img_convert/476efb9da4837305216d118fbf9d1252.png)
2、 创建一个保存类别编号值的局部变量,并以 set 语句进行赋值,然后在 product 表中查询产品类别编号为局部变量值的产品名称 proname、单价 price、成本价 cost、库存量 stock。 --定义一个局部变量 @categoryNo 并赋值 DECLARE @categoryNoINT; --假设为 101 SET @categoryNo= 101;
SELECT proname, price, cost, stock FROM product WHERE catno= @categoryNo; ![](https://img-blog.csdnimg.cn/img_convert/cc4ef38e70fab952fae0395506eed13c.png)
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 ![](https://img-blog.csdnimg.cn/img_convert/3e6feb37ac3793158dec58df2724b802.png) ![](https://img-blog.csdnimg.cn/img_convert/d127f196935d7b1e5818e9d213c6a286.png)
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; ![](https://img-blog.csdnimg.cn/img_convert/e4377ba3c688c3433ba330b115999009.png) 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); ![](https://img-blog.csdnimg.cn/img_convert/62394263d7a8554f51763451f446d7ab.png)
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; ![](https://img-blog.csdnimg.cn/img_convert/ee18e1a484b5ed38efb62b53b8ad2da8.png) |