SQL的发展史

在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语言的数据库中差别并不大,所以数据库开发人员在跨越不同的数据库产品时,一般不会遇到什么障碍。但是对于数据库管理员来说,则需要面对很多挑战,不同数据库产品在管理、维护和性能调整方面区别很大。

时间: 2024-08-24 05:56:02

SQL的发展史的相关文章

SQL -结构化查询语言的发展史

DDL:数据操作语言INSERTDELETESELECTUPDATEDML:数据定义语言CREATEDROPALTERDCL:数据控制语言GRANTREVOKE RDB对象:库.表.索引.视图.用户.存储过程.存储函数.触发器.事件调度器. 约束: 域约束:数据类型约束 外键约束:引用完整性约束 主键约束:某字段能唯一标识此字段所属的实体,并且不允许为空一张表中可以有多个 检查性约束:age:int 关系型数据库:表示层:表逻辑层:存储引擎物理层:数据文件 数据存储和查询 存储管理器: 权限机完

SQL Server学习记录Day1

最近在学习SQL Server 数据库,用的版本是2008 R2的版本,如下图所示,本人学习时间不长,写这篇文章一是为了锻炼自己加深印象,二也可以与和诸多朋友进行交流以及得到大家的指教. 安装教程网上有很多,可以自行去搜索,但是安装时有一些小细节,在安装到实例配置的时候,如果没有安装过其它版本的SQL SERVER,请选择默认实例,如果有安装过,则手工指定实例.如果一台电脑安装了多个实例的SQL SERVER,每个实例的端口是不一样的,当在软件中设置服务器连接地址时需要注意,例如:192.168

《尽在双11》:阿里软件架构发展史。5星。

本书是阿里各技术团队对本部门的价格发展史的概括.前半部写的非常好,比较少的篇幅说明白了阿里面对的业务与技术的挑战尤其是双11带来的巨大的挑战,和阿里技术团队的应对经过.后面是一些相对外围的系统的介绍,偏简单.前半部分我给5星,后半部分3星.总体依旧是5星. 以下是书中一些信息的摘抄.#后面是kindle电子书的页码: 1:2009年我们技术部门只有几个人临时安排值班,高峰每秒只有400个请求,到2016年阿里有23个事业单位.几千位技术人员一起加入了双11的备战.杭州西溪园区1号楼的7楼.6楼和

PHP的发展史,功能与特点

web1.0时代:所有的代码都是在浏览器端执行的静态脚本,用户请求的也都是服务器上事先已经存在的静态网页,用户和服务器之间不能进行任何的交互!(不需要数据库的支持) web2.0时代:用户和服务器之间实现交互(对话),PHP脚本需要和数据库进行交互,能够处理用户的相关的复杂的业务逻辑,以后的网页将越来越"软件化" web3.0时代:物联网.云计算和大数据的时代 PHP的发展史 PHP的原始含义:Personal Home Page  个人主页 最开始是加拿大的一哥们,开发了一个在线脚本

【JDBC发展史】从JDBC1.0到JDBC4.0

JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口).它由一些Java语言编写的类和界面组成.JDBC为数据库应用开发人员.数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序. 本文介绍了JDBC1.0--JDBC4.0的发展史,并带有少量的编程. 一.ODBC到JDBC的发展历程 说到JDBC,很容易让人联想到另一个十分熟悉的字眼"ODBC".它

mysql笔记1_数据库发展史

数据库发展史 萌芽阶段--文件系统 初级阶段--第一代数据库:网状模型.层次模型的数据库. 中级阶段--第二代数据库:关系型数据库和结构化查询语句. 高级阶段--第三代数据库:“关系-对象”型数据库. 数据库管理系统(DBMS) SQL(Strutured Query Language)结构化查询语言 DDL(Data Definition Language)数据定义语言 DML(Data Management Language)数据操作语言.mysql自动提交(auto commit),Ora

SQL Server 数据库简介

使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速,方便地管理数据.数据库具有以下特点: 1.可以结构化存储大量的数据信息,方便用户进行有效的检索和访问. 2.可以有效地保持数据信息的一致性.完整性,降低数据冗余. 3.可以满足应用的共享和安全方面的要求. 数据库的基本概念: 1.数据:描述事物的符号记录成为数据(Data)包括数字.文字.图形.图像.声音.档案记录等都是数据.数据以"记录"形式按统一的格式进行存储的. 2.数据库和数据库表:表是用来存储具体数据的,数据库就是表

简述SQL结构化查询语言

SQL(Structure Query Language结构化查询语言) 一.使用数据库(DataBase)的必要性 可以结构化的存储大量的数据信息,方便用户有效的检索和访问 有效的保持数据的一致性.完整性.降低数据冗余 满足应用的共享和安全方面 二.Database基本概念 1.数据 描述事物的符号记录称为data.(在database中data是以"记录record"形式按统一的格式进行存储的,相同格式和type的data统一放在一起.) 2.Database和database t

1.C#语言发展史

1.C#语言发展史 本部分简单介绍从C#1到C#5各个版本的语言新特性, 1.简单的数据类型 我们先使用C#1编写一个Product类,如下图所示 C#2 中的强类型集合(泛型) C#3 自动实现属性和简化初始化 C#4 命名参数 以上就是Product类从C#1到C#4的演变历程总结如下: 2.排序和过滤 排序功能 下面我们将使用按名称对Product对象进行排序,来展示对排序的改进. C#1中的排序 C#2 中的排序(引入了泛型) C# 3中的排序(Lambda表达式) 下面总结一下在排序的