《SQL入门经典(第5版)》一一1.1 SQL定义及历史

本节书摘来自异步社区出版社《SQL入门经典(第5版)》一书中的第1章,第1.1节,作者:【美】Ryan Stephens , Ron Plew , Arie D.Jones,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 SQL定义及历史

SQL入门经典(第5版)
当今时代的任何事务都涉及数据,人们需要使用某种有组织的方法或机制来管理和检索数据。如果数据被保存在数据库中,这种机制便被称为数据库管理系统(DBMS)。数据库管理系统已经产生多年了,其中大多数源自于大型机上的平面文件系统。随着技术的发展,在不断增长的商业需要、不断增加的共用数据和互联网的推动下,数据库管理系统的使用已经偏离了其原始方向。

信息管理的现代浪潮主要是由关系型数据库管理系统(RDBMS)实现的,后者是从传统DBMS派生出来的。

现代数据库与客户端/服务器或Web技术相结合在当今是很常见的模式,公司使用这些方式来管理数据,从而在相应的市场保持竞争力。很多公司的趋势是从客户端/服务器模式转移到Web模式,从而避免用户在访问重要数据时受到地点的限制。下面几个小节将讨论SQL和关系型数据库,后者是当今最通用的DBMS实现。很好地理解关系型数据库,以及如何在当今信息技术世界利用SQL来管理数据,对于理解SQL语言是十分重要的。

1.1.1 什么是SQL

“结构化查询语言(SQL)”是与关系型数据库进行通信的标准语言,最初是由IBM公司以E.F. Codd博士的论文《A Relational Model of Data for Large Shared Data Banks》为原型开发出来的。在之后不久的1979年,Relational Software公司(后来更名为Oracle公司)发布了第一个SQL产品:ORACLE,现在已经成为关系型数据库技术的领军者。

当我们去别的国家旅行时,需要了解其语言才能更加方便。举例来说,如果服务员只能使用其本国语言,那我们用母语点菜可能就会有麻烦。如果把数据库看作一个要从中进行信息搜索的外国,那么SQL就是我们向数据库表达需求的语言,我们可以利用SQL进行查询,从数据库里获得特定的信息。

1.1.2 什么是ANSI SQL

“美国国家标准化组织(ANSI)”是一个核准多种行业标准的组织。SQL作为关系型数据库所使用的标准语言,最初是基于IBM的实现在1986年被批准的。1987年,“国际标准化组织(ISO)”把ANSI SQL作为国际标准。这个标准在1992年进行了修订(SQL-92),1999年再次修订(SQL-99)。目前最新的标准是2008年7月开始采用的SQL-2008。

1.1.3 新标准:SQL-2008

SQL-2008由9个相关的文档组成,在不远的将来还可能增加其他文档,以扩展标准来适应新出现的技术。

第1部分——SQL/架构:指定实现一致性的一般性需求,定义SQL的基本概念。
第2部分——SQL/基础:定义SQL的语法和操作。
第3部分——SQL/调用级接口:定义程序编程与SQL的接口。
第4部分——SQL/持久存储模块:定义控制结构,进而定义SQL例程。还定义了包含SQL例程的模块。
第9部分——外部数据管理(SQL/MED):定义SQL的扩展,用于通过使用数据包裹支持外部数据管理;还定义了数据链类型。
第10部分——对象语言绑定:定义SQL的扩展,支持把SQL语句内嵌到用Java编写的程序。
第11部分——信息和定义方案:定义信息方案和定义方案的规范,提供与SQL数据相关的结构和安全信息。
第13部分——使用Java编程语言的例程和类型:定义以SQL例程形式调用Java静态例程和类的功能。
第14部分——XML相关规范:定义SQL使用XML的方式。
对于新的ANSI标准(SQL-2008),DBMS声称的兼容有两个级别:核心SQL支持和增强SQL支持。在下面这个网页上可以找到ANSI SQL标准的链接:www.informit.com/title/9780672335419。

ANSI表示“美国国家标准化组织”,负责规划各种产品和概念的标准。

标准显然是有好处的,当然有时也有不足之处。最重要的是,标准指引厂商沿着恰当的开发方向前进。就SQL来说,标准提供了必要基本原则的骨架,从而最终让不同的实现之间保持一致性,更好地实现可移植性(不仅是对于数据库编程,而且是对于数据库整体和管理数据库的个人而言)。

有人认为标准并不是那么好,它限制了灵活性和特定实现的功能。然而,大多数遵循标准的厂商都在特定产品里实现了对标准SQL的增强,从而弥补了这种问题。

综合考虑正反两方面的因素,标准还是好的。标准定义了在任何SQL完整实现中都应该具有的功能,规划的基本概念不仅让各种相互竞争的SQL实现保持一致性,也提高了SQL程序员的价值。

所谓SQL实现是指特定厂商的SQL产品或关系型数据库管理系统。需要说明的是,SQL实现之间的差别是很大的。虽然有些实现的大部分是与ANSI兼容的,但没有任何一种实现完全遵循标准。另外,ANSI标准里为了保持兼容性而必须遵守的功能列表在近些年并没有太大改变,因此,新版本的RDBMS也必将保持与ANSI SQL的兼容性。

1.1.4 什么是数据库

简单来说,数据库就是数据集合。我们可以把数据库看成这样一种有组织的机制:它能够存储信息,用户能够以有效且高效的方式检索其中的信息。

