欢迎来到结构化查询语言 (SQL) 的世界!

你好,未来的数据科学家!本章我们将探讨 SQL(发音为 "sequel"),全称为 Structured Query Language(结构化查询语言)。不用担心名字听起来复杂,SQL 其实就是与数据库沟通的通用语言。

你可以把数据库想象成一座巨大的图书馆,而 SQL 就是你用来查找、整理或更新馆内书籍的一套指令(或查询问题)。如果你未来想从事与数据相关的工作(这几乎涵盖了所有现代职业!),掌握 SQL 是至关重要的!

快速回顾:关系型数据库

在深入了解 SQL 之前,请记住关系型数据库是将数据组织成表 (Table) 的。

  • 表 (Table):就像电子表格(例如:学生图书)。
  • 记录 (Record) 或 行 (Row):一条完整的条目(例如:关于某位特定学生的所有信息)。
  • 字段 (Field) 或 列 (Column):数据的一个类别(例如:学生姓名出生日期)。

第一节:什么是 SQL 及其用途?

SQL 的作用

SQL 是一种声明式语言,这意味着你只需要告诉数据库你想要什么,数据库就会自动计算出如何获取它。它被用于管理和操作存储在关系型数据库管理系统 (RDBMS) 中的数据。

SQL 的命令通常分为两大类:

1. 数据定义语言 (DDL)

DDL 命令用于定义数据库本身的结构,即创建、修改或删除表和数据库。

记忆技巧: Define the Data Layout(定义数据布局)。

2. 数据操作语言 (DML)

DML 命令用于操作既定结构内部的数据,即增加、删除、修改或检索记录。这就是查询的用武之地!

记忆技巧: Manage and Move the Live data(管理并移动实时数据)。

核心要点 (DDL 与 DML): DDL 用来搭建空盒子(结构),而 DML 用来往盒子里放东西(数据)并进行处理。

第二节:数据定义语言 (DDL) 命令

这些命令通常只运行一次,用于设置环境。

1. 创建新表:CREATE TABLE

此命令建立一个新表,包括定义字段名称及其数据类型(例如:文本、整数、日期)。

类比: 你正在为新的文件柜绘制蓝图。

语法示例:创建一个 'Books'(书籍)表
CREATE TABLE Books (
    BookID INTEGER,
    Title TEXT,
    Author TEXT,
    PublicationYear INTEGER
);

关键点: 每个字段必须定义特定的数据类型(例如:INTEGER 用于整数,TEXT 用于名字/文字)。

2. 删除整个表:DROP TABLE

此命令会永久删除整个表以及表中所有的内容。一定要小心操作!

语法示例:
DROP TABLE Books;

你知道吗? 在许多数据库系统中,一旦一个表被 DROP(删除),它就永久消失了,除非你有备份!

第三节:数据操作语言 (DML) 命令

这是 SQL 最常见的用途——提问(查询)和修改数据。

1. 检索数据:SELECTFROM(核心查询)

每当你想要查看数据时,都要使用 SELECTFROM 子句。

  • SELECT 指定你想要查看哪些字段(列)。
  • FROM 指定数据来自于哪张表。
分步示例 1:显示所有字段

如果你想查看 Students 表中的所有内容

SELECT *
FROM Students;

星号 (*) 是通配符,意思是“显示所有列”。

分步示例 2:显示特定字段

如果你只需要学生的姓名和电子邮件:

SELECT StudentName, Email
FROM Students;

2. 筛选数据:WHERE 子句

WHERE 子句用于筛选结果,仅包含满足特定条件的记录。这就是查询强大的原因所在!

常见的比较运算符:
  • =(等于)
  • >(大于)
  • <(小于)
  • >=(大于等于)
  • <=(小于等于)
  • <>!=(不等于)
示例:查找 ID 大于 50 的学生
SELECT StudentName, StudentID
FROM Students
WHERE StudentID > 50;
筛选文本数据:

当筛选文本数据(如姓名或地址)时,数值通常必须用单引号 (') 括起来。

SELECT *
FROM Students
WHERE Grade = 'A';

3. 组合条件:AND, ORNOT

你可以在 WHERE 子句中使用逻辑运算符来组合多个条件。

  • AND: 所有条件都必须满足。
  • OR: 至少满足其中一个条件。
  • NOT: 取反含义(例如:NOT Grade = 'A' 表示任何不是 'A' 的成绩)。
使用 AND 的示例:查找获得 'A' 且居住在伦敦的学生
SELECT StudentName
FROM Students
WHERE Grade = 'A' AND City = 'London';

4. 排序结果:ORDER BY

ORDER BY 子句用于对查询的最终结果进行排序。此子句总是放在 SQL 语句的最后面。

  • ASC(升序):从低到高(A-Z,1-10)。这是默认排序方式。
  • DESC(降序):从高到低(Z-A,10-1)。
示例:按姓名对所有学生进行排序(A 到 Z)
SELECT *
FROM Students
ORDER BY StudentName ASC;
查询结构小贴士:
1. SELECT(我需要哪些列?)
2. FROM(数据存储在哪里?)
3. WHERE(我需要筛选行吗?)
4. ORDER BY(我需要对最终列表排序吗?)

第四节:数据修改 (DML)

1. 添加新数据:INSERT INTO

此命令向现有的表中添加一条新记录(新的一行)。你必须为字段提供数值。

语法示例:添加一条书籍记录
INSERT INTO Books (BookID, Title, Author)
VALUES (101, 'The Great Adventure', 'A. N. Author');

第 1 步: 列出表名和要在括号中填写的列名。
第 2 步: 使用 VALUES 并按相同顺序列出这些列对应的具体数据。

2. 修改现有数据:UPDATESET

UPDATE 命令用于修改一条或多条现有记录中的数据。

  • UPDATE 指定要修改的表。
  • SET 指定要修改的列及新的数值。
  • WHERE 对于指定要修改哪些记录至关重要。

常见错误提醒! 如果忘记了 WHERE 子句,UPDATE 命令将会修改表中的每一条记录。一定要检查你的 WHERE 子句!

示例:将学生 ID 为 42 的成绩修改为 'A+'
UPDATE Students
SET Grade = 'A+'
WHERE StudentID = 42;

3. 删除特定数据:DELETE FROM

此命令从表中删除整个记录(行)。

示例:删除所有住在 'London'(伦敦)的学生
DELETE FROM Students
WHERE City = 'London';

警告: 就像 UPDATE 一样,如果你在没有 WHERE 子句的情况下执行 DELETE FROM Students,你将删除表中的所有记录,使表结构变为空表但保持完整。

核心要点 (DML): DML 允许你进行数据查询 (SELECT)、插入 (INSERT)、修改 (UPDATE) 和删除 (DELETE)。WHERE 子句是你控制精度和保障安全的最有力工具!

总结与后续步骤

你现在已经掌握了 SQL 的基础知识!请记住,SQL 是驱动数字世界的语言,它让应用程序和用户能够高效地处理海量数据。

重点练习 SELECT... FROM... WHERE 的查询结构,因为这是你未来进行数据库开发所有工作的基石!祝你好运!