大学数据库实验指导:创建与操作表

需积分: 10 5 下载量 156 浏览量 更新于2024-10-31 收藏 72KB DOC 举报
"该资源是一份大学数据库实验的答案,针对大三计算机专业学生,提供了创建表、数据插入等操作的示例,对于理解和实践数据库管理系统的操作有很好的参考价值。" 在数据库管理中,实验一涉及到创建多个表,包括客户(Customers)、产品(Products)、订购单(Orders)和订单名细(OrderDetails)。这些表的设计是数据库模型的基础,用于存储相关业务数据。 1. 客户表(Customers): - 客户号(CustomerID):主键,使用`char(8)`类型,且必须以字母开头(由`check`约束实现),确保唯一性。 - 客户名称(CustomerName):非空的`varchar(40)`类型,用于存储客户名称。 - 联系人(Contact):`char(8)`类型,可能存储联系人的姓名。 - 地址(Address):`varchar(40)`类型,用于记录客户地址。 - 邮政编码(PostalCode):`char(6)`类型,`check`约束确保其为6位数字。 - 电话(Phone):`char(12)`类型,`check`约束确保以数字开头。 2. 产品表(Products): - 产品号(ProductID):主键,使用`char(8)`类型,且必须以大写字母开头(由`check`约束实现),确保唯一性。 - 产品名称(ProductName):非空的`varchar(40)`类型,用于存储产品名称。 - 规格说明(Specification):`varchar(40)`类型,提供产品的规格信息,且具有唯一性(由`unique`约束保证)。 - 单价(Price):`smallmoney`类型,`check`约束确保其为正数,表示产品的价格。 3. 订购单表(Orders): - 客户号(CustomerID):非空的`char(8)`类型,作为外键引用客户表,表示订单所属客户。 - 订单号(OrderID):主键,`char(8)`类型,用于标识订单。 - 订购日期(OrderDate):默认当前日期(由`datetime default getdate()`定义)。 - 完成日期(CompletionDate):可为空的`datetime`类型,表示订单完成时间。 4. 订单名细表(OrderDetails): - 订单号(OrderID):作为外键引用订购单表,标识订单名细所属的订单。 - 序号(SequenceNumber):`tinyint`类型,用于区分同一订单中的不同产品项。 - 产品号(ProductID):非空的`char(8)`类型,作为外键引用产品表,表示订单名细中的产品。 - 数量(Quantity):`smallint`类型,`check`约束确保其大于0且小于等于1000。 此外,还执行了以下数据库操作: - 使用`alter table`语句添加了完成日期字段到订购单表,并对订单名细表的`数量`字段添加了`num`检查约束,确保数量在0到1000之间。 - 创建了三个索引:`cusidx`对客户表的客户名称进行索引,`preidx`对产品表的产品名称创建唯一索引,`ddxunumidx`对订单名细表的订单号、序号和数量降序排列创建索引,以优化查询性能。 最后,通过`insert into`语句向客户表中插入了四条数据,展示了如何向数据库中插入记录。这些操作是数据库管理系统的基础操作,对于学习和理解数据库设计与管理至关重要。通过这样的实验,学生可以更好地掌握SQL语言和数据库管理的核心概念。