本文将从 SQL 发音和特性,SQL 扩展,以及 ANSI SQL 标准等多个方面来了解 SQL 语言,为后续打基础。
SQL(发音为字母组合 S-Q-L,或读作 sequel),是结构化查询语言(Structured Query Language) 的缩写,是一种专为与数据库通信而设计的专用语言。
与英语这类自然语言,或是 Java、Visual Basic 这类通用编程语言不同,SQL 的词汇量极少,这是一种有意为之的设计。它的核心目标,就是高效、简洁地完成数据库数据的读取与写入这一核心任务。
SQL 具备三大显著优势:
通用性强:SQL 并非某一数据库厂商的专有语言,几乎所有主流数据库管理系统(DBMS)都对其提供支持。掌握 SQL,就意味着能与绝大多数数据库进行交互。
易于学习:SQL 的语句完全由语义明确的英文单词构成,且词汇总量少,上手门槛低。
功能强大:尽管语法简洁,但 SQL 实则是一门灵活度极高的语言。借助其丰富的语言元素,能够实现复杂且高级的数据库操作。
许多数据库管理系统厂商会通过新增语句或指令的方式,对标准 SQL 进行扩展。这类扩展的目的,是为了提供特定功能的实现方案,或是简化某些操作流程。不过这类扩展通常是针对特定 DBMS 开发的,极少有超过两家厂商共同支持的情况。
标准 SQL 由美国国家标准学会(ANSI)制定和维护,因此也被称为 ANSI SQL。所有主流 DBMS 即便拥有自研的 SQL 扩展版本(例如 Oracle 的 PL/SQL、SQL Server 的 Transact-SQL 等),也都会兼容 ANSI SQL 标准。
本教程的内容以 ANSI SQL 为核心进行讲解,若涉及某一特定 DBMS 的专属 SQL 语法,会在对应章节中特别说明。
ANSI SQL(American National Standards Institute SQL),即美国国家标准学会制定的结构化查询语言标准,也常被称作 ISO/IEC SQL(国际标准化组织 / 国际电工委员会联合采纳的版本),是数据库领域通用的 SQL 语言规范,为不同数据库管理系统(DBMS)的 SQL 实现提供了统一基准。
ANSI SQL 是 SQL 语言的 “通用语法和功能蓝本”,定义了 SQL 语言的核心语法、数据类型、操作规则(如数据查询、插入、更新、删除、表结构定义等),其核心目标是:
统一不同 DBMS 的 SQL 语言基础,降低跨数据库开发、迁移的成本;
规范 SQL 语言的语义和用法,避免厂商无规则的语法碎片化;
为数据库厂商提供功能实现的基准,保障基础功能的兼容性。
ANSI 自 1986 年首次发布 SQL 标准(SQL-86)后,持续迭代优化,关键版本及核心变化如下:
版本 | 发布时间 | 核心新增特性 |
SQL-86 | 1986 | 基础语法框架,涵盖 SELECT、INSERT/UPDATE/DELETE、CREATE TABLE 等核心操作 |
SQL-89 | 1989 | 完善数据完整性约束(如主键、外键),新增视图、子查询基础支持 |
SQL-92(SQL2) | 1992 | 大幅扩展功能,新增 JOIN 语法(内连接 / 外连接)、事务隔离级别、临时表、批量操作 |
SQL:1999(SQL3) | 1999 | 引入面向对象特性(如用户自定义类型)、递归查询(WITH 子句)、触发器、存储过程 |
SQL:2003 | 2003 | 新增 XML 数据类型及操作、窗口函数、自动生成列 |
SQL:2008 | 2008 | 支持行构造器、MERGE 语句(批量新增 / 更新)、日期时间精度控制 |
SQL:2011 | 2011 | 增强 JSON 支持、时序数据处理、权限管理细化 |
后续版本(如 SQL:2016/2023) | - | 强化大数据处理、AI 集成、分布式数据库适配等现代场景支持 |
注:SQL-92 是应用最广泛的经典版本,多数主流 DBMS 均全面兼容;后续版本的新特性则被厂商选择性采纳。
ANSI SQL 定义的基础功能是所有主流 DBMS 都需支持的核心,包括:
数据定义语言(DDL):CREATE(创建表 / 视图 / 索引)、ALTER(修改表结构)、DROP(删除对象)等语法规范;
数据操作语言(DML):SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)的标准语法;
数据控制语言(DCL):GRANT(授权)、REVOKE(撤销权限)、COMMIT/ROLLBACK(事务提交 / 回滚);
基础数据类型:CHAR/VARCHAR(字符)、INT/FLOAT(数值)、DATE/TIME(日期时间)等通用类型;
查询语法:WHERE 条件、GROUP BY/HAVING 分组、ORDER BY 排序、JOIN 关联查询等核心规则。
下面将从三个方面来介绍它们之间的关系:
兼容基准:所有主流 DBMS(如 MySQL、Oracle、SQL Server、PostgreSQL)均以 ANSI SQL 为基础,完全兼容其核心语法(如简单 SELECT、CREATE TABLE)。
厂商扩展:为满足个性化需求(如性能优化、特有功能),厂商会在 ANSI SQL 基础上新增语法 / 功能,例如:
Oracle:PL/SQL(存储过程 / 触发器扩展)、CONNECT BY(递归查询)
SQL Server:Transact-SQL(T-SQL,新增变量、流程控制)
MySQL:LIMIT(分页)、AUTO_INCREMENT(自增列)
扩展的局限性:厂商扩展语法仅适用于对应 DBMS,不具备跨库兼容性,这也是学习时优先掌握 ANSI SQL 的原因。
接下来,我们正式进入 SQL 的学习环节。