跳到主要内容

数据库

IGCSE 计算机科学 · 第 9 主题

训练
讲义 词汇表
大纲
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

来源:剑桥国际大纲

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

这里每一是一个记录,而每一是一个字段。

Student 表,每一行被标为一个记录、每一列为一个字段,而 StudentID 列被高亮为主键
每一行是一个记录,而每一列是一个字段;主键(StudentID)对每个记录唯一
词汇表 训练
英文 中文 拼音
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 中看到过这些检查。)

对一个年龄字段的一个范围检查接受 16 但拒绝 200
一个范围检查接受合理的值并拒绝其余的
词汇表 训练
英文 中文 拼音
validation 验证 yàn zhèng
9.6

结构化查询语言(SQL)

结构化查询语言(Structured Query Language,SQL)是一种用来查询(query)一个数据库——挑出你想要的记录——的语言。你必须理解并完成 SQL 脚本。

SELECT, FROM and WHERE

  • SELECT 说明显示哪些字段
  • FROM 说明用哪个表
  • WHERE 给一个条件(condition),所以只显示匹配的记录。
一个 SQL 查询:SELECT name FROM students WHERE age > 15
SELECT 挑选字段,FROM 命名表,WHERE 设定条件
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 脚本的输出,按这个顺序读它:

  1. FROM——哪个表;
  2. WHERE——只保留匹配条件的记录;
  3. SELECT——只显示选定的字段;
  4. ORDER BY——把结果排序。
四个步骤按顺序:FROM(哪个表)、WHERE(保留匹配的行)、SELECT(显示选定的字段)、ORDER BY(排序结果)
按这个顺序读一个 SQL 查询:FROM(哪个表)、WHERE(哪些行)、SELECT(哪些字段)、ORDER BY(排序)

遵循这些步骤,你可以精确地写下查询返回哪些行和列。

例题。 一个 Book 表有字段 TitleAuthorPriceInStock。写一个查询,显示 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 加起来一个数字字段。

本主题的互动课程

逐步学习,并即时检测练习。

IGCSE 计算机科学历年真题

IGCSE 计算机科学的更多主题

登录或创建账号

IGCSE, A-Level & AP