SQL标准简介

按:这是基于我很早以前写的几篇短文重新整理的。

  SQL是Structured Query Language的缩写,它的前身是著名的关系数据库原型系统System
R所采用的SEQUEL语言。作为一种访问关系型数据库的标准语言,SQL自问世以来得到了广泛的应用,不仅是著名的大型商用数据库产品Oracle、DB2、Sybase、SQL
Server支持它,很多开源的数据库产品如PostgreSQL、MySQL也支持它,甚至一些小型的产品如Access也支持SQL。近些年蓬勃发展的NoSQL系统最初是宣称不再需要SQL的,后来也不得不修正为Not
Only SQL,来拥抱SQL。

  蓝色巨人IBM对关系数据库以及SQL语言的形成和规范化产生了重大的影响,第一个版本的SQL标准SQL86就是基于System
R的手册而来的。可惜IBM起先并没有什么产品化的想法,倒是Oracle在1979年率先推出了支持SQL的商用产品。随着数据库技术和应用的发展,为各种不同的关系数据库系统提供一致的语言成了一种现实需要。

  对SQL标准影响最大的机构自然是那些著名的数据库产商,而具体的制订者则是一些非营利机构,例如国际标准化组织ISO、美国国家标准委员会ANSI等。各国通常会按照
ISO标准和ANSI标准(这两个机构的很多标准是差不多等同的)制定自己的国家标准。中国是ISO标准委员会的成员国,也经常翻译一些国际标准对应的中文版。标准为了避免采用具体产品的术语,往往会抽象出很多名词,从而增加了阅读和理解的难度,翻译成中文之后更容易词不达意。对于数据库系统实现者和用户而言,很多时候还不如直接读英文版本为好。虽然正式的标准不像RFC那样可以从网络上免费获得,标准草案还是比较容易找到的(例如:http://www.jtc1sc32.org/doc/)。待批准的标准草案和最终的标准也没有什么实质上的区别,能够满足日常工作的需要。

  下面是SQL发展的简要历史:

1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86

1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89

1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)

1999年,ISO/IEC 9075:1999,SQL:1999(SQL3)

2003年,ISO/IEC 9075:2003,SQL:2003

2008年,ISO/IEC 9075:2008,SQL:2008

2011年,ISO/IEC 9075:2011,SQL:2011

  细心的读者能发现,从SQL:1999开始,标准简称中的短横线(-)被换成了冒号(:),而且标准制定的年份也改用四位数字了。前一个修改的原因是ISO标准习惯上采用冒号,ANSI标准则一直采用短横线。后一个修改的原因是标准的命名也遇到了2000年问题。

  SQL86大概只有几十页,SQL92正文大约有500页,而SQL99则超过了1000页。可以看出,从SQL99开始,SQL标准的个头就非常庞大了,内容包罗万象,已经没有人能够掌握标准的所有内容了。以SQL:2003为例,它包括以下9个部分(中间编号空缺是曾经被占用,之后被废弃的标准造成的):

ISO/IEC9075-1: Framework (SQL/Framework)

ISO/IEC 9075-2: Foundation (SQL/Foundation)

ISO/IEC 9075-3: Call Level Interface (SQL/CLI)

ISO/IEC 9075-4: Persistent Stored Modules (SQL/PSM)

ISO/IEC 9075-9: Management of External Data (SQL/MED)

ISO/IEC 9075-10: Object Language Bindings (SQL/OLB)

ISO/IEC 9075-11: Information and Definition Schemas (SQL/Schemata)

ISO/IEC 9075-13: Java Routines and Types Using the Java Programming Language(SQL/JRT)

ISO/IEC 9075-14: XML-Related Specifications (SQL/XML)

负责具体制定工作的是ISO和IEC联合成立的一个技术委员会JTC1/SC32。正因为关系数据库市场非常成熟,竞争不够激烈,标准本身变得过于庞大等原因,SQL3制定的周期很长,制定期间也存在很多争议。例如文章《Is
SQL a Real Standard Anymore?》对SQL标准化进程提出了置疑。

  如果要了解标准的内容,比较推荐的方法是泛读SQL92(因为它涉及了SQL最基础和最核心的一些内容),然后增量式的阅读其他标准。标准在每次更新的时候,委员会的成员们都为大家提供比较好的介绍文档。例如针对最新的SQL:2011,SIGMODRecord上就有很不错的介绍:http://www.sigmod.org/publications/sigmod-record/1203/pdfs/10.industry.zemke.pdf

  最后再简要介绍一下SQL标准的符合程度。绝大多数人提起SQL标准,涉及的内容其实是SQL92里头最基本或者说最核心的一部分。SQL92本身是分级的,包括入门级、过度级、中间级和完全级。为了验证具体的产品对标准的遵从程度,NIST还曾经专门发起了一个项目,来做标准符合程度的测试集合:http://itl.nist.gov/div897/ctg/sql_form.htm。不过,SQL标准包含的内容实在太多了,而且有很多特性对新的SQL产品而言也越来越不重要了。从SQL99之后,标准中符合程度的定义就不再分级,而是改成了核心兼容性和特性兼容性;也没有机构来推出权威的SQL标准符合程度的测试认证了。

