《数据库系统实验报告概述》旨在通过一系列实践操作详细介绍数据库设计、创建及优化的方法与技巧,帮助学生深入理解数据库原理并掌握实际应用技能。
实验一:创建表、更新表及实施数据完整性
1. 运行给定的SQL脚本以建立名为GlobalToyz的数据库。
2. 绘制所有已建表之间的关系图。
3. 列出每个表格中出现的所有约束,包括主键(Primary key)、外键(Foreign key)、检查约束(check constraint)、默认值(default)及唯一性约束(unique)。
4. 在Recipient和Country两个表中的cCountryId属性上定义一个用户自定义数据类型,并将这两个属性的类型设置为该自定义的数据类型。
5. 将所有价格超过$20的玩具材料复制到名为PremiumToys的新表格中去。
6. 对于Toys表,实施以下数据完整性规则:
- 玩具的数量应在0至200之间;
- 默认设定玩具适用的最小年龄为1岁。
7. 在不修改已创建的Toys表的前提下通过定义规则来实现下面的数据完整性要求:
- 所有玩具的价格必须大于零。
- 如果未指定,所有玩具默认重量设为1单位。
8. 将ID号是‘000001’的那件玩具价格增加$1。
实验二:查询数据库
1. 显示属于California和Illinois州的所有客户的姓名、电子邮件地址及联系信息。
2. 列出订单号码,商店标识符以及每个订单的价值,并按价值升序排列结果集。
3. 展示orderDetail表中vMessage字段为空值的行记录。
4. 查询所有名称包含“Racer”的玩具材料列表。
5. 根据2000年的销售数据列出最受欢迎(月度最佳)前五名产品的ID号。
6. 从OrderDetail表格里提取出总价值超过¥50元的所有订单的信息,包括订单号码和总价金额。
7. 制作一个包含所有运输信息的报告:订单编号、发货日期、实际送达时间以及货物在途天数(提示:在途天数=实际到达日-发运日)。
8. 显示玩具名称及其所属品牌与类别信息。
9. 展示每个购物车中所含有的玩具ID,如果该商品未出现在任何购物车内,则显示NULL值作为标识符。
10. 以缩写形式列出所有顾客的名字和姓氏(例如Angela Smith的简称是A.S)。
11. 计算并展示每种玩具的平均价格,并将其结果四舍五入至最接近整数单位。
12. 展示购买者与收货人的姓名、地址及所在城市的详细信息。
13. 使用子查询找出没有包装的所有玩具名称列表。
14. 利用子查询显示已发货订单的信息,包括订单号和下单时间。
实验三:视图与触发器
1. 创建一个包含买家名字、州名以及所购商品详情(如价格数量)的视图。
2. 定义当在OrderDetail表中插入新记录时自动更新相应玩具成本值的触发器。计算公式为:玩具成本=数量*单价。
实验四:事务处理及存储过程编写
1. 设计一个可以生成订单号、添加到Orders和OrderDetails两个表格中的过程,该过程中定义了一个包含多个操作步骤的整体事务。
2. 编写用于每日展示销售状态的程序。依据当天销售额是否超过阈值(如¥170)显示不同的信息:高销量或低销量,并列出日期、订单总额等关键指标作为报告内容。