课程 1.6 · 阅读时间:~8 分钟
SQL(结构化查询语言)是与关系数据库交互的核心语言。在本课中,您将看到 SQL 的组织方式、它解决的任务以及第一个基本查询的样子。到课程结束时,您将能够自信地阅读简单的 SQL 结构并理解其目的。
什么是 SQL:语言和查询结构概述
在上一课中,我们讨论了 NULL 值以及如何处理缺失数据。现在是时候看更大的图景:SQL 是什么,以及为什么大多数关系数据库中的实际分析都是基于它的。
SQL 对开发人员来说不仅重要。它对分析师、数据工程师以及在日常工作中提取、验证和转换数据的任何人都是必不可少的。

什么是 SQL,为什么它有用?
SQL(结构化查询语言)是我们用来与 RDBMS 进行通信以读取、插入、更新和删除数据的语言。
SQL 于 1970 年代在 IBM 开发,并成为关系数据库管理的事实标准。它的语法足够严格以供机器执行,同时对人类可读,这使得 SQL 在日常数据任务中非常实用。
在实践中,SQL 解决三大类任务:
- 从表中检索所需数据;
- 修改数据和数据库结构;
- 控制访问和事务。
SQL 的关键特性
- 声明性语言: 您描述所需的结果,而不是逐步编写执行逻辑。
- 基于集合的操作: SQL 一次处理多行,而不是逐条记录。
- 标准化语法: 核心结构在不同的 RDBMS 中相似,使技能可转移。
SQL 的子集
SQL 被划分为几个子集,每个子集服务于特定的目的:
- 数据查询语言 (DQL): 用于从数据库中查询数据。主要命令是 SELECT。
- 数据定义语言 (DDL): 用于定义和管理数据库结构。命令包括 CREATE、ALTER 和 DROP。
- 数据操作语言 (DML): 用于操作数据库中的数据。命令包括 INSERT、UPDATE 和 DELETE。
- 数据控制语言 (DCL): 用于控制对数据库中数据的访问。命令包括 GRANT 和 REVOKE。
- 事务控制语言 (TCL): 用于管理数据库中的事务。命令包括 COMMIT、ROLLBACK 和 SAVEPOINT。
核心 SQL 对象
SQL 在数据库中操作各种对象,包括:
- 表: 存储关系数据库中数据的主要结构。表由行和列组成,每行代表一条记录,每列代表该记录的一个属性。
- 视图: 虚拟表,提供以特定格式呈现来自一个或多个表的数据的方式。视图可以简化复杂查询并通过限制对某些数据的访问来增强安全性。
- 索引: 改善数据库表中数据检索操作速度的结构。索引是在一个或多个列上创建的,以提高查询性能。
- 存储过程: 可以作为一个单元执行的预定义 SQL 代码。存储过程可以封装复杂逻辑,并通过减少网络流量来提高性能。
- 触发器: 特殊类型的存储过程,自动响应表上的某些事件(如 INSERT、UPDATE 或 DELETE 操作)。触发器可以强制执行业务规则并维护数据完整性。
- 模式: 数据库对象(如表、视图和索引)的逻辑容器。模式有助于组织和管理数据库对象,提供将相关对象分组在一起的方式。
- 约束: 应用于表列以强制数据完整性的规则。常见约束包括 PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL 和 CHECK。
- 事务: 一系列一个或多个 SQL 操作,被视为一个工作单元。事务通过允许将多个操作作为一个组提交或回滚来确保数据完整性和一致性。
- 数据类型: 定义可以存储在列中的数据类型,如 INTEGER、VARCHAR、DATE 和 BOOLEAN。数据类型确保存储在表中的数据是一致且有效的。
理解这些对象很重要,因为 SQL 查询总是引用它们。
基本 SQL 约定
SQL 中的基本单位是 查询。查询是向 RDBMS 请求检索或修改数据。
SQL 查询的基本结构由以下组件组成:
- 语句: 在 SQL 中具有特定含义的保留字。示例包括 SELECT、FROM、WHERE 和 JOIN。
- 子句: SQL 语句的组成部分,指定要执行的操作。常见子句包括 SELECT、FROM、WHERE、GROUP BY 和 ORDER BY。
- 表达式: 值、运算符和函数的组合,计算为单个值。表达式可以在 SQL 语句的各个部分中使用,例如 SELECT 列表或 WHERE 子句。
- 标识符: 用于引用数据库对象(如表、列和视图)的名称。标识符可以是简单的(例如,table_name)或合格的(例如,schema_name.table_name)。
- 注释: SQL 代码中不可执行的文本,提供解释或说明。注释可以是单行的(使用 --)或多行的(使用 / ... /)。
编写您的第一个 SQL 查询
基本查询模板通常包括 SELECT、FROM 和可选的 WHERE:
SELECT column1,
column2
FROM table_name
WHERE condition;
结果:查询仅返回 table_name 中符合条件的行,并显示列 column1 和 column2.
即使这个简短的模板也很有用,因为它展示了大多数分析 SQL 查询中使用的常见结构。
本课的关键要点:
- SQL 是与关系数据库交互的核心语言。
- SQL 是声明性的:您描述结果,而不是执行算法。
- SQL 包括子集:DQL、DDL、DML、DCL 和 TCL。
- 查询由语句、子句、表达式和标识符构成。
- 基本查询框架是 SELECT ... FROM ... WHERE ....
常见问题解答
SQL 是编程语言还是查询语言?
SQL 通常被描述为查询语言。它不是通用编程语言,但它是处理关系数据的标准。
知道 SQL 子集有什么用?
子集帮助您快速理解命令的目的:数据检索、模式更改、访问控制或事务处理。
我可以在每个 RDBMS 中以相同的方式编写 SQL 吗?
核心结构非常相似,但语法细节和内置函数在 MariaDB、PostgreSQL、SQL Server 和其他系统之间可能有所不同。
面试问题
您如何用简短的回答解释 SQL?
SQL 是管理和查询关系数据库中数据的标准语言。它用于读取和修改数据、管理模式对象和控制事务。
DDL 和 DML 之间有什么区别?
DDL 定义和更改数据库结构(表、索引、模式),而 DML 则处理表数据(插入、更新、删除行)。
基本 SQL 查询的核心部分是什么?
基本查询通常包括 SELECT(要返回的内容)、FROM(要读取的表)和 WHERE(要过滤的行)。
在下一课中,我们将转向 SQL 命令类型,并查看它们在实际任务中的应用。