sql难不难是用来干什么的?春眠不觉晓,SQL知多少

人气:195 ℃/2024-11-26 08:33:39

作者 | 董旭阳TonyDong

责编 | 伍杏玲

出品 | CSDN博客

封图 | CSDN付费下载于视觉中国

SQL 的诞生

一九七零年,那是一个夏天。

有一位来自 IBM 圣约瑟研究实验室的高级研究员 Edgar Frank Codd 在 Communications of ACM 上发表了名为《A Relational Model of Data for Large Shared Data Banks》的文章,从而创建了关系数据模型。时至今日,基于该模型的关系数据库仍然是数据库领域的主流;数据库排名网站 DB-Engines 给出了各类数据库的排名。

Codd 也因此在 1981 年获得了计算机领域最高奖图灵奖,被人们称为关系数据库之父。

1974 年,同样是来自 IBM 的 Donald D. Chamberlin 和 Raymond F. Boyce 基于关系模型开发了 SQL 的初始版本:SEQUEL(Structured English Query Language)。SEQUEL 被设计用于 IBM 最初的准关系数据库管理系统 SystemR。IBM 随后基于其 SystemR 原型开发商业产品,分别于 1979 年、1981 年和 1983 年上市了 system/38、SQL/DS 和 DB2 数据库管理系统。

不过早在 1979 年 6 月,Relational Software,Inc.(现在的 Oracle 公司)发现了关系模型的潜力,开发出了第一个商用 SQL 实现:Oracle V2(Version2)。随着收购开源数据库 MySQL,Oracle 公司已经牢牢占据了数据库市场的领先地位,同时也导致了 MariaDB 分支的出现。

SQL 是关系模式的第一个商业实现,同时也是最成功的一个实现。SQL 是使用最广泛的数据库查询语言。

SQL 标准化

时间来到了 1986 年,美国国家标准学会(ANSI)首先发布了 SQL 标准;随后 ISO 标准组织于 1987 年创建了“数据库语言 SQL”标准。在经历了 1989、1992、1996、1999、2003、2006、2008、2011、2016 以及 2019 年的多次修订之后,如今的 SQL 标准包含了大量的功能,内容多达数千页。

目前,ISO 组织正则定制第 16 部分,属性图查询(SQL/PGQ)。此前,Neo4j 于 2019 年 9 月 17 宣布图形查询语言(GQL)成为了继 SQL 之后另一种新的 ISO 标准数据库查询语言。

新的第 16 部分(SQL/PGQ)主要是为了在 SQL 中直接提供一些 GQL 功能。

SQL:2019

目前最新的 SQL 标准是 SQL:2019,增加了第 15 部分:ISO/IEC 9075-15:2019 多维数组(SQL/MDA)。SQL/MDA 允许存储、访问和处理规模的多维数组,例如 N 通道的卫星图像。这意味着 SQL 现在可以解码图像,并且通过像素坐标直接访问和处理图像区域。

以下是当前 SQL 标准的组成部分,其中有一些编号被弃用:

ISO 组织提供了一些相关的技术报告:

https://standards.iso.org/ittf/PubliclyAvailableStandards/

SQL:2016

SQL:2016 增加了 44 个可选的新特性,其中 22 个与 JSON 功能相关,10 多个与多态表函数相关。

这篇文章详细介绍了 SQL:2016 的新功能:https://modern-sql.com/blog/2017-06/whats-new-in-sql-2016

SQL:2011

SQL:2011 最主要的新功能之一就是增强了对时态数据库的支持,具体包括:

这篇文章介绍了 SQL:2011 的新特性:

https://sigmodrecord.org/publications/sigmodRecord/1203/pdfs/10.industry.zemke.pdf

这个网站可以下载一些 SQL 标准草稿文件:https://www.wiscorp.com/SQLStandards.html

这里是一篇关于时态数据库的论文:

https://sigmodrecord.org/publications/sigmodRecord/1209/pdfs/07.industry.kulkarni.pdf

SQL:2008

SQL:2008 新增的功能主要包括:

SQL:2006

SQL:2006 定义了 SQL 操作 XML 的方式。它定义了在 SQL 数据库中导入和存储 XML 数据、在数据库中操作 XML 数据,以及以 XML 形式发布 XML 和常规 SQL 数据的方法。此外,它还允许应用程序将查询与 XQuery 集成到 SQL 代码中,以便同时访问 SQL 数据和 XML 文档。

SQL:2003

SQL:2003 标准引入的新功能主要包括:

这里是一些关于 SQL:2003 标准的文档:http://www.wiscorp.com/sql_2003_standard.zip

SQL:1999

SQL:1999 增加了大量的新功能,并且将 SQL 标准分为了几个部分。

这个网站提供了完整的 SQL:1999 教程:https://crate.io/docs/sql-99/en/latest//index.html

SQL-92

SQL-92 主要的新增功能包括:

随后,SQL 标准发布了两个重要的扩展:

这里是一篇 SQL-92 标准的原文:http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt

语言特性

SQL(Structured Query Language)是用于管理关系型数据库或者关系型数据流管理系统的专用语言。SQL 是一种声明式的语言,类似于英语。以下是一个查询语句:

-- 注释:查询员工信息

SELECT emp_name, sex, salary * 12

FROM employee

WHERE emp_id = 1;

SQL 语句由几个部分组成:

另外,SQL 中一些具有固定意义的单词被称为关键字,例如 SELECT、CREATE、BEGIN 等。关键字一般大写。

SQL 基于关系代数与元组关系演算,表和查询结果都是由行(元组)的组成的集合;不同之处在于 SQL中的相同行可以出现多次,并且可以指定查询结果的顺序(ORDER BY)。

语句分类

SQL 提供的主要功能包括:数据定义、数据操作、数据查询以及数据访问控制等。

除了这些声明式的语句之外,SQL 也定义了过程语言的扩展(SQL/PSM),也就是存储过程。

SQL 实现

基于以上 SQL 标准,许多厂商和组织实现了自己的数据库产品。常见的数据库产品包括:

虽然这些数据库大部分的 SQL 语句相同,但是它们都提供了自己的扩展语法和功能;因此,我们通常不能直接将一种数据库中的代码迁移到另一种数据库,需要进行一些代码修改。

除此之外,这些数据库还实现了自己的存储过程,增加了一些编程元素。例如变量定义、控制流语句、异常处理等。

这篇文章列出了 11 种常见数据库对于 SQL 的功能实现和示例,包括 Oracle、PostgreSQL、SQL Server、IBM DB2、MySQL、MariaDB、Firebird、H2、HSQLDB、Derby 以及 SQLite:

https://www.sql-workbench.eu/dbms_comparison.html

NewSQL

除了基于关系模型的传统数据库之外,市场上还出现了许多 NoSQL 数据库。例如 MongoDB、Redis、Apache Cassandra 等。NoSQL 数据库提供了更高的可用性和可扩展性,通过放弃强一致性大幅提升性能,并且没有固定模式的限制。

但是由于 NoSQL 数据库不支持事务的强一致性(ACID),无法适应业务关键性的应用;而且NoSQL 数据库不提供 SQL 接口,各种系统使用自己的实现。

因此,出现了一种新型的数据库 NewSQL。简单来说,NewSQL = SQL NoSQL 。NewSQL 即提供了与 NoSQL 相同的可扩展性,也保留了关系数据库的 ACID 事务特性和标准的 SQL 接口。

常见的 NewSQL 产品包括:VoltDB、TiDB、MemSQL。

原文链接:https://blog.csdn.net/horses/article/details/104451843

声明:本文系CSDN博主原创文章,版权归作者所有。

百科

More+
首页/电脑版/网名
© 2026 NiBaKu.Com All Rights Reserved.