文档

主题 9 · 数据库

数据库与 SQL

表、记录、字段、数据类型和主键,以及如何用 SQL 查询单表数据库。

第 1 课,共 1 课大纲 9.1更新于 2026年10月31日

表、记录与字段

数据库是一种结构化的数据存储方式,便于查找、排序和更新。单表数据库把所有数据存放在一张表中。

每一行是一条记录:关于一个对象的全部数据(这里是一只宠物)。每一列是一个字段:每条记录都存有的一项数据(这里是宠物的名字、种类等)。

表:Pets
PetIDNameTypeAgeOwner
P01BellaDog3Khan
P02MiloCat5Chen
P03CocoRabbit1Okafor
P04MaxDog7Silva
P05LunaCat2Patel
P06RockyDog4Chen
6 条记录,每条有 5 个字段。

字段的数据类型

每个字段都会被指定一种数据类型,这同时也起到验证的作用:

数据类型存放示例字段
文本 / 字母数字字母、数字和符号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
PetIDNameTypeAgeOwner
P01BellaDog3Khan
P02MiloCat5Chen
P03CocoRabbit1Okafor
P04MaxDog7Silva
P05LunaCat2Patel
P06RockyDog4Chen
结果
NameAge
Max7
Rocky4
Bella3

组合条件

用 AND 和 OR 构造更具体的条件,再配合 <、> 和 <>(不等于)等比较运算符。

不是狗的年幼宠物
SELECT Name, Owner
FROM Pets
WHERE Age < 4 AND Type <> 'Dog';
Pets
PetIDNameTypeAgeOwner
P01BellaDog3Khan
P02MiloCat5Chen
P03CocoRabbit1Okafor
P04MaxDog7Silva
P05LunaCat2Patel
P06RockyDog4Chen
结果
NameOwner
CocoOkafor
LunaPatel

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 岁)。