什么是 SQL:语言概述与查询结构
第 1.7 课 · 阅读时间:约 8 分钟 · 练习题 ↓
SQL(Structured Query Language,结构化查询语言)是操作关系数据库的核心语言。在本课中,你将了解 SQL 的组成、它能解决哪些任务,以及第一条基本查询是什么样子。学完本课后,你将能够自信地读懂简单的 SQL 语句并理解它们的用途。
在上一课中,我们讨论了 NULL 值以及如何处理缺失数据。现在来看看全局:什么是 SQL,以及为什么关系数据库中的大多数实际分析工作都建立在它之上。
SQL 不只对开发人员重要。对于分析师、数据工程师以及在日常工作中提取、校验和转换数据的任何人来说,它同样必不可少。

什么是 SQL,它有什么用?
SQL(Structured Query Language)是我们与 RDBMS(关系数据库管理系统)交流的语言,用于读取、插入、更新和删除数据。
SQL 于 20 世纪 70 年代在 IBM 开发,后来成为关系数据库管理事实上的标准。它的语法足够严格,可以由机器执行,同时人也容易读懂,这使 SQL 非常适合日常的数据工作。
在实践中,SQL 主要解决三类任务:
- 从表中取出所需的数据;
- 修改数据和数据库结构;
- 控制访问和事务。
SQL 的主要特点
- 声明式语言: 你描述需要的结果,而不是编写逐步执行的逻辑。
- 基于集合的操作: SQL 一次处理许多行,而不是逐条处理记录。
- 标准化语法: 不同 RDBMS 的核心语法相似,学到的技能可以通用。
SQL 的子语言
SQL 分为几个子语言,各有特定用途:
- 数据查询语言(DQL): 用于从数据库中查询数据。主要命令是 SELECT。
- 数据定义语言(DDL): 用于定义和管理数据库结构。命令包括 CREATE、ALTER、DROP、RENAME 和 TRUNCATE。
- 数据操作语言(DML): 用于操作数据库中的数据。命令包括 INSERT、UPDATE 和 DELETE。
- 数据控制语言(DCL): 用于控制对数据库中数据的访问。命令包括 GRANT 和 REVOKE。
- 事务控制语言(TCL): 用于管理数据库中的事务。命令包括 COMMIT、ROLLBACK 和 SAVEPOINT。
SQL 的核心对象
SQL 操作数据库中的各种对象,包括:
- 表: 关系数据库中存储数据的主要结构。表由行和列组成,每一行代表一条记录,每一列代表该记录的一个属性。
- 视图: 虚拟表,以特定格式呈现来自一张或多张表的数据。视图可以简化复杂查询,并通过限制对某些数据的访问来增强安全性。
- 索引: 提高表中数据检索速度的结构。索引建立在表的一列或多列上,用于提升查询性能。
- 存储过程: 预先定义、可以作为一个整体执行的 SQL 代码。存储过程可以封装复杂逻辑,并通过减少网络流量来提升性能。
- 触发器: 一种特殊的存储过程,会在表上发生特定事件(例如 INSERT、UPDATE 或 DELETE 操作)时自动执行。触发器可以执行业务规则并维护数据完整性。
- 模式(Schema): 存放表、视图和索引等数据库对象的逻辑容器。模式有助于组织和管理数据库对象,把相关对象归为一组。
- 约束: 作用于表的列、用于保证数据完整性的规则。常见约束有 PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL 和 CHECK。
- 事务: 被当作一个工作单元处理的一条或多条 SQL 操作序列。事务允许多个操作作为一组提交或回滚,从而保证数据的完整性和一致性。
- 数据类型: 定义一列可以存储的数据类型,例如 INTEGER、VARCHAR、DATE 和 BOOLEAN。数据类型保证表中存储的数据一致且有效。
理解这些对象很重要,因为 SQL 查询总是会引用它们。
SQL 的基本约定
SQL 的基本单位是查询。查询是向 RDBMS 发出的读取或修改数据的请求。
一条 SQL 查询的基本结构由以下部分组成:
- 语句(Statements): 在 SQL 中具有特定含义的保留字,例如 SELECT、FROM、WHERE 和 JOIN。
- 子句(Clauses): 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 中满足 condition 的行,并显示 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(过滤哪些行)。