SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。ANSI 是 American National Standards Institute 的缩写,中文译为“美国国家标准协会”。
SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。
SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。
此外,SQL 也有一些变种,就像中文有很多方言,比如:
当你在任何一款 RDBMS 中执行 SQL 命令时,系统首先确定执行请求的最佳方式,然后 SQL 引擎将会翻译 SQL 语句,并处理请求任务。
整个执行过程包含了多种组件,比如:
传统查询引擎能够处理所有的非 SQL 命令,但是 SQL 引擎并不能处理逻辑文件。
下图展示了 SQL 的体系结构:

与关系型数据库有关的 SQL 命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE、DROP 等,根据其特性,可以将它们分为以下几个类别。
1) DDL - Data Definition Language,数据定义语言
对数据的结构和形式进行定义,一般用于数据库和表的创建、删除、修改等。
| 命令 | 说明 |
|---|---|
| CREATE | 用于在数据库中创建一个新表、一个视图或者其它对象。 |
| ALTER | 用于修改现有的数据库,比如表、记录。 |
| DROP | 用于删除整个表、视图或者数据库中的其它对象 |
2) DML - Data Manipulation Language,数据处理语言
对数据库中的数据进行处理,一般用于数据项(记录)的插入、删除、修改和查询。
| 命令 | 说明 |
|---|---|
| SELECT | 用于从一个或者多个表中检索某些记录。 |
| INSERT | 插入一条记录。 |
| UPDATE | 修改记录。 |
| DELETE | 删除记录。 |
3) DCL - Data Control Language,数据控制语言
控制数据的访问权限,只有被授权的用户才能进行操作。
| 命令 | 说明 |
|---|---|
| GRANT | 向用户分配权限。 |
| REVOKE | 收回用户权限。 |
最常见的数据库可以分为下面的两种类型:
RDBMS 是 Relational Database Management System 的缩写,中文译为“关系数据库管理系统”,它是 SQL 语言以及所有现代数据库系统(例如 SQL Server、DB2、Oracle、MySQL 和 Microsoft Access)的基础。
关系数据库管理系统(RDBMS)是一种基于 E. F. Codd 发明的关系模型的数据库管理系统(DBMS)。
数据库: 数据库是一些关联表的集合。
在 RDBMS 中,数据被存储在一种称为表(Table)的数据库对象中,它和 Excel 表格类似,都由许多行(Row)和列(Column)构成。每一行都是一条数据,每一列都是数据的一个属性,整个表就是若干条相关数据的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。由 行(row)和 列 (column)组成,是一个二维的网格结构,每个列都是一个字段。
如website表:
每个表都由若干列构成,每一列都称为一个字段(Field),上表 website 所包含的字段有 id、name、url、age、alexa、uv 和 country。
字段用来维护数据表中每一条数据(记录)的特定信息。
列(Column)是从垂直方向观察表中的数据,它包含了与某个字段相关联的所有信息。
例如,website 表中有一列为 url,它表示网站的地址。
程序员往往不刻意区分字段(Field)和列(Column)的概念,而是将它们等同看待,因此您可以说“website 表的 age 字段”,也可以说“website 表的 age 列”,它们都是等价的。
数据表中的每一行数据都称为一条记录(Record),有多少行数据就有多少条记录。
字段是从垂直方向看表中的数据,记录是从水平方向看表中的数据。
上表website 共有 2 条记录,以下是第 2 条记录:
关系型数据库管理系统(RDBMS)有很多种,它们都有各自的优缺点,下表是由 DB-Engines 发布的2025年1月份数据库排名:流行趋势与数据分析
| 排名 | 2025年1月 | 2024年12月 | 2024年1月 | DBMS | 数据库模型 | 2025年1月得分 | 2024年12月得分变化 | 2024年1月得分变化 |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | Oracle | Relational, Multi-model | 1258.76 | -5.03 | +11.27 |
| 2 | 2 | 2 | 2 | MySQL | Relational, Multi-model | 998.15 | -5.61 | -125.31 |
| 3 | 3 | 3 | 3 | Microsoft SQL Server | Relational, Multi-model | 798.55 | -7.14 | -78.05 |
| 4 | 4 | 4 | 4 | PostgreSQL | Relational, Multi-model | 663.41 | -2.97 | +14.45 |
| 5 | 5 | 5 | 5 | MongoDB | Document, Multi-model | 402.50 | +2.12 | -14.98 |
| 6 | ↑7 | ↑9 | 9 | Snowflake | Relational | 153.90 | +6.54 | +27.98 |
| 7 | ↓6 | ↓6 | 6 | Redis | Key-value, Multi-model | 153.36 | +3.08 | -6.03 |
| 8 | 8 | ↓7 | 7 | Elasticsearch | Multi-model | 134.92 | +2.60 | -1.15 |
| 9 | 9 | ↓8 | 8 | IBM Db2 | Relational, Multi-model | 122.97 | +0.19 | -9.43 |
| 10 | 10 | ↑11 | 11 | SQLite | Relational | 106.69 | +4.97 | -8.51 |
| 11 | 11 | ↑12 | 12 | Apache Cassandra | Wide column, Multi-model | 99.19 | +1.26 | -11.84 |
| 12 | 12 | ↓10 | 10 | Microsoft Access | Relational | 92.70 | +1.88 | -24.97 |
| 13 | 13 | ↑17 | 17 | Databricks | Multi-model | 87.85 | +0.16 | +7.31 |
| 14 | ↑15 | ↓13 | 13 | MariaDB | Relational, Multi-model | 85.58 | +1.81 | -13.65 |
| 15 | ↓14 | ↓14 | 14 | Splunk | Search engine | 83.09 | -2.27 | -9.63 |
| 16 | 16 | ↓15 | 15 | Microsoft Azure SQL Database | Relational, Multi-model | 73.78 | -2.59 | -7.29 |
| 17 | 17 | ↓16 | 16 | Amazon DynamoDB | Multi-model | 73.00 | +0.27 | -7.94 |
| 18 | 18 | 18 | 18 | Apache Hive | Relational | 56.87 | +3.78 | -10.08 |
| 19 | 19 | 19 | 19 | Google BigQuery | Relational | 53.04 | +0.75 | -10.44 |
| 20 | 20 | ↑22 | 22 | Neo4j | Graph | 43.69 | +0.62 | -4.49 |
除了“关系型数据库”,其它类型的数据库统称为 NoSQL 数据库。NoSQL = Not Only SQL ,也即“不仅仅是 SQL”。