欢迎来到 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)”。几乎所有的查询都会用到“三大金刚”指令:SELECT、FROM 和 WHERE。
记忆法: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 是你在计算机科学领域中能学到的最实用的技能之一。它遵循非常合乎逻辑的规则。如果你的代码无法运作,请检查是否有遗漏逗号、引号,并确保表格名称拼写正确。你一定做得到的!