| Candidates should be able to: | Notes and guidance |
|---|---|
| 1 Define a single-table database from given data storage requirements | • Including: – fields – records – validation |
| 2 Suggest suitable basic data types | • Including: – text/alphanumeric – character – Boolean – integer – real – date/time |
| 3 Understand the purpose of a primary key and identify a suitable primary key for a given database table | |
| 4 Read, understand and complete structured query language (SQL) scripts to query data stored in a single database table | • Limited to: – SELECT – FROM – WHERE – ORDER BY DESCENDING – ORDER BY ASCENDING – SUM – COUNT – AND – OR • Identifying the output given by an SQL statement that will query the given contents of a database table |
数据库
IGCSE 计算机科学 · 第 9 主题
大纲
来源:剑桥国际大纲
9.1
什么是数据库?
一个数据库(database)是一个有组织的数据存储,被保存得容易搜索、排序和更新。在 IGCSE 你用一个单表数据库(single-table database)——所有的数据都容纳在一个表中。


| 英文 | 中文 | 拼音 |
|---|---|---|
| database | 数据库 | shù jù kù |
| single-table database | 单表数据库 | dān biǎo shù jù kù |
9.2
记录与字段
一个数据库表由记录和字段构成。
- 一个记录(record)是表中的一行——关于一件事物的所有数据(例如一个学生)。
- 一个字段(field)是表中的一列——每个记录都有的一份数据(例如"名字")。
| StudentID | FirstName | DateOfBirth | FormClass | FeesPaid |
|---|---|---|---|---|
| 1 | Amy | 14/03/2009 | 10A | TRUE |
| 2 | Ben | 02/11/2008 | 10B | FALSE |
这里每一行是一个记录,而每一列是一个字段。

| 英文 | 中文 | 拼音 |
|---|---|---|
| record | 记录 | jì lù |
| field | 字段 | zì duàn |
9.3
字段的数据类型
每个字段存储一个数据类型(data type)。你选择最适合数据的类型。

| 数据类型 | 用于 | 例子 |
|---|---|---|
| 文本/字母数字(text/alphanumeric) | 字母、数字和符号 | "10A"、"Amy" |
| 字符(character) | 一个单一字符 | 'M' |
| 布尔值(Boolean) | 两个值之一 | TRUE / FALSE |
| 整数(integer) | 一个整数 | 42 |
| 实数(real) | 一个带小数点的数 | 3.5 |
| 日期时间(date/time) | 一个日期或一个时间 | 14/03/2009 |
| 英文 | 中文 | 拼音 |
|---|---|---|
| data type | 数据类型 | shù jù lèi xíng |
| text/alphanumeric | 文本 | wén běn |
| character | 字符 | zì fú |
| Boolean | 布尔值 | bù ěr zhí |
| integer | 整数 | zhěng shù |
| real | 实数 | shí shù |
| date/time | 日期时间 | rì qī shí jiān |
9.4
主键
一个主键(primary key)是一个为每个记录容纳一个唯一的(unique)值的字段。没有两个记录能有同样的主键,所以它让你精确地挑出一个记录。
在上面的表中,StudentID 是一个好的主键,因为每个学生有一个不同的数。一个像 FormClass 的字段会是一个糟糕的主键,因为许多学生共享同一个班。
| 英文 | 中文 | 拼音 |
|---|---|---|
| primary key | 主键 | zhǔ jiàn |
| unique | 唯一的 | wéi yī de |
9.5
数据库中的有效性检查
当数据被放入一个数据库时,验证(validation)检查确保它是合理的——例如对一个年龄字段的一个范围检查,或一个存在性检查使一个字段不被留空。(你在主题 7 中看到过这些检查。)

| 英文 | 中文 | 拼音 |
|---|---|---|
| validation | 验证 | yàn zhèng |
9.6
结构化查询语言(SQL)
结构化查询语言(Structured Query Language,SQL)是一种用来查询(query)一个数据库——挑出你想要的记录——的语言。你必须理解并完成 SQL 脚本。
SELECT, FROM and WHERE
SELECT说明显示哪些字段。FROM说明用哪个表。WHERE给一个条件(condition),所以只显示匹配的记录。

SELECT FirstName, FormClass
FROM Student
WHERE FeesPaid = TRUE;
这显示每个已付费的学生的名字和班级。
用 * 选择所有字段:
SELECT *
FROM Student
WHERE FormClass = '10A';
ORDER BY
ORDER BY 排序结果。用 ASC 表示升序(ascending,最小的先,A→Z)或用 DESC 表示降序(descending,最大的先,Z→A)。
SELECT FirstName, DateOfBirth
FROM Student
ORDER BY DateOfBirth ASC;
AND and OR
用 AND(两者都必须为真)或 OR(至少一个必须为真)连接条件。
SELECT FirstName
FROM Student
WHERE FormClass = '10A' AND FeesPaid = FALSE;
SUM and COUNT
SUM把一个数字字段中的值加起来。COUNT数有多少记录匹配。
SELECT COUNT(StudentID)
FROM Student
WHERE FeesPaid = FALSE;
这数有多少学生还没付费。SUM 以同样的方式工作,但加一个数字字段而不是数行。
Working out the output
要找到一个 SQL 脚本的输出,按这个顺序读它:
FROM——哪个表;WHERE——只保留匹配条件的记录;SELECT——只显示选定的字段;ORDER BY——把结果排序。

遵循这些步骤,你可以精确地写下查询返回哪些行和列。
例题。 一个 Book 表有字段 Title、Author、Price 和 InStock。写一个查询,显示 Orwell 所著且有库存的每本书的书名和价格,最便宜的排在前面。
SELECT Title, Price
FROM Book
WHERE Author = 'Orwell' AND InStock = TRUE
ORDER BY Price ASC;
按阅读顺序来构建:FROM 指出是哪个表;WHERE 只保留匹配的记录,因为有两个条件,所以要用 AND;SELECT 只显示题目要求的那两个字段;ORDER BY … ASC 把它们排序。文本值要加引号,而且只有题目要求的字段才应出现在 SELECT 中 - 仅仅因为你按 Author 筛选过就把它也加进去,是这里最常见的丢分方式。
SELECT … WHERE
Step through a query: WHERE filters rows, SELECT picks columns.
| 英文 | 中文 | 拼音 |
|---|---|---|
| structured query language | 结构化查询语言 | jié gòu huà chá xún yǔ yán |
| query | 查询 | chá xún |
| condition | 条件 | tiáo jiàn |
| ascending | 升序 | shēng xù |
| descending | 降序 | jiàng xù |
9.7
考试技巧
- 一个记录是一行(关于一件事物的所有数据);一个字段是一列(每个记录都有的一项)。
- 一个主键对每个记录必须唯一,所以它精确地挑出一个记录(StudentID,而不是 FormClass)。
- 学习 SQL 各部分:
SELECT(哪些字段)、FROM(哪个表)、WHERE(条件)、ORDER BY(排序,ASC 或 DESC)。 - 按 FROM → WHERE → SELECT → ORDER BY 的顺序读一个查询以算出它的输出。
COUNT数匹配的记录;SUM加起来一个数字字段。
本主题的互动课程
逐步学习,并即时检测练习。