在20世纪60年代,网状数据库系统(如CODASYL)和分层数据库系统(如IMS TM)是用于自动化银行业务、记帐和订单处理系统的一流技术,这些系统是由于商业大型计算机的引入才启用的。而SQL是在70年代创建的一种基于关系数据库管理系统(Relational Database Management System,RDBMS)模型的数据查询、操作语言。

1.1 CODASYL

CODASYL是美国数据系统语言协会(Conference on Data System Language)的英文缩写,该协会成立于1957年,主要目的是为了开发一种用于创建商业应用的通用语言。1959年5月28日该协会召开了首次会议,就语言开发进行讨论。这个语言实际上就是Cobol语言。

1963年6月10日,加利福尼亚州的系统开发公司(System Development Corporation)举办了一个题为“基于计算机的数据库开发和管理”(Development and Management of a Computer-centered Data Base)的研讨会,首次提出并定义了数据库(Database)术语,即:一组文件(表)的集合,其中文件是数据项(行)的有序集合,而每个数据项由数据以及一个或多个键组成。

1965年,CODASYL成立了“列表处理任务组”(List Processing Task Force),后更名为“数据库任务组”(Data Base Task Group)。1971年4月任务组发布了一份重要的报告,报告概述了网状数据模型,被称为CODASYL或DBTG(即Data Base Task Group的缩写)数据模型。这个模型定义了数据库的几个关键概念,包括定义模式的语法、定义子模式的语法和数据操作语言。

1.2 IMS

IMS是信息管理系统(Information Management System)的英文缩写,是IBM公司的产品,这是一款分层数据库管理和事务处理系统。

IMS最初的开发目的是为了支持美国的阿波罗太空计划。1966年,IBM公司的12名成员、美国洛克维尔公司(American Rockwell)的10名成员和卡特彼勒公司(Caterpillar Tractor)的3名成员被集合起来,开始开发信息控制系统(Information Control System,ICS)和数据语言/接口(Data Language/Interface,DL/I),用于辅助跟踪建造太空船所需要的材料。其中,ICS部分是用于存储和获取数据的数据库部分,而DL/I部分则是用来与之交互的查询语言。

在开发过程中,IBM小组转移到加利福尼亚州南部的洛杉矶,并增加至21名开发人员。1967年,IBM团队完成了ICS的第一个版本。1968年4月开始进行安装测试。1968年8月14日,第一个安装成功信息显示在美国国家航空航天局洛克维尔部门的IBM 2740打印机终端上。

1969年,ICS被更名为信息管理系统,即IMS。自第一个版本问世以来,IBM一直在不断开发和完善IMS的功能。2007年,IBM推出了IMS 10版本。IMS 10具备了增强的XML和网络服务功能,并且也是第一个将标准XML查询语言应用于层次结构化数据的数据库系统。

1.3 RDBMS和SQL

无论CODASYL,还是IMS,虽然这些系统为早期系统提供了良好的基础,但它们的基本体系结构将数据的物理操作与逻辑操作混合在一起。当数据的物理位置改变时,也必须更新应用程序来引用新的位置,给数据查询带来了不便。

SQL是一种关系型数据库查询语言,要介绍SQL的起源,就不得不介绍IBM公司的两个重量级人物—E.F. Codd博士和Don Chamberlin博士。E. F. Codd博士最早提出了关系数据库管理系统(Relational Database Management System,RDBMS)模型,而Don Chamberlin博士则是SQL和XQuery语言的主要创造者之一。他们对数据库的变革起到了革命性的作用。

Don Chamberlin最初在IBM的T.J.Watson研究中心(http://www.watson.ibm.com/)工作,当时该中心的主要研究方向是操作系统。Chamberlin一开始从事的项目是System A,但项目很快变以失败而告终。当时担任项目经理的Leonard Liu(现为Augmentum 公司CEO,http://www.augmentum.com)很有远见地预见到数据库的美好前景,他转变了整个小组的研究方向。Chamberlin因此在数据库软件和查询语言方面进行了大量研究,并成为了小组中最好的网状数据库 CODASYL专家。

此时的E. F. Codd博士在IBM的San Jose研究中心(即现在的Almaden研究中心,http://www.almaden.ibm.com/)工作,1970年6月,他发表了里程碑性的论文《大型共享数据库数据的关系模型》,确立了关系数据库的概念。但是,由于IBM正在从事IMS的开发,这种思想对IBM本身产品造成了威胁,所以公司内部最初持压制态度。当然这也与Codd采用了大量的数学方法,不容易理解有关。

1973年,IBM在外部竞争压力下,开始加强在关系数据库方面的投入。Chamberlin被调到San Jose研究中心,加入新成立的项目System R。System R基于Codd提出的关系数据库管理系统模型。

System R项目包括研究高层的关系数据系统(Relational Data System,RDS)和研究底层的存储系统(Research Storage System,RSS)两个小组,Chamberlin担任RDS组的经理。RDS实际上就是一个数据库语言编译器,由于Codd提出的关系代数和关系演算过于数学化,影响了易用性。于是Chamberlin选择了自然语言作为研究方向,其结果就是诞生了结构化英语查询语言(Structured English Query Language,SEQUEL)。后来,由于商标之争,SEQUEL更名为SQL。

System R是一个具有开创性意义的项目。它第一次实现了结构化查询语言,并具以成为标准的关系数据查询语言。同时,它也是第一个证明了关系数据库管理系统可以提供良好事务处理性能的系统。System R系统中的设计决策,以及一些基本算法选择(如查询优化中的动态编程算法)对以后的关系系统都产生了积极影响。

System R本身作为原型虽然并未问世,但鉴于其影响,计算机协会(Association for Computing Machinery ,ACM,http://www.acm.org/)还是把1988年的 “软件系统奖”授予了System R开发小组。

1.4 ANSI和Transact-SQL

ANSI是美国国家标准学会(American National Standards Institute)的英文简称,成立于1918年。当时,美国的许多企业和专业技术团体,已开始了标准化工作,但因彼此间没有协调,存在不少矛盾和问题。为了进一步提高效率,数百个科技学会、协会组织和团体,均认为有必要成立一个专门的标准化机构,并制订统一的通用标准。1918年,美国材料试验协会(ASTM)、美国机械工程师协会(ASME)、美国矿业与冶金工程师协会(ASMME)、美国土木工程师协会(ASCE)和美国电气工程师协会(AIEE)等组织,共同成立了美国工程标准委员会(AESC)。美国政府的商务部、陆军部和海军部也参与了该委员会的筹备工作。1928年,美国工程标准委员会改组为美国标准协会(ASA)。为致力于国际标准化事业和消费品方面的标准化,1966年8月,又改组为美利坚合众国标准学会(USASI)。1969年10月6日改成现名:美国国家标准学会(ANSI)。

虽然IBM首创了关系数据库理论,但Oracle却是第一家在市场上推出了这套技术的公司。随着时间的推移,SQL的简洁、直观,在市场上获得了的不错反响,从而引起了ANSI的关注,分别在1986年、1989年、1992年、1999年及2003年发布了SQL标准。SQL Server 2000遵循ANSI SQL:1992标准,而SQL Server 2005和2008还实现了ANSI SQL:1999和ANSI SQL:2003中的一些重要特性。

数据库生产商在遵循ANSI标准的同时,也会根据自己产品的特点对SQL进行了一些改进和增强,于是也就有了SQL Server的Transact-SQL、Oracle的PL/SQL等语言。在学习Transact-SQL语言时,没有必要刻意关心哪些语句或关键字是SQL标准,哪些是Transact-SQL的扩展。事实上,常见的数据库操作,在绝大多数支持SQL语言的数据库中差别并不大,所以数据库开发人员在跨越不同的数据库产品时,一般不会遇到什么障碍。但是对于数据库管理员来说,则需要面对很多挑战,不同数据库产品在管理、维护和性能调整方面区别很大。

SQL的发展史的更多相关文章

  1. SQL Server2008 安装及概述

    最近在学习SQL Server 数据库,用的版本是2008 R2的版本,如下图所示,本人学习时间不长,写这篇文章一是为了锻炼自己加深印象,二也可以与和诸多朋友进行交流以及得到大家的指教. 安装教程网上 ...

  2. SQL server2005学习笔记(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

  3. SQL server学习(一)数据库的基本知识、基本操作(分离、脱机、收缩、备份、还原、附加)和基本语法

    在软件测试中,数据库是必备知识,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数据库脱机.联机操作 数据库收缩操作 ...

  4. python 面向对象设计思想发展史

    这篇主要说的是程序设计思想发展历史,分为概述和详细发展历史 一,概述 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的 指令和数 据.简单来 ...

  5. 以慕课网日志分析为例-进入大数据Spark SQL的世界

    下载地址.请联系群主 第1章 初探大数据 本章将介绍为什么要学习大数据.如何学好大数据.如何快速转型大数据岗位.本项目实战课程的内容安排.本项目实战课程的前置内容介绍.开发环境介绍.同时为大家介绍项目 ...

  6. SQL server学习(一)数据库的基本知识、基本操作和基本语法

    在软件测试中,数据库是必备知识,假期闲里偷忙,整理了一点学习笔记,共同探讨. 阅读目录 基本知识 数据库发展史 数据库名词 SQL组成 基本操作 登录数据库操作 数据库远程连接操作 数据库分离操作 数 ...

  7. Atitit gui界面ui技术发展史与未来趋势

    Atitit gui界面ui技术发展史与未来趋势 1. Gui技术的发展,从像素自绘到native控件体系,再到dsl h51 1.1. 编程语言的发展 从机器语言,汇编语言到本地native语言(c ...

  8. 以某课网日志分析为例 进入大数据 Spark SQL 的世界

    第1章 初探大数据 本章将介绍为什么要学习大数据.如何学好大数据.如何快速转型大数据岗位.本项目实战课程的内容安排.本项目实战课程的前置内容介绍.开发环境介绍.同时为大家介绍项目中涉及的Hadoop. ...

  9. PHP的发展史,功能与特点

    web1.0时代:所有的代码都是在浏览器端执行的静态脚本,用户请求的也都是服务器上事先已经存在的静态网页,用户和服务器之间不能进行任何的交互!(不需要数据库的支持) web2.0时代:用户和服务器之间 ...

随机推荐

  1. centos安装教程

      centos7和6.x有很大的差别,在第一次安装的时候遇到了很多坑,一共安装了三次才成功 如果是用window自带的Hyper-v装centos时 安装包在\\10.10.10.1\ShareDo ...

  2. nginx之 nginx-1.9.7 编译安装、理论简介

    nginx是一个web网站常用的高性能http和反向代理服务器,其具有较好的并发能力,被网易.百度.腾讯.新浪等网站广泛使用. 一. 理论简介 1.首先弄清楚正向代理和反向代理 正向代理:代理客户端, ...

  3. 六、Jmeter后置处理器JSON Extractor

    一.当接口返回是JSON格式的时候,就可以用JSON Extractor来抓取返回的值,用来关联或者断言. 1.首先,到V2EX中找一个接口,地址为:https://www.v2ex.com/p/7v ...

  4. MySQL 使用pt-table-checksum 检查主从数据一致性 (实例转)

    1.基本环境: Mysql版本:5.6.12-log Percona-toolkit:2.2.18 Linux:centos6.5 2.安装 源码安装: # 一些依赖包 yum install per ...

  5. MQTT协议通俗讲解

    参考 Reference v3.1.1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy(基于JDK) Chrome插件 MQTT ...

  6. Extjs5.0 学习之路【结构篇】

    Extjs5.0在原有的MVC模式下增加了一个MVVM Extjs5.0项目文件执行顺序. 新增特性一  bind---data

  7. GWT 中实现“CSS Sprite”

    近段时间在弄GWT这一块,开发中遇到的一些不错的方法或者技巧,在此做个分享和记录,有不同见解可发表意见  互相切磋. 在web开发中,必然涉及到网页中的图片,本地浏览网页,要下载在服务器端的图片,然后 ...

  8. (转)C# -- 扩展方法的应用(Extension Methods)

    本文转载自:http://blog.csdn.net/zxz414644665/article/details/9793205 当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添 ...

  9. ZOJ 4016 Mergeable Stack(栈的数组实现)

    Mergeable Stack Time Limit: 2 Seconds      Memory Limit: 65536 KB Given  initially empty stacks, the ...

  10. Rozor视图(c#代码与html混合编程原则)

    (1)大括号的匹配原则(就近原则){} (2)html标签有截断c#代码的功能 @*服务器端的注释*@    <!--客户端注释-->