示例商城数据库

课程中的所有例子都在同一个商城数据库中运行,其中包含客户、商品目录、订单和员工数据。约五万行数据足以展示分组和索引在实际数据上的行为。

编写查询时,可在这一页查看表名和列名。

以下内容直接从数据库文件读取,与应用中打开的示例保持一致。

等宽字体写的列名就是你要敲进去的名字。说明一栏标出数据库对这个列知道些什么:

  • 主键 — 用来标识这一行。不会重复,也不会为空。
  • 必填 — 这个列不能留空(NOT NULL)。没有这个标记的列可以是 NULL,而 NULL 正是筛选那一课要讲的东西。
  • → 表.列 — 外键:这个列存的是另一张表里的值。连接就是顺着它走的。
  • 唯一 — 任意两行都不能有相同的值。upsert 就是靠它来发现冲突的。
  • 已建索引 — 数据库为这个列另外维护了一份排好序的副本,所以按它筛选和排序会很快。最后一课会讲清楚这意味着什么。

商品

categories 33 行

列类型说明
idINTEGER主键
nameTEXT必填, 唯一
descriptionTEXT
parent_idINTEGER→ categories.id, 已建索引
sort_orderINTEGER必填, 默认值 0
is_activeINTEGER必填, 默认值 1

products 400 行

列类型说明
idINTEGER主键
category_idINTEGER→ categories.id, 必填, 已建索引
nameTEXT必填
descriptionTEXT
skuTEXT必填, 唯一
priceREAL必填, 已建索引, 默认值 0
costREAL必填, 默认值 0
stock_quantityINTEGER必填, 默认值 0
weight_kgREAL
attributesTEXT
is_activeINTEGER必填, 默认值 1
created_atTEXT必填
updated_atTEXT必填

product_images 1,024 行

列类型说明
idINTEGER主键
product_idINTEGER→ products.id, 必填, 已建索引
urlTEXT必填
alt_textTEXT
sort_orderINTEGER必填, 默认值 0
is_primaryINTEGER必填, 默认值 0

tags 15 行

列类型说明
idINTEGER主键
nameTEXT必填, 唯一

product_tags 624 行

列类型说明
product_idINTEGER主键, → products.id
tag_idINTEGER主键, → tags.id

suppliers 12 行

列类型说明
idINTEGER主键
nameTEXT必填
contact_nameTEXT
emailTEXT
phoneTEXT
countryTEXT
ratingREAL
is_activeINTEGER必填, 默认值 1

product_suppliers 579 行

列类型说明
product_idINTEGER主键, → products.id
supplier_idINTEGER主键, → suppliers.id
supplier_skuTEXT
unit_costREAL必填
lead_time_daysINTEGER必填, 默认值 7

inventory_logs 11,547 行

列类型说明
idINTEGER主键
product_idINTEGER→ products.id, 必填, 已建索引
change_qtyINTEGER必填
reasonTEXT必填
referenceTEXT
employee_idINTEGER→ employees.id
logged_atTEXT必填, 已建索引

客户

customers 1,500 行

列类型说明
idINTEGER主键
first_nameTEXT必填, 已建索引
last_nameTEXT必填, 已建索引
emailTEXT必填, 唯一
phoneTEXT
birth_dateTEXT
countryTEXT必填, 已建索引, 默认值 'US'
marketing_opt_inINTEGER必填, 默认值 0
loyalty_pointsINTEGER必填, 默认值 0
created_atTEXT必填
updated_atTEXT必填

addresses 1,959 行

列类型说明
idINTEGER主键
customer_idINTEGER→ customers.id, 必填, 已建索引
labelTEXT必填, 默认值 'home'
line1TEXT必填
line2TEXT
cityTEXT必填
postal_codeTEXT
countryTEXT必填
is_defaultINTEGER必填, 默认值 0

wishlists 2,493 行

列类型说明
customer_idINTEGER主键, → customers.id
product_idINTEGER主键, → products.id
added_atTEXT必填

reviews 2,992 行

列类型说明
idINTEGER主键
product_idINTEGER→ products.id, 必填, 唯一
customer_idINTEGER→ customers.id, 必填, 唯一
ratingINTEGER必填
titleTEXT
bodyTEXT
is_verifiedINTEGER必填, 默认值 0
helpful_votesINTEGER必填, 默认值 0
created_atTEXT必填

