主题 9 · 数据库
数据库与 SQL
表、记录、字段、数据类型和主键,以及如何用 SQL 查询单表数据库。
第 1 课,共 1 课大纲 9.1更新于 2026年10月31日
表、记录与字段
数据库是一种结构化的数据存储方式,便于查找、排序和更新。单表数据库把所有数据存放在一张表中。
每一行是一条记录:关于一个对象的全部数据(这里是一只宠物)。每一列是一个字段:每条记录都存有的一项数据(这里是宠物的名字、种类等)。
表:Pets
| PetID | Name | Type | Age | Owner |
|---|---|---|---|---|
| P01 | Bella | Dog | 3 | Khan |
| P02 | Milo | Cat | 5 | Chen |
| P03 | Coco | Rabbit | 1 | Okafor |
| P04 | Max | Dog | 7 | Silva |
| P05 | Luna | Cat | 2 | Patel |
| P06 | Rocky | Dog | 4 | Chen |
字段的数据类型
每个字段都会被指定一种数据类型,这同时也起到验证的作用:
| 数据类型 | 存放 | 示例字段 |
|---|---|---|
| 文本 / 字母数字 | 字母、数字和符号 | Name、PetID、电话号码 |
| 字符 | 单个字符 | 尺码:S、M 或 L |
| 布尔 | 真 / 假(是 / 否) | Vaccinated(是否接种疫苗) |
| 整数 | 整数 | Age |
| 实数 | 带小数的数 | 体重(千克) |
| 日期 / 时间 | 日期或时间 | DateOfBirth |
主键
主键是为每条记录保存唯一值的字段,用来识别每条记录。名字不适合作为主键,因为两只宠物可能同名;PetID 则是唯一的。
核心概念: 任何两条记录的主键值都不能相同,而且主键永远不能为空。
SELECT、FROM、WHERE、ORDER BY
SQL(结构化查询语言)用来查询数据库。一条查询指明要显示的字段(SELECT)、表(FROM)、记录必须满足的条件(WHERE),以及结果的排序方式(ORDER BY ... ASC 或 DESC)。
在图中,变淡的行不满足 WHERE 条件,高亮的列就是被选中的字段。
狗,按年龄从大到小
SELECT Name, Age FROM Pets WHERE Type = 'Dog' ORDER BY Age DESC;
Pets
| PetID | Name | Type | Age | Owner |
|---|---|---|---|---|
| P01 | Bella | Dog | 3 | Khan |
| P02 | Milo | Cat | 5 | Chen |
| P03 | Coco | Rabbit | 1 | Okafor |
| P04 | Max | Dog | 7 | Silva |
| P05 | Luna | Cat | 2 | Patel |
| P06 | Rocky | Dog | 4 | Chen |
结果
| Name | Age |
|---|---|
| Max | 7 |
| Rocky | 4 |
| Bella | 3 |
组合条件
用 AND 和 OR 构造更具体的条件,再配合 <、> 和 <>(不等于)等比较运算符。
不是狗的年幼宠物
SELECT Name, Owner FROM Pets WHERE Age < 4 AND Type <> 'Dog';
Pets
| PetID | Name | Type | Age | Owner |
|---|---|---|---|---|
| P01 | Bella | Dog | 3 | Khan |
| P02 | Milo | Cat | 5 | Chen |
| P03 | Coco | Rabbit | 1 | Okafor |
| P04 | Max | Dog | 7 | Silva |
| P05 | Luna | Cat | 2 | Patel |
| P06 | Rocky | Dog | 4 | Chen |
结果
| Name | Owner |
|---|---|
| Coco | Okafor |
| Luna | Patel |
SUM 与 COUNT
COUNT 返回符合条件的记录数。SUM 把符合条件的记录中某个数值字段的值加起来。
SELECT COUNT(PetID) FROM Pets WHERE Type = 'Cat'; -- Result: 2 SELECT SUM(Age) FROM Pets WHERE Owner = 'Chen'; -- Result: 9 (Milo 5 + Rocky 4)
关键术语
- 记录
- 表中的一行:关于一个对象的全部数据。
- 字段
- 表中的一列:一类数据。
- 主键
- 唯一标识每条记录的字段。
- SQL
- 结构化查询语言,用于查询数据库。
自我检测
Pets 表有多少条记录、多少个字段?查看答案
6 条记录,5 个字段。
为什么 Owner 不适合作为主键?查看答案
它不唯一:Chen 有两只宠物。
写一条查询:显示每只猫的 PetID,年龄小的排在前面。查看答案
SELECT PetID FROM Pets WHERE Type = 'Cat' ORDER BY Age ASC;
SELECT COUNT(PetID) FROM Pets WHERE Age > 3; 返回什么?查看答案
3(Milo 5 岁、Max 7 岁、Rocky 4 岁)。