学习 SQL 所用到的样例表脚本

本文提供了一个假想的玩具经销商使用的订单录入系统数据库表的组成部分。这些表用来完成以下几项任务:

  • 管理供应商;
  • 管理产品目录;
  • 管理顾客列表;
  • 录入顾客订单。

完成它们需要 5 个表(它们作为一个关系数据库设计的组成部分紧密关联)。以下各节给出每个表的描述。

一、表的描述

下面介绍 5 个表及每个表内的列名。

1.1 Vendors 表

Vendors 表存储销售产品的供应商。每个供应商在这个表中有一个记录,供应商 ID 列(vend_id)用于进行产品与供应商的匹配。

说明
vend_id唯一的供应商 ID
vend_name供应商名
vend_address供应商的地址
vend_city供应商所在城市
vend_state供应商所在州
vend_zip供应商地址邮政编码
vend_country供应商所在国家

1.2 Products 表

Products 表包含产品目录,每行一个产品。每个产品有唯一的 ID(prod_id 列),并且借助 vend_id(供应商的唯一 ID)与供应商相关联。

说明
prod_id唯一的产品 ID
vend_id产品供应商 ID(关联到 Vendors 表的 vend_id)
prod_name产品名
prod_price产品价格
prod_desc产品描述

1.3 Customers 表

Customers 表存储所有顾客信息。每个顾客有唯一的 ID(cust_id 列)。

说明
cust_id唯一的顾客 ID
cust_name顾客名
cust_address顾客的地址
cust_city顾客所在城市
cust_state顾客所在州
cust_zip顾客地址邮政编码
cust_country顾客所在国家
cust_contact顾客的联系名
cust_email顾客的电子邮件地址

1.4 Orders 表

Orders 表存储顾客订单(不是订单细节)。每个订单唯一编号(order_num 列)。

Orders 表按 cust_id 列(关联到 Customers 表的顾客唯一 ID)关联到相应的顾客。

说明
order_num唯一的订单号
order_date订单日期
cust_id订单顾客 ID(关联到 Customers 表的 cust_id)

1.5 OrderItems 表

OrderItems 表存储每个订单中的实际物品,每个订单的每个物品一行。

对于 Orders 表的每一行,在 OrderItems 表中有一行或多行。

每个订单物品由订单号加订单物品(第一个物品、第二个物品等)唯一标识。

订单物品用 order_num 列(关联到 Orders 表中订单的唯一 ID)与其相应的订单相关联。

此外,每个订单物品包含该物品的产品 ID(把物品关联到 Products 表)。

说明
order_num订单号(关联到 Orders 表的 order_num)
order_item订单物品号(订单内的顺序)
prod_id产品 ID(关联到 Products 表的 prod_id)
quantity物品数量
item_price物品价格

二、表关系图

数据库管理员通常使用关系图来说明数据库表的关联方式。要记住,正如上面表描述提到的,外键定义了这些关系。下图是本文描述的五个表的关系图。

表关系图

表关系图

三、获得样例表

所需要获得和运行的东西都可以在 sql-sample-table-script 找到。

可以从上述 URL 下载适用于你的 DBMS 的 SQL 脚本。对于每个 DBMS,有两个文件:

  • create.txt 包含创建 5 个数据库表(包括定义所有主键和外键约束)的 SQL 语句。
  • populate.txt 包含用来填充这些表的 SQL INSERT 语句。

这些文件中的 SQL 语句依赖于具体的 DBMS,因此应该执行适合于你的 DBMS 的那个。这些脚本为方便读者而提供,作者对执行它们万一引起的问题不承担任何责任。

适用于其他 DBMS 的脚本可能会根据需要或请求而增加。

一些常见的 SQL语句的语法 提供了在几个流行环境中执行脚本的说明。

(完)