notifications 3,000 行

列类型说明
idINTEGER主键
customer_idINTEGER→ customers.id, 必填, 已建索引
typeTEXT必填
titleTEXT必填
bodyTEXT
is_readINTEGER必填, 已建索引, 默认值 0
created_atTEXT必填

订单

orders 4,000 行

列类型说明
idINTEGER主键
order_numberTEXT必填, 唯一
customer_idINTEGER→ customers.id, 必填, 已建索引
address_idINTEGER→ addresses.id
shipping_method_idINTEGER→ shipping_methods.id
coupon_idINTEGER→ coupons.id
statusTEXT必填, 已建索引
subtotalREAL必填, 默认值 0
discountREAL必填, 默认值 0
shipping_costREAL必填, 默认值 0
totalREAL必填, 默认值 0
notesTEXT
ordered_atTEXT必填, 已建索引
updated_atTEXT必填

order_items 12,091 行

列类型说明
idINTEGER主键
order_idINTEGER→ orders.id, 必填, 唯一
product_idINTEGER→ products.id, 必填, 唯一
quantityINTEGER必填
unit_priceREAL必填

payments 3,651 行

列类型说明
idINTEGER主键
order_idINTEGER→ orders.id, 必填, 已建索引
methodTEXT必填
amountREAL必填
currencyTEXT必填, 默认值 'USD'
statusTEXT必填
transaction_refTEXT
paid_atTEXT

shipments 2,319 行

列类型说明
idINTEGER主键
order_idINTEGER→ orders.id, 必填, 已建索引
carrierTEXT必填
tracking_numberTEXT
shipped_atTEXT
delivered_atTEXT

shipping_methods 5 行

列类型说明
idINTEGER主键
nameTEXT必填, 唯一
base_costREAL必填
est_daysINTEGER必填
is_activeINTEGER必填, 默认值 1

coupons 10 行

列类型说明
idINTEGER主键
codeTEXT必填, 唯一
discount_typeTEXT必填
discount_valueREAL必填
min_orderREAL必填, 默认值 0
starts_atTEXT必填
ends_atTEXT必填
max_usesINTEGER
used_countINTEGER必填, 默认值 0

员工

departments 10 行

列类型说明
idINTEGER主键
nameTEXT必填, 唯一
descriptionTEXT
created_atTEXT必填

employees 120 行

列类型说明
idINTEGER主键
department_idINTEGER→ departments.id, 必填, 已建索引
manager_idINTEGER→ employees.id, 已建索引
first_nameTEXT必填
last_nameTEXT必填
emailTEXT必填, 唯一
phoneTEXT
hire_dateTEXT必填
salaryREAL必填, 默认值 0
positionTEXT
is_activeINTEGER必填, 默认值 1

audit_logs 2,000 行

列类型说明
idINTEGER主键
employee_idINTEGER→ employees.id
actionTEXT必填
table_nameTEXT必填, 已建索引
record_idINTEGER已建索引
old_valuesTEXT
new_valuesTEXT
ip_addressTEXT
created_atTEXT必填

设置

settings 8 行

列类型说明
keyTEXT主键
valueTEXT必填
descriptionTEXT
updated_atTEXT必填

视图

视图是存起来的一条查询,用起来像张表:你可以 SELECT 它,但它自己并没有行被存在任何地方。下面这四个是对上面那些表的汇总。

v_customer_lifetime 1,500 行

列类型说明
customer_idINTEGER
customerTEXT
countryTEXT
ordersTEXT
revenueTEXT
first_orderTEXT
last_orderTEXT

v_low_stock 44 行

列类型说明
idINTEGER
skuTEXT
nameTEXT
stock_quantityINTEGER
categoryTEXT

v_order_summary 4,000 行

列类型说明
order_idINTEGER
order_numberTEXT
statusTEXT
ordered_atTEXT
customerTEXT
countryTEXT
itemsTEXT
totalREAL

v_product_sales 400 行

列类型说明
product_idINTEGER
nameTEXT
skuTEXT
categoryTEXT
units_soldTEXT
revenueTEXT
avg_ratingTEXT
review_countTEXT