签到成功

知道了

CNDBA社区CNDBA社区

SQL 标准 简介

2021-08-31 09:29 1353 0 转载 sql开发
作者: dave

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的手册而来的。Oracle在1979年率先推出了支持SQL的商用产品。随着数据库技术和应用的发展,为不同RDBMS提供一致的语言成了一种现实需要。

对SQL标准影响最大的机构自然是那些著名的数据库产商,而具体的制订者则是一些非营利机构,例如国际标准化组织ISO、美国国家标准委员会ANSI等。各国通常会按照 ISO标准和ANSI标准(这两个机构的很多标准是差不多等同的)制定自己的国家标准。

中国是ISO标准委员会的成员国,也经常翻译一些国际标准对应的中文版。标准为了避免采用具体产品的术语,往往会抽象出很多名词,从而增加了阅读和理解的难度,翻译成中文之后更容易词不达意。对于数据库系统实现者和用户而言,很多时候还不如直接读英文版本为好。

下面是SQL发展的简要历史:http://www.cndba.cn/dave/article/4695

  • 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年问题。http://www.cndba.cn/dave/article/4695

SQL86大概只有几十页,SQL92正文大约有500页,而SQL99则超过了1000页。可以看出,从SQL99开始,SQL标准的个头就非常庞大了,内容包罗万象,已经没有人能够掌握标准的所有内容了。

http://www.cndba.cn/dave/article/4695

以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)http://www.cndba.cn/dave/article/4695http://www.cndba.cn/dave/article/4695http://www.cndba.cn/dave/article/4695

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

如果要了解标准的内容,比较推荐的方法是泛读SQL92(因为它涉及了SQL最基础和最核心的一些内容),然后增量式的阅读其他标准。标准在每次更新的时候,委员会的成员们都为大家提供比较好的介绍文档。

例如针对最新的SQL:2011, SIGMODRecord上就有很不错的介绍:

http://www.cndba.cn/dave/article/4695

http://www.sigmod.org/publications/sigmod-record/1203/pdfs/10.industry.zemke.pdf

最后再简要介绍一下SQL标准的符合程度。绝大多数人提起SQL标准,涉及的内容其实是SQL92里头最基本或者说最核心的一部分。SQL92本身是分级的,包括入门级、过度级、中间级和完全级。http://www.cndba.cn/dave/article/4695

为了验证具体的产品对标准的遵从程度,NIST还曾经专门发起了一个项目,来做标准符合程度的测试集合:

http://itl.nist.gov/div897/ctg/sql_form.htmhttp://www.cndba.cn/dave/article/4695

不过,SQL标准包含的内容实在太多了,而且有很多特性对新的SQL产品而言也越来越不重要了。从SQL99之后,标准中符合程度的定义就不再分级,而是改成了核心兼容性和特性兼容性;也没有机构来推出权威的SQL标准符合程度的测试认证了。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 547
    转载
  • 186
    评论
  • 访问:6655755次
  • 积分:4249
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