1986 年 10 月,美国国家标准协会 ANSI 采用 SQL 作为关系数据库管理系统的标准语言,并命名为 ANSI X3. 135-1986,后来国际标准化组织(ISO)也采纳 SQL 作为国际标准。
1989 年,ANSI 采纳并使用了在 ANSI X3.135-1989 报告中定义的 SQL 标准语言,并称之为 ANSI SQL 89,该标准替代了之前的 ANSI X3.135-1986 版本。
下面是 SQL 发展的简要历史:
1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86。
1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89。
1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)。
1999年,ISO/IEC 9075:1999,SQL:1999(SQL3)。
2003年,ISO/IEC 9075:2003,SQL:2003。
2008年,ISO/IEC 9075:2008,SQL:2008。
2011年,ISO/IEC 9075:2011,SQL:2011。
现在,绝大多数被提及的 SQL 标准,其中涉及的内容其实都是 SQL 92 里最基本、最核心的一部分。OceanBase 数据库目前也遵循的是 SQL 92 标准,并支持后续 SQL 标准的部分重要特性。
SQL 是用来访问关系数据库,例如 OceanBase、Oracle 和 MySQL 的接口,所有的 SQL 语句都是对数据库的操作指令。
通常,SQL 可以分为以下 5 个部分:
数据查询语言 DQL(Data Query Language):也称为数据检索语言,用以从表中获得数据,并描述怎样将数据返回给程序并输出。DQL 并不改变数据库中存储的数据内容。
数据操作语言 DML(Data Manipulation Language):用以改变数据库中存储的数据内容,即增加、修改和删除数据。
事务控制语言 TCL(Transaction Control Language):保证数据库的完整性、一致性,在同一个事务中的 DML 语句要么同时成功,要么同时失败。
数据控制语句 DCL(Data Control Language):对数据访问权限控制的命令。可以控制特定账号对特定数据库资源的访问权限。
数据定义语言 DDL(Data Definition Language):对数据库中资源进行定义、修改和删除,例如新建表和删除表等。
SQL 是访问数据库的标准语言,所有的主要关系数据库都支持 SQL,因此所有用 SQL 编写的程序都是可移植的。通常进行少量的修改就可以从一个关系数据库移植到另一个关系数据库上。
粗体 表示与操作或以文本或词汇表定义的术语相关联的图形用户界面元素。
保留字、关键字、标识符和参数中的大小写不敏感。为方便阅读与识别,这些字会以大写形式书写。
在不同的编程环境中,SQL 语句终止方式不同。本文档中以分号";" 来标识一个 SQL 的结尾。
行内代码
表示文档中引用的代码。
为了突出重要信息,本文档会加粗"说明"、"注意"和"重要"等文字。
本文档中可选参数文本用方括号括起,例如 [-n, -quiet]。