欢迎来到数据库的世界!

在本章中,我们将一起探索计算机如何存储和组织海量的信息。试想一下你最喜欢的流媒体应用程序、学校的注册系统,或者是一个网上商店,它们都有一个共同点:它们都使用数据库来追踪和管理所有数据。

如果起初觉得这些内容有点深奥也不用担心,我们会通过学校图书馆或电子游戏的物品清单等简单例子来拆解这些概念。让我们开始吧!

1. 到底什么是数据库?

简单来说,数据库(Database)是一个持久且有组织的资料存储库。所谓“持久”(Persistent)是指即使计算机关机后,数据依然会被保存下来。

虽然你可以用一个简单的文本文件来记录朋友的电话号码,但数据库的功能强大得多,它能让你快速地搜索、排序和链接各种信息。

关系型数据库(Relational Databases)

你在考试中需要重点掌握的数据库类型称为关系型数据库

关系型数据库是指使用多个表格(Table)来存储数据的系统。这些表格通过特殊的“键”(Keys)相互链接。这比把所有东西塞进一个巨大、混乱的电子表格要有效率得多!

快速回顾:
数据库是一个有组织的数据集合。关系型数据库则使用了多个相互链接的表格。

2. 数据库表格的结构

要理解数据库,你需要先了解表格是如何构建的。让我们想象一个名为“学生”(Students)的表格。

字段(Field)与记录(Record)

  • 字段(Field):这是表格中的单一“列”(Column)。它存储了特定类别的信息。在我们的“学生”表格中,字段可能是“名字”(FirstName)、“姓氏”(Surname)和“出生日期”(DateOfBirth)。
  • 记录(Record):这是表格中的单一“行”(Row)。它包含了关于某个特定项目或人员的所有数据。一项记录就是关于名为“Alex Smith”的学生的所有信息。
  • 表格(Table):由所有记录字段组成的整个集合。

数据类型(Data Types)

就像程序设计一样,数据库中的每个字段都必须具备一种数据类型。这能告诉数据库该预期什么样的数据(例如:用于姓名的“文本”、用于门牌号的“整数”,或是用于生日的“日期”)。

记忆小撇步:图书馆类比
想象一下图书馆。表格就像是“小说类”的书架。记录是架上的一本书。而字段则是关于这本书的特定细节,比如“书名”或“作者”。

3. 数据库的“键”(Keys)

在关系型数据库中,我们使用两种特殊的“键”来保持结构井然有序并相互链接。

主键(Primary Key)

每个表格都必须有一个主键。这是一个能唯一识别每一笔记录字段

想一想:两名学生可能名字相同(都是“John Smith”)。为了区分他们,学校会给每位学生一个独一无二的“学生编号”(Student ID)。这个编号就是主键,因为不会有两个人拥有相同的 ID。

外键(Foreign Key)

外键是一个表格中的字段,它同时是另一个表格的主键。它被用来将两个表格“链接”在一起。

例子:如果我们有一个“成绩”(Results)表格,我们不想每次学生参加考试时都重复输入他们的全名和地址。相反,我们只需将“学生编号”(来自“学生”表格的主键)放入“成绩”表格中。这样一来,两个表格就成功链接了!

常见错误提醒:
学生常误以为主键必须是数字。虽然通常是这样(例如 ID),但最核心的要求是它必须对于每一行都是唯一(Unique)的!

4. 为何要使用关系型数据库?

为什么不把所有东西都放在一个大表格里就好?关系型数据库能帮助我们避免两个大问题:

  1. 数据冗余(Data Redundancy):这是指同样的数据被存储了多次。如果我们只有一个大表格,每次学生借书我们都可能要重新输入一次地址。在关系型数据库中,我们只需在“学生”表格中存储一次即可。
  2. 数据不一致(Data Inconsistency):当冗余数据在一个地方更新了,却忘了在另一个地方更新时,就会发生这种情况。如果学生搬家了,但我们在五个不同的地方记录了他的地址,我们很可能会漏掉其中一处。通过只存储一次,我们能确保数据的准确性。

重点总结:
关系型数据库能节省空间(减少冗余)并保持数据准确(防止不一致)。

5. 与数据库对话:SQL

SQL(结构化查询语言,Structured Query Language)是用来与数据库“沟通”的语言。你需要知道如何使用它来查询、新增、修改和删除信息。

提取数据(SELECT 陈述式)

要查找信息,我们使用以下结构:
SELECT [你想查询的字段]
FROM [来自哪个表格]
WHERE [必须满足的条件]
ORDER BY [如何排序]

例子:查找所有 11 年级学生的名字,并按姓氏排序:
SELECT FirstName, Surname
FROM Students
WHERE YearGroup = 11
ORDER BY Surname ASC (ASC 代表升序,即 A 到 Z)

新增数据(INSERT 陈述式)

要新增一笔记录:
INSERT INTO Students (FirstName, Surname, YearGroup)
VALUES ('Sam', 'Jones', 10)

编辑和删除数据

要修改现有的数据:
UPDATE Students
SET YearGroup = 11
WHERE Surname = 'Jones'

要移除数据:
DELETE FROM Students
WHERE StudentID = 502

你知道吗?
WHERE 子句非常重要。如果你在 DELETE 陈述式中忘记包含 WHERE 子句,你可能会不小心删除数据库中的所有人!请务必仔细检查你的条件。

快速总结

  • 数据库:一个持久、有组织的数据存储库。
  • 表格:由记录(行)和字段(列)组成。
  • 主键:记录的唯一识别编号。
  • 外键:用于链接两个表格的关键字段。
  • 冗余:重复存储相同的数据(这是不好的!)。
  • SQL:用于管理数据库的语言(SELECT, INSERT, UPDATE, DELETE)。