欢迎来到 SQL 的世界!
你有没有想过 Spotify 是如何记住你最爱的歌曲,或是像《堡垒之夜》(Fortnite) 这样的游戏如何追踪你的皮肤和 V-Bucks?这一切都发生在数据库 (Database) 之中。为了与这些数据库沟通,我们使用一种名为 SQL(读作 'sequel' 或 S-Q-L)的专用语言,它的全称是结构化查询语言 (Structured Query Language)。
在本章中,我们将学习如何向数据库提问、加入新资料,甚至修改或删除数据。如果起初看起来有点复杂也不用担心——SQL 的语法其实和英文非常相似!
1. 理解关系型数据库
在编写代码之前,我们需要先了解我们在处理什么。关系型数据库 (Relational Database) 是一种将数据存储在互相关联的数据表 (Tables) 中的方法。
数据库关键术语:
• 数据表 (Table): 以行和列组织的数据集合(就像电子表格一样)。
• 记录 (Record): 数据表中的单一横列。它代表一件“事物”(例如:一名学生或一件商品)。
• 字段 (Field): 数据表中的单一纵列。它代表一种“属性”(例如:姓氏或价格)。
• 数据类型 (Data Type): 每个字段都有一个类型,例如 Integer(整数)或 String(文本)。
• 主键 (Primary Key): 一个用来识别每条记录的唯一字段(就像你的学生编号)。没有两条记录可以使用同一个主键!
• 外键 (Foreign Key): 一个来自其他数据表的主键,出现在当前数据表中以将两者链接起来。
现实生活例子: 想象一下你学校的数据库。一张数据表存储学生(姓名、出生日期、学生编号)。另一张数据表存储课程(课程编号、科目、老师)。通过将学生编号放入课程数据表中,我们就将学生与他们的课堂“链接”起来了。这个链接就是外键。
你知道吗? 使用关系型数据库有助于消除数据冗余 (Data Redundancy)(重复存储相同的信息)和数据不一致 (Data Inconsistency)(同一人拥有两个不同的地址)。它能让一切保持井然有序!
快速复习:
- 数据表 (Tables) = 整个数据集合。
- 记录 (Records) = 水平方向的列。
- 字段 (Fields) = 垂直方向的行。
- 主键 (Primary Key) = 唯一的识别码。
2. 检索数据:SELECT 语句
要从数据库中提取数据,我们使用 SELECT 指令。这被称为“查询 (Query)”。
基本结构:
SELECT (你想查询哪些字段?)
FROM (它在哪个数据表中?)
WHERE (搜索条件是什么?)
ORDER BY (应该如何排序结果?)
记忆口诀:Silly Frogs Wear Orange
(SELECT, FROM, WHERE, ORDER BY)
逐步示例:
想象一个名为 Games 的数据表,字段有:Title(标题)、Genre(类型)、Price(价格)、Rating(评分)。
如果我们想查看所有价格低于 £20 的游戏标题,我们会这样写:
SELECT Title
FROM Games
WHERE Price < 20;
排序结果:
在结尾使用 ORDER BY。你可以使用 ASC 进行升序排序(A-Z, 1-10),或使用 DESC 进行降序排序(Z-A, 10-1)。
SELECT Title, Price
FROM Games
ORDER BY Price DESC;
处理两个数据表:
在考试中,你可能需要从两个数据表获取数据。我们通过在 WHERE 子句中匹配其中一个表的主键与另一个表的外键来做到这一点。
示例:SELECT Students.Name, Grades.Score
FROM Students, Grades
WHERE Students.StudentID = Grades.StudentID;
关键重点: SELECT 选取字段,FROM 选取数据表,而 WHERE 用来筛选行!
3. 加入新数据:INSERT INTO
当你注册新的社交媒体账户时,应用程序会使用 INSERT 指令将你加入到他们的数据库中。
写法:
INSERT INTO table_name (column1, column2...)
VALUES (value1, value2...);
示例: 将新游戏加入列表。
INSERT INTO Games (Title, Genre, Price)
VALUES ('Super Space Explorer', 'Sci-Fi', 15.99);
常见错误: 请确保数值 (Values) 的顺序与你列出的字段顺序完全相同!如果 Title 排在第一个,那么游戏名称在数值列表中也必须排在第一个。此外,请记住 String(文本)两侧需要加上“单引号”,但 Integer(整数)和 Real(实数)则不需要。
4. 修改与删除数据
有时数据会发生变化(例如游戏打折),或者需要被移除(例如用户删除账户)。
更新数据
我们使用 UPDATE 来修改现有的记录。
结构:
UPDATE table_name
SET column = new_value
WHERE condition;
示例:将 'Battle Arena' 的价格改为 £10。
UPDATE Games
SET Price = 10
WHERE Title = 'Battle Arena';
删除数据
我们使用 DELETE 来彻底删除一条记录。
结构:
DELETE FROM table_name
WHERE condition;
示例:移除不再售卖的游戏。
DELETE FROM Games
WHERE Title = 'Old Game 2010';
危险区域! 在使用 UPDATE 或 DELETE 时,务必记得加上 WHERE 子句。如果你忘了它,你可能会不小心更新数据表中的每一行,或者删除所有东西!想象一下,如果不小心把店里所有游戏的价格都设为 £0,那该怎么办?
快速复习:
- INSERT = 创建新数据。
- UPDATE = 修改现有数据。
- DELETE = 移除数据。
总结:你的 SQL 工具箱
你现在已经掌握了管理数据库的工具!记住这四个指令,你就会成为 SQL 专家:
1. SELECT: 查询并显示数据。
2. INSERT: 加入新记录。
3. UPDATE: 编辑记录。
4. DELETE: 移除记录。
通过为“学生”或“音乐”数据表编写自己的查询指令来多加练习吧。写得越多,你就会觉得越自然。你一定没问题的!