一、实验目的:
- 掌握视图的创建语法
- 使用视图更新数据
- 掌握数据操纵语句(insert delete update)
- 掌握使用TOP关键字
- 使用各种函数(字符串、时间日期。)
二、实验内容:
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) 执行结果
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) 执行结果