事实上,人们每天都在使用数据库,只是没有察觉到。电话簿就是个数据库,其中的数据包括个人的姓名、地址和电话号码。这些数据是按字母排序或是索引排序的,让用户能够方便地找到特定的本地居民。实际上,这些数据保存在计算机上的某个数据库里。毕竟这些电话簿的每一页都不是手写的,而且每年都会发布一个新版本。

数据库必须被维护。由于居民会搬到其他城市或州,电话簿里的项目就需要删除或添加。类似地,当居民更改姓名、地址、电话号码等信息时,相应的项目也要被修改。图1.1展示了一个简单的数据库。

《SQL入门经典(第5版)》一一1.1 SQL定义及历史

1.1.5 关系型数据库

关系型数据库由被称为表的逻辑单元组成,这些表在数据库内部彼此关联。关系型数据库可以将数据分解为较小的、可管理的逻辑单元,从而在公司这一级别上更易维护,并提供更优化的数据库性能。如图1.2所示,表之间通过共同的关键字(数据值)彼此关联。

《SQL入门经典(第5版)》一一1.1 SQL定义及历史

由于关系型数据库里的表是相互关联的,所以通过一个查询可以获取足够的数据(虽然需要的数据可能处于多个表里)。由于关系型数据库的表之间可以具有共同的关键字或字段,所以多个表里的数据可以结合在一起形成一个数据集。本书后续内容会不断展示关系型数据库的优越之处,包括整体性能和方便的数据访问。

1.1.6 客户端/服务器技术

过去,计算机业由大型机统治着,它们是体积庞大、功能强悍的系统,具有大容量存储和高速数据处理能力。用户通过哑终端与主机通信,所谓哑终端就是没有处理能力的终端,依靠主机的CPU、外设和内存进行工作。每个终端通过一个数据链连接到主机。主机模式能够很好地实现其设计目的,并且在当今很多领域还在发挥作用,但另一种更伟大的技术出现了:客户端/服务器模型。

在客户端/服务器系统里,主机被称为服务器,可以通过网络进行访问(通常是局域网或广域网)。访问服务器的通常是个人计算机(PC)或其他服务器,而不是哑终端。每台个人计算机被称为客户端,通过网络与服务器进行通信。这也就是“客户端/服务器”名称的由来。客户端/服务器模型与主机模型之间最大的差别在于作为客户端的个人计算机能够自己“思考”,能够利用自身的CPU和内存处理数据,并且能够轻松地通过网络访问服务器。在大多数情况下,客户端/服务器模型可以适用于当今全部商业需求。

现代数据库系统位于多种不同的操作系统之上,而这些操作系统又运行在多种不同的计算机上。最常见的操作系统有基于Windows的系统、Linux和像UNIX这样的命令行系统。数据库主要位于客户端/服务器和Web环境里。不能实现数据库系统的主要原因是缺乏培训和经验。对客户端/服务器模型和基于Web的系统的理解已经与互联网技术开发和网络计算一起成为当今商业的强制要求(虽然有时显得不合理)。图1.3展示了客户端/服务器技术的概念。

《SQL入门经典(第5版)》一一1.1 SQL定义及历史

1.1.7 基于Web的数据库系统

商业信息系统正在向Web迁移。现在我们能够通过互联网访问数据库,这意味着使用浏览器(比如IE和Firefox)就能访问公司的信息。顾客(数据的用户)能够定购货物、查看存货、查看订单状态、修改账目、转账等。

顾客只需打开浏览器,访问公司的站点、登录,就可以利用公司页面内置的程序访问数据。大多数公司要求用户注册,并且为顾客提供登录名和密码。

当然,通过浏览器访问数据库的幕后工作并不像看上去这么简单。举例来说,Web程序可以运行SQL,从而访问公司的数据库,向Web服务器返回数据,然后再将数据返回到顾客的浏览器。

从用户的角度来说,基于Web的数据库系统类似于客户端/服务器系统。每个用户拥有一台客户机,安装了浏览器程序,能够连接到互联网。图1.3所示的网络是互联网,这并不是必需的。在大多数情况下,客户机访问服务器是为了获取信息,并不关心服务器是否位于另一个州,甚至是另一个国家。基于Web的数据库系统的主要目的在于利用似乎没有物理界限的数据库系统,提高数据可访问性,扩大公司的客户群。

1.1.8 主流数据库厂商

当今主流数据库厂商包括Oracle、Microsoft、Informix、Sybase和IBM。这些厂商以昂贵的基本许可费用出售各种版本的关系型数据库的闭源版本。其他一些厂商提供SQL数据库(关系型数据库)的开源版本,这些厂商包括MySQL、PostgresSQL和SAP。虽然还有其他很多厂商,但在此列出的这些名称经常会出现在图书、报纸、杂志、股市和互联网上。

每个厂商的SQL实现都是与众不同、独一无二的。数据库服务器就是一个产品——像市场上的其他产品一样,由多个不同的厂商生产。为了实现可移植性和易用性,厂商都保证其实现兼容于当前的ANSI标准。如果一家公司从一个数据库服务器迁移到另一个时需要用户学习另一种语言来保持数据库功能,那就太糟糕了。

但是,每个厂商的SQL实现都针对其数据库服务器进行了增强,这些增强,或称之为扩展,是一些额外的命令和选项,附加于标准SQL软件包上,由特定的实现提供。

上一篇:带你读《弹性计算—无处不在的算力》第三章:计算产品和技术3.3弹性裸金属服务器和神龙虚拟化(二)


下一篇:MyBatis 实践 -动态SQL/关联查询