您现在的位置:e-works > 智造书屋 > 书籍列表 > 大话数据库 > SQL标准

第一章 概述

第八节 SQL标准

    小天:也是哦,那你上面说“具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口”,可这个SQL语言总得有个标准规范,所有数据库厂商都去遵守吧?

    老田:说你看书不认真,你还真是。上面不就说到ANSI SQL标准吗?这个标准是ISO和IEC发布的SQL国际标准,在1992年制定了一个标志性的版本,称为SQL-92。1999年,再次修订。目前最新的版本是SQL-2008,而这期间还有SQL-2003、SQL-2006。从SQL-99到SQL-2008,可以看到标准修订的周期越来越短,多少也反映了对技术的需求变化之快。当然,这些事并不是我们这种浅层次应用的菜鸟需要担忧的,因为国际标准出来, MS Access、DB2、Informix、MySQL、MS SQL Server、Oracle、Sybase等都必须去遵循。另外,从SQL-99的改进,主要是针对XML、Window函数、Merge语句等,特别是对XML的增强。对于基本的数据定义和操作语言并有更多的修正,所以目前大部分的数据书籍更多还是重点在ANSI SQL的标准范畴内。

    注:美国国家标准局(American National Standards Institute,ANSI)与国际标准化组织(International Organization for Standardization,ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通信标准。ANSI同时也是ISO和IEC(International Electrotechnical Commission)的成员之一。

    小天:SQL标准是不是就像中国的普通话一样,是一个大家都遵从的执行标准?

    老田:是的,简而言之,1992年标准就是一个所有关系数据库都遵从的数据操作语言标准。1974年,IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL语言。SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。SQL集成实现了数据库生命周期中的全部操作。

    小天:这么说来,只要我学习一种遵从ANSI SQL标准的SQL语言就可以在所有流行的关系型数据库中都适用?

    老田:是这么个理,但并不完全,不同的数据库语言之间确实有一些细节的差异。除了SQL标准之外,大部分SQL数据库程序都拥有它们自己的私有扩展。当然,纯粹的数据查询、增加、删除、修改是一致的,主要在控制语言、附加语言元素等方面有一些差异,这也是为什么前面我多次提到,作为一个程序员来说,学什么数据库对后面影响都不大,但要做DBA(数据库管理员)就必须选择你对口的数据了。