时间: 2024-10-25 22:05:43

SQL标准简介的相关文章

[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) ——通过知识共享树立个人品牌. 继上六篇: [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程之四:把游标说透(

Mysql SQL Mode简介

MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这类模式定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查.这样,就能在众多不同的环境下.与其他数据库服务器一起更容易地使用MySQL.可以使用“--sql-mode="modes"”选项,通过启动mysqld来设置默认的SQL模式.从MySQL 4.1开始,也能在启动之后,使用SET [SESSION|GLOBAL]

dicom通讯的工作方式及dicom标准简介

转自:http://www.cnblogs.com/assassinx/p/3223460.html 本文主要讲述dicom标准及dicom通讯的工作方式.dicom全称医学数字图像与通讯 其实嘛就两个方面 那就是“存储”跟“通讯”. 文件数据组织方式  网络数据组织方式.文件数据组织方式就是解析静态的dicom文件 在 <dicom格式文件解析器>一文中已经阐述过了 就不再说了.网络数据组织方式 简而言之就是各种协议 命令控制 数据序列化.那么这一章中我们将会讲他,但是进行实际操作将在后面几

SQL Standard Based Hive Authorization(基于SQL标准的Hive授权)

说明:该文档翻译/整理于Hive官方文档https://cwiki.apache.org/confluence/display/Hive/SQL+Standard+Based+Hive+Authorization#SQLStandardBasedHiveAuthorization-ObjectPrivilegeCommands. Hive 0.13版本之前的授权现状   Hive默认授权(Default Hive Authorization (Legacy Mode)) 设计目的并不是为了防止恶

PL/SQL 程序设计简介

 ①PL/SQL 程序设计简介 PL/SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中, 所以PL/SQL代码可以对数据进行快速高效的处理 在PL/SQL中可以使用的SQL语句有: INSERT,UPDATE,DELETE,SELECT -INTO,COMMIT,ROLLBACK,SAVEPOINT. 提示:在PL/SQL中只能用SQL语句中的DML 部分,不能用DDL 部分,如果要在PL/SQL中使用DDL(如CRE

SQL语句简介及练习

SQL语言的兴起与语法标准 20世纪70年代,IBM开发出SQL,用于DB2 1981年,IBM推出SQL/DS数据库 业内标准微软和Sybase的T-SQL,Oracle的PL/SQL SQL作为关系型数据库所使用的标准语言,最初是基于IBM的实现在1986年被批准的.1987年,"国际标准化组织(ISO)"把ANSI(美国国家标准化组织) SQL作为国际标准. SQL:ANSI SQL SQL-86, SQL-89, SQL-92, SQL-99, SQL-03 SQL语言规范 在

SQL SERVER 简介及应用 - 数据库系统原理

SQL SERVER 是一个分布式的关系型数据库管理系统(RDBMS),具有客户 - 服务器体系结构,一般发行的版本有企业版.标准版.个人版.开发版. SQL SERVER 提供的服务 MS SQL Server:运行 SQL Server 的服务. SQL Server Agent:管理 SQL Server 周期性行为的安排,并在发生错误时通知系统管理员. Microsoft Server Service:提供一个全文本索引和搜索引擎. MS DTC:管理包含不同数据源的事务. SQL SE

2015/8/17笔记整理 第12章 PL/SQL编程简介1 块 过程 函数

Oracle数据库中包含一种过程化编程语言PL/SQL,PL/SQL是ORACLE对标准数据库语言的扩展. 一.PL/SQL的优点 PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理PL/SQL程序块.当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的SQL语句执行器处理pl/sql程序块中的SQL语句. PL/SQL语句—

数据库连接池SQL Relay简介

作者:zhanhailiang 日期:2014-12-27 简介 SQLRelay 是一个持久化的数据库连接池,用来为 Unix 或者 Linux 提供数据库连接池.代理以及负载均衡的功能. 曾在2004淘宝架构迁移充当管理Oracle数据库链接的中间件,请见: <淘宝业务发展及技术架构>分享 文字版 <淘宝业务发展及技术架构>分享 PPT版 连接池示意图: 负载均衡示意图: 功能特性 加速数据库驱动的基于 Web 的应用程序 增加 Web 应用程序的可扩展性 分布式的访问复制的数