文章目录
我在 CSDN 学院发布的 《SQL 入门视频教程》。
SQL 历史
SQL 代表 Structured Query Language,即结构化查询语言。它是访问和操作关系型数据库(RDBMS)的标准语言。SQL 的发音为/ˈɛs kjuː ˈɛl/ 或者 /ˈsiːkwəl/。
关系型数据库管理系统(Relational Database Management System),简称 RDBMS,支持关系数据模型,主要的概念包括二维表、集合操作、完整性约束等等。常见的产品有 Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Db2、SQLite 等等。
SQL 最初由由 IBM 公司开发,基于 E.F. Codd 博士的论文《A Relational Model of Data for Large Shared Data Banks》。1979 年 Relational Software, Inc.(即后来的 Oracle)发布了第一个商用的 SQL 产品。
SQL 在 1986 年成为 ANSI 的一个标准,并且在 1987 年成为 ISO 的一个标准。
ANSI 在1992 年对 SQL 标准进行了修订,称为 SQL92 或者 SQL2;在 1999 年再次进行了修订,称为 SQL99 或者 SQL3。
如今,SQL 标准由 ANSI 和 ISO/IEC 共同维护,随后经历的修订版本包括 SQL:2003、SQL:2006、SQL:2008、SQL:2011。最新的版本为 SQL:2016或者 ISO/IEC 9075:2016,它取代了之前的所有版本。关于 SQL:2016的新特性可以参考SQL:2016标准之新特性。
SQL 语句分类
常见的 SQL 语句包含以下类别:
DQL
(data query language),数据查询语言;主要是SELECT
语句,用于查询数据库中的数据和信息。DML
(data manipulation language),数据操作语言;主要用于对数据库进行数据的增加、修改和删除,包括INSERT
、UPDATE
、DELETE
和MERGE
等语句。DDL
(data definition language),数据定义语言;主要用于定义数据库中的模式对象,例如表或索引,包括CREATE
、ALTER
、DROP
等等。TCL
(transaction control language),事务控制语言;用于管理数据库事务,主要包含BEGIN TRANSACTION
、COMMIT
、ROLLBACK
、SAVEPOINT
等语句。DCL
(data control language),数据控制语言;用于控制数据的访问权限,主要有GRANT
、REVOKE
等语句。
SQL 实现与扩展
不同厂商基于 SQL 标准实现了自己的数据库产品,它们都在一定程度上兼容 SQL 标准,具有一定的可移植性。另一方面,虽然这些实现的大部分与 ANSI 兼容,但没有任何一种产品完全遵循标准。因此,SQL 代码在不同数据库之间很少能够不用修改就能直接移植。
本系列文章除了介绍标准 SQL 语言之外,还分别比较六种主流关系型数据库中的具体实现和差异,包括 Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Db2、SQLite。
除此之外,许多数据库产品还提供了过程语言扩展(Procedural Language),例如控制流结构(if else、while、for 等)。
产品 | 扩展 | 描述 |
---|---|---|
SQL标准 | SQL/PSM | SQL/持久存储模块 |
Oracle | PL/SQL | 过程语言/SQL |
MySQL | SQL/PSM | SQL/持久存储模块 |
SQL Server | T-SQL | Transact-SQL |
PostgreSQL | PL/pgSQL | 过程语言/PosgtreSQL |
Db2 | SQL PL | SQL过程语言 |
SQLite | N/A | 不支持 |
SQL 编程规范
如果企业拥有自己的编程规范,和它保持一致即可;如果没有,往下看。
推荐一本书,《Joe Celko’s SQL Programming Style》,中文版名为《SQL 编程风格》。
推荐一篇文章,SQL 样式指南。
人生本来短暂,你又何必匆匆!点个赞再走吧!