假设我们正在为一个小型在线商店准备数据库,目前只需要保存用户、商品和订单三类信息。这套数据足以覆盖常见 SQL 场景,又不会因为业务太复杂而增加学习难度。我们会使用 users、products 和 orders 三张主要表。
现在不需要学习如何创建这些表,后面会专门介绍 CREATE TABLE。这一节只要先熟悉数据的样子,因为查询、修改、关联和统计都会围绕它们展开。
users:谁在使用商店
users 保存用户编号、姓名、邮箱和城市。id 是每位用户的唯一编号。后面可以用它练习“找出所有来自 Tokyo 的用户”、按姓名排序或修改邮箱。
| id | name | city | |
|---|---|---|---|
| 1 | Alice | alice@example.com | Tokyo |
| 2 | Bob | bob@example.com | Osaka |
| 3 | Chris | chris@example.com | Tokyo |
| 4 | Diana | diana@example.com | Kyoto |
products:商店卖什么
products 保存商品信息。不同价格和类别让我们以后可以回答“哪些商品价格大于 50”“哪个商品最贵”“Electronics 类有多少个”以及“每个类别的平均价格是多少”。
| id | name | price | category |
|---|---|---|---|
| 1 | Keyboard | 80.00 | Electronics |
| 2 | Mouse | 40.00 | Electronics |
| 3 | Coffee Mug | 15.00 | Home |
| 4 | Backpack | 60.00 | Fashion |
orders:谁买了什么
orders 不直接重复保存用户名和商品名,而是用用户编号和商品编号关联前两张表。user_id 表示谁下单,product_id 表示买了什么,quantity 是数量,order_date 是日期。
| id | user_id | product_id | quantity | order_date |
|---|---|---|---|---|
| 1 | 1 | 2 | 1 | 2026-08-01 |
| 2 | 1 | 3 | 2 | 2026-08-03 |
| 3 | 2 | 1 | 1 | 2026-08-05 |
| 4 | 3 | 4 | 1 | 2026-08-06 |
跟着第一条订单的 ID 走一遍:user_id = 1 指向 Alice,product_id = 2 指向 Mouse,quantity = 1。所以它表示“Alice 买了 1 个 Mouse”,尽管 orders 自己没有重复写 Alice 和 Mouse。
组装一条订单关系
从 users 和 products 中各取一条记录,拖到订单槽位(也可以点击)。再选择数量并写入 orders。你可以自由组合,也可以删除任意订单,观察三张表各自负责什么。
0 rows
选择用户与商品,再写入一条只保存 ID 的订单。为什么不直接保存姓名?
用户名和商品名可能改变,而且同一个用户可能有很多订单。如果 Alice 改名,重复保存姓名的设计就要修改许多历史订单;商品改名也一样。更常见的做法是让 users 保存用户的正式信息,products 保存商品的正式信息,而 orders 只保存 user_id 和 product_id。需要完整信息时,再用后面将学习的 JOIN 连接这些表。
先用 SELECT 查看三张表
假设表已经存在,最简单的查看方式是 SELECT。星号表示所有列,因此第一条可以读作“从 users 表返回所有列”。
SELECT * FROM users;
SELECT * FROM products;
SELECT * FROM orders;可视化工具与练习环境
学习 SQL 不等于必须一直面对命令行。实际开发中,很多人使用数据库工具浏览 Table、编写 SQL 和查看结果。它们的界面通常类似:一侧浏览 Database、Schema 和 Table,中间写 SQL,下方显示查询结果。你不必掌握某一款工具的全部功能;能打开数据库、查看表并执行 SQL 就足够。
常见工具包括 DBeaver、DataGrip、MySQL Workbench、pgAdmin 和 SQL Server Management Studio。
只为学习基础 SQL 时,SQLite 很适合起步:整个 Database 可以保存在一个文件中,不需要单独运行服务器。如果课程、公司或项目已经提供 MySQL、PostgreSQL 或 SQL Server,也可以直接使用,因为本课程优先采用通用 SQL。
知识测验
检查商店数据
写出三条 SQL,分别查看 users、products 和 orders 的所有列。然后只靠三张表,解释 orders 中 id = 2 的订单是谁下的、买了什么、数量是多少。验收标准:三条语句均以分号结束,解释必须展示从两个 ID 到名称的查找过程。