SQL 简介
SQL(Structured Query Language) 即结构化查询语言,最初由 IBM 开发的 Sequel 发展而来。1986年 ISO 发布了第一个 SQL 标准 SQL-86。 SQL语言被划分为四个部分:
- 数据定义语言(Data-Definition Language, DDL): 提供了定义关系模式(CREATE)、删除关系(DROP)以及修改关系模式(ALTER)的命令。(这里的关系可以简单的理解为表)
- 数据类型(DataTypes): 数据类型决定了当前字段的取值范围以及支持的操作
- 完整性(integrity): SQL DDL 包含定义完整性约束的命令,保存在数据库中的数据必须满足所定义的完整性约束。即由 DDL 来定义完整性,在 DML 操作时会检查完整性,破坏完整性的更新是不允许的存在
- 视图定义(view definition): DDL 中包含定义视图的命令,视图可以看作是一个 DML 语句的快照
- 数据操纵语言(Data-Manipulation Language, DML): 提供了从数据库中的查询信息(SELECT)以及在数据库中插入元组(INSERT)、删除元组(DELETE)和修改元组(UPDATE)的能力。(这里的元组可以理解为行,这也是与用户打交道最多的部分,通常就是我们所说的增删改查)
- 事务控制语言(Transaction Control Language, TCL): 通过定义事务的开始点和结束点来保证数据操作事务性
- 数据控制语言(Data Control Language, DCL): 定义对关系和视图的访问权限的命令,主要命令由 GRANT 和 REVOKE 两个
这个分类是一个比较经典的分类方式,当然各个数据库中的实际分法并不相同,例如有时候 DML 中会将查询独立出数据查询语言(Data-Query Langauge, DQL),还有类似 sqlite3 就没有 DCL 语句等。实际上大部分手册中分类也只包含 DDL 和 DML 这两个部分,其他都是对这两个部分的延伸。
参考
Tips
本教程主要使用 DuckDB 的 SQL ,它的 SQL 解析器 fork 自 PostgreSQL,而他的 cli 则 fork 自 SQLite。