欢迎来到 SQL 的世界!

在本章中,我们将学习结构化查询语言 (Structured Query Language),通常简称为 SQL(读音类似英文单词 "sequel")。

想象一下一个拥有数百万本书的庞大图书馆。如果你想找出某位作者在 1994 年撰写的所有书籍,手动在书架间寻找可能会花上几个星期。SQL 就好比一位超级图书管理员。你只需下达明确的指令,它就能在瞬间从关系型数据库 (relational database) 中寻找、新增或修改信息。无论你是使用 Instagram、检查银行余额还是玩在线游戏,SQL 可能都在后台默默地处理这些数据。

如果刚开始觉得代码很多,请别担心。SQL 的设计非常接近英语,一旦你学会了基本的“句子”,就能轻松地与任何数据库进行沟通!

1. 定义数据库:创建表格

在存储数据之前,我们需要一个地方来存放它们。在关系型数据库中,数据存储在表格 (tables) 内。使用 SQL 来设定这些表格的过程称为数据定义 (Data Definition)

CREATE TABLE 指令

要创建新表格,我们使用 CREATE TABLE 指令。你需要告诉数据库表格的名称,以及每一栏(属性/attribute)将存储什么类型的数据。

示例:创建学生表格
CREATE TABLE Students (
  StudentID INTEGER PRIMARY KEY,
  FirstName VARCHAR(20),
  LastName VARCHAR(20),
  DateOfBirth DATE,
  ClassID INTEGER FOREIGN KEY REFERENCES Classes(ClassID)
);

等等,那些额外的单词是什么意思?

INTEGER:告诉数据库该字段将存储整数。
VARCHAR(20):代表 "Variable Character"(可变字符)。它用于文字(如姓名)。括号中的数字是长度上限。
DATE:用于存储日期。
PRIMARY KEY(主键):这是每一列的唯一识别码。没有两个学生的 StudentID 可以相同,这就像你的指纹一样!
FOREIGN KEY(外键):这是指向另一个表格中主键的链接。这就是我们如何在表格之间建立“关联”的方法。

快速复习:要创建一个表格,你需要设定名称、字段名称以及对应的数据类型 (data types)

重点总结:CREATE TABLE 在你开始输入任何实际名称或细节之前,就先定义好了数据的结构。

2. 检索数据:“三大金刚”

使用 SQL 最常见的操作就是向数据库提问,这称为“查询 (querying)”。几乎所有的查询都会用到“三大金刚”指令:SELECTFROMWHERE

记忆法:S.F.W. (Stay For Water)

SELECT你想看哪些字段?
FROM它们在哪些表格里?
WHERE你要筛选数据的特定规则是什么?

示例:找出所有姓氏为 'Smith' 的学生姓名
SELECT FirstName, LastName
FROM Students
WHERE LastName = 'Smith';

使用通配符 (*)

如果你不想逐一输入字段名称,想查看表格中的所有字段,可以使用星号 * 符号。你可以把它想象成一个“全选”按钮。

SELECT * FROM Students;

排序结果

你可以使用 ORDER BY 来按字母或数字顺序排列清单。加上 ASC 表示升序(A-Z),或使用 DESC 表示降序(Z-A)。
示例: SELECT * FROM Students ORDER BY LastName ASC;

连接表格 (Joining Tables)

在 AQA 课程大纲中,你需要知道如何从多个表格中获取数据。由于表格是透过键值 (keys) 链接的,我们可以在 WHERE 子句中将它们“连接 (join)”起来。

类比:如果你有一份 'CustomerIDs' 清单和另一份 'Orders' 清单,你可以使用它们共有的 ID 将其连接起来,查看是哪个人购买了哪项商品。

示例:查看学生的姓名以及他们的班级名称
SELECT Students.FirstName, Classes.ClassName
FROM Students, Classes
WHERE Students.ClassID = Classes.ClassID;

你知道吗?SQL 最初被称为 SEQUEL (Structured English Query Language),但后来因为商标争议而改名。不过,大多数人仍然习惯读作 "sequel"!

重点总结:使用 SELECT 选择字段,FROM 选择表格,并使用 WHERE 来筛选结果以及连接多个表格。

3. 管理数据:新增、修改与删除

表格创建完成后,你需要能够新增信息、修正错误或删除不再需要的数据。

INSERT:新增数据列

当有新学生入学时,我们使用 INSERT INTO 来新增他们。

INSERT INTO Students (StudentID, FirstName, LastName)
VALUES (105, 'Amina', 'Hussain');

UPDATE:修改现有数据

如果 Amina 改了姓氏,我们不需要删除她,只需要 UPDATE 她的记录即可。请小心!使用 UPDATE 时务必加上 WHERE 子句,否则你可能会不小心把数据库中每一个人的名字都改掉!

UPDATE Students
SET LastName = 'Khan'
WHERE StudentID = 105;

DELETE:移除数据

如果有学生离校,我们使用 DELETE。和 UPDATE 一样,务必使用 WHERE,以免不小心删掉整个数据库!

DELETE FROM Students
WHERE StudentID = 105;

常见错误警示!学生常忘记在文字值(如 'Smith' 或 'Khan')周围加上单引号。数字不需要引号,但文字和日期必须加上!

重点总结:INSERT 用于新增记录,UPDATE 修改现有记录,DELETE 移除记录。这三者都依赖 WHERE 来确保你操作的是正确的数据。

4. 复习总结表

指令用途
CREATE TABLE — 设定包含字段和数据类型的新表格。
SELECT — 选择你想查看的字段。
FROM — 指定数据所在的表格。
WHERE — 筛选数据并连接多个表格。
ORDER BY — 对结果进行排序 (ASC 或 DESC)。
INSERT INTO — 新增一笔全新的数据列。
UPDATE — 修改表格中已存在的数据。
DELETE — 永久移除表格中的一笔记录。

最后的鼓励

SQL 是你在计算机科学领域中能学到的最实用的技能之一。它遵循非常合乎逻辑的规则。如果你的代码无法运作,请检查是否有遗漏逗号、引号,并确保表格名称拼写正确。你一定做得到的!