SQL
概述
SQL(Structured Query Language,结构化查询语言)是关系模型的标准查询语言,将关系代数和关系演算的思想转化为人类可读的查询语言,是历史上使用最广泛的声明式编程语言。
关键内容
起源
- System R(IBM 圣何塞研究实验室,1970年代中期):SQL 的前身 SEQUEL(Structured English Query Language)为 System R 设计
- Ingres(UC Berkeley):使用 QUEL 查询语言,更忠实于 Codd 的元组关系演算
- 1986年:SQL 被 ANSI 采纳为标准
- 此后经历了多次修订:SQL-89、SQL-92、SQL:1999、SQL:2003 等
设计哲学
用近似自然语言的方式表达查询意图,使得非专业程序员也能够有效地操纵数据库。SELECT ... FROM ... WHERE ... 的结构直接对应关系演算的声明式风格。
Codd 的不满
Codd 对 SQL 语言的设计表达了不满,认为它在某些方面偏离了关系模型的数学纯粹性(如允许重复行、NULL 值的处理等),但到那时 SQL 已经成为了事实标准。
标准化历程
| 版本 | 年份 | 主要特性 |
|---|---|---|
| SQL-86 | 1986 | 首个 ANSI 标准 |
| SQL-92 | 1992 | 大幅扩展 |
| SQL:1999 | 1999 | 引入递归查询、面向对象特性 |
| SQL:2003 | 2003 | XML 支持、窗口函数 |
当代地位
- "SQL-on-everything"成为通用数据查询趋势
- Text-to-SQL 技术使自然语言查询成为可能
- Presto/Trino、Apache Spark SQL、Amazon Athena 等将 SQL 扩展到分布式存储系统
来源
- raw/books/计算机科学/07-codd-relational-model.md