数据库实验:数据更新和视图

一、实验目的

  1. 掌握视图的创建语法
  2. 使用视图更新数据
  3. 掌握数据操纵语句(insert delete update)
  4. 掌握使用TOP关键字
  5. 使用各种函数(字符串、时间日期。)

二、实验内容

1. 创建一个视图,包含Toys表中的品牌id为’001’的玩具信息,要求限制用户对该视图的更新只能是该品牌的玩具。


2. 对上述视图进行插入操作,新增一个品牌为’002’的玩具,插入的内容请按照数据类型给出合理的值。观察结果并说明原因。

1) sql语句

2) 执行结果

3)    原因

       要插入的视图在定义时使用了WITH CHECK OPTION语句,因此在对该视图的插入操作中自动加上了定义时的条件:cBrandId=’001’。而题目要求插入cBrandId=’002’的信息,与该视图定义时的条件冲突,因此拒绝了插入。


3. 对于GlobalToyz数据库,创建一个视图名为vwOrderdetailToys,其中包含了订单的代码,订购的玩具编号,订购的玩具名称,订购的附言,玩具的花费信息。


4. 对于第3题中创建的视图vwOrderdetailToys进行更新,修改订单代码为‘000001的订单,更改cToyId为000007的玩具名称,改为Lego Spider,并修改对应的附言内容为 Happiness。写出完成该操作的所有语句。

1) sql语句

2) 执行结果


5. 定义一个视图,里面包含总花费超过80元的订单信息,要求对该视图的更新操作只能是周三下午14点至16点之间。


 6. 使用insert into 语句对Country表添加新的一行(’050’,’Vietnam’)

1) sql语句

2) 执行结果


7. 使用insert into 语句将如下的查询信息插入到一个新表中,该表中包括玩具花费超过40的订单号和玩具总花费信息。

1) sql语句

2)执行结果


8. 使用delete语句删除国家表中国家代码为‘001‘的国家记录,观察执行的结果,说明产生结果的原因。

1) sql语句

2) 执行结果

3) 原因

        Country表中的cCountryId作为ShippingRate表中的外键,即将两表建立了链接,Country表为主键表,ShippingRate表为外键表。如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。FK约束防止了这种情况的发生。


9. 修改Toybrand表和Toys表外键列的参照方式,将‘删除‘的参照方式改为’置空’。


10. 修改Toys表中的记录,将品牌为‘Largo‘的玩具单价提高5%。


11. 显示玩具的适用年龄在4岁到8岁之间的所有玩具的名称和描述,要求只显示玩具描述的前25个字符。(两种函数实现)

1) 方法1

2) 方法2

3) 执行结果


12. 对于Toys表的所有玩具,将名称和价格结合在一起按要求的格式输出,例如对ID为000001的玩具,打印输出的是‘The price of Robby the Whale is 8.99$’。请按该格式输出所有玩具的名称和价格。

1) sql语句

2)执行结果

(ps:因为前面的题有修改过Toys表,所以玩具的名字都变了,查询结果和题目不一样)


13. 将Shopper表的订购者姓和名结合在一起显示,在姓和名显示的时候在中间加上一个空格。如‘Angela Smith’。

1) sql语句

2)  执行结果


14. 显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。

1) sql语句

2) 执行结果


15. 现需要查看Shopper表的订购者所使用的电子邮件服务商列表。对于每个订购者,只需要显示电子邮件服务商地址,不需要显示用户名。例如‘angelas@qmail.com’,只需要显示‘@qmail.com’。对于查询结果中重复出现的电子邮件服务商地址,只需要显示一次。

1) sql语句

2) 执行结果


16. 对于每份订单,请输出下列信息,包括订单号,订单日期,以及订购日期所在的星期几。

1) sql语句

2) 执行结果


17. 对于每份订单要求输出的是订单号,订单日期的月份和日子。例如,订单号为‘000001’的订单的输出结果为‘000001号订单的日期是5月20日’。

1) sql语句

2) 执行结果


 18. 对于装运表Shipment,请根据每份订单输出实际投递时间(dActualDeliveryDate)和装运时间(dShipmentDate)之间相隔的天数。

1)sql语句

2)执行结果


19. 假设规则为订单的过期时间为下订单后的24小时后,请输出每份订单的订单号,下订单的日期,以及假定的订单过期时间。

1)sql语句

2) 执行结果


 20. 对于装运表Shipment,按该格式输出每份订单的装运日期。如订单号为‘000001’的输出结果为‘The Shipment date of Order No. 000001 is 2001.05.23’。

1)sql语句

2) 执行结果


21. 输出Shopper表的‘Texas’州的前10%的订购者的详细信息。

1)sql语句

2) 执行结果


 22. 查询输出Shopper表中姓和名的长度加起来最长的订购者的姓名。

1)sql语句

2) 执行结果

  • 32
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值