SQL实战新手入门:前言

SQL实战新手入门:前言,第1张

前言

信息泛滥并没有减弱的趋势 人们被来自电视 Internet和塞满邮箱的广告等各种各样的信息所淹没 令人遗憾的是 随着信息数量的增长 信息的质量却在急剧下降 图书被期刊和杂志取代 然后被报纸 Web页面 博客取代 最终又被推特(eet)取代 信息量变得越来越庞大 也变得越来越不可信赖 更糟糕的是 在Internet时代数据永远不会真正消失 它不停地累积 隐藏在各种文件 日志和数据库中 根据Google的前CEO Eric Schmidt的说法 现在人类在两天之内创造的数据量就相当于自从出现书写记录到 年(或者任何一年)所创造的数据 即现在只需要两天就会创造出大约 EB(即 亿GB)的数据 这一步伐还在不停地加速

当以电子化方式存储数据变成现实之后 它也带来了自己的规则 要理解数据的含义 人们必须去学习相应的语言 关系数据库理论为人们带来了对电子化数据的掌控能力 它采用结构化查询语言(Structured Query Language SQL)来处理数据 到目前为止 关系数据库获取了巨大的成功

自从 世纪 年代第一次提出关系数据库以来 关系数据库和SQL已经取得了长足的进步 关系数据库和SQL中包含的那些概念对于初学者来说可能并不直观 本书将为读者抽丝剥茧 使读者理解SQL背后的原理 既让读者了解SQL的强大功能 也了解它存在的局限

读者对象

本书从入门知识开始介绍 读者无须具备SQL或关系数据库的预备知识 本书将带领读者走入SQL的发现之旅 读者将亲自创建示例数据库 它不仅结合了本书中所介绍的SQL概念 还将通过几次反复重构引入数据建模 查询调整和优化的概念 本书还介绍了一些适用于每一种SQL的最佳实践

本书适合于准备学习关系数据库程序设计的计算机程序员 也适合那些希望从数据库中释放更强大威力的商业用户 SQL是关系数据库世界的通用语言 每一个对学习SQL这门强大语言感兴趣的人都适合阅读本书

先前已具有一定数据库使用经验的读者可以略过前两章 直接跳到更高级的内容 当然也可以复习一下这两章中介绍的重要原则

   内容提要

本书介绍了当前已发布的SQL标准SQL: 把最主要的精力放在了SQL语言实际的运用上 强调了不同SQL实现之间存在的差异 本书介绍了很多示例 在这些示例中使用了最新版本的现代数据库系统对SQL的具体实现 这些数据库要么是可以免费下载的Express版本 要么是免费的开源软件 另外 本书还介绍了目前最流行的桌面型数据库软件Microsoft Access和OpenOffice 本书中介绍的数据库包括

IBM UDB

Oracle g

Microsoft SQL Server / /

MySQL /

PostgreSQL

Microsoft Access /

带有嵌入式 HSQLDB的OpenOffice BASE

本书结构

本书从整体着眼 向读者介绍了关系数据库的一般概念 特别是SQL中的概念 通过一个反复重构数据库的过程 循序渐进地向读者介绍了数据库的各种知识 在这一过程中 对于开始时介绍的每一个概念 随后都进行了更详细的分析 从而启发读者理解这些概念背后的关联性

第 章简要地介绍了SQL及其背后的关系理论 这一章只是浮光掠影般地介绍了数据库最基本的概念 后面的各章都在此基础上展开 该章介绍了数据与信息的区别 一些基本的原理还需要在后面章节中进一步解释 这一章还对本书中所使用的关系数据库管理系统(RDBMS)进行了一个概述

第 章对这些概念进行了更深入的介绍 根据关系模型的分析 应该将无组织的数据结构化 使之符合关系模型的要求 即将 冰箱磁铁 模式转换为 斗柜 模式 然后再将其转换为关系数据库中实际的表

第 章进一步介绍了关系模型 初步介绍了数据库的基本设计和规范化的基本过程 这一章还介绍了一些对规范化数据执行查询的SQL工具 此外 该章还介绍了动态SQL

SQL是一种基于集合的语言 这使得它既有强大的功能 也存在一定的局限 第 章讨论了最流行的过程化扩展(例如Oracle的PL/SQL和Microsoft的Transact SQL) 这一章还介绍了SQL函数 SQL函数可以作为一种补充手段 以弥补在处理基于记录的逻辑时SQL存在的固有不足

第 章介绍了聚合数据 总结了这种方式的威力和局限 该章将前面章节中介绍过的SQL聚合函数提高到了一个新的层次 演示了如何使用SQL来获取数据的聚合值

第 章介绍了子查询 当数据集是交错的 查询数据需要依靠多层次的数据筛选时 可以将一个查询作为另一个查询的筛选条件 可以调整SQL语句 用JOIN代替子查询 这是贯穿本书的主题之一

SQL的强大功能在于处理存储在多个关系表中的数据 第 章介绍了SQL如何在单个数据集中联合这些关系表的数据

本书介绍的是基本的SQL概念 打开了进一步学习SQL的大门 第 章是SQL发现之旅的下一站 它介绍了进一步学习SQL时应该考虑的问题

第 章介绍了性能优化技术 描述了在优化查询和数据库环境时常用的方法和最佳实践 第 章讨论了多用户环境中关系数据库的工作原理 介绍了SQL中实现的处理并发数据访问的机制

SQL所有的 *** 作都与结构和顺序有关 毕竟它是结构化查询语言 真实的数据可以是各种规模和结构 第 章介绍了SQL如何处理半结构化数据(XML文档) 非结构化数据(文本文件)和二进制数据(例如图片和声音)

第 章简要地讨论了数据库领域的最新发展 例如列式数据库 NoSQL数据库 对象数据库和面向服务的架构(SOA) 以及它们与SQL的关系

对于本书所讨论的每一种数据库 附录A按部就班地描述了安装示例数据库Library的过程 以及如何使用特定的指令生成Library数据库的初始数据 可以从本书支持网站上下载到这些SQL脚本

对于本书介绍的关系数据库软件包 附录B提供了一个详细的安装步骤

附录C描述了每一种数据库所提供的工具 使用这些工具可以访问 创建数据库对象 *** 纵存储在表中的数据

附录D介绍了开源项目SQuirreL Universal SQL Client 可以通过Java Database Connectivity(JDBC)接口 使用SQuirreL Universal SQL Client来访问各种数据库 该附录详细地介绍了如何安装和配置该软件

学习本书的条件

为了充分利用本书 建议下载和安装本书中使用的关系数据库软件 这些软件绝大多数都是免费的 或者具有免费的试用版 可以按照附录B中介绍的步骤来安装这些软件

支持网站和代码

在学习每一章时 建议下载相应的SQL脚本 创建并生成数据库 可以从 wrox 或者 agilitator 下载到本书的代码 在支持网站中 可以使用搜索框来查找指定名称的图书 在找到指定的图书之后 单击Download Code链接就可以访问允许下载的文件 可以通过HTTP或FTP下载这些代码 所有的文件都是以ZIP格式保存

本书的ISBN是 通过ISBN号查找本书 要比通过图书名称来查找更加方便

此外 还可以从Wrox的下载页面 wrox /dynamic/books/download aspx下载到本书的代码 只要单击Discovering SQL: A Hands On Guide for Beginners链接 就可以访问允许下载的文件

勘误表

尽管我们已经尽了最大的努力来保证文章或代码中不出现错误 但是错误总是难免的 如果您在本书中找到了错误 例如拼写错误或代码错误 请告诉我们 我们将非常感激 通过勘误表 可以让其他读者避免走入误区 当然 这还有助于提供更高质量的信息

要在网站上找到本书英文版的勘误表 可以登录// wrox 通过Search工具或书名列表查找本书 然后在本书的细目页面上 单击Book Errata链接 在这个页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项 完整的图书列表还包括每本书的勘误表 网址是 wrox /misc pages/booklist s

如果你在勘误表上没有找到错误 那么可以到 wrox /contact/techsupport s上完成上面的表格 并把找到的错误发送给我们 我们将会核查这些信息 如果无误的话 会把它放置到本书的勘误表中 并在本书的后续版本中更正这些问题

p p wrox

要与作者和同行讨论 请加入p p wrox 上的P P论坛 这个论坛是一个基于Web的系统 便于您张贴与Wrox图书相关的消息和相关技术 与其他读者和技术用户交流心得 该论坛提供了订阅功能 当论坛上有新的消息时 它可以给您传送感兴趣的论题 Wrox作者 编辑和其他业界专家和读者都会到这个论坛上来探讨问题

在//p p wrox 上 有许多不同的论坛 它们不仅有助于阅读本书 还有助于开发自己的应用程序 要加入论坛 可以遵循下面的步骤

( ) 进入p p wrox 单击Register链接

( ) 阅读使用协议 并单击Agree按钮

( ) 填写加入该论坛所需要的信息和自己希望提供的其他信息 并单击Submit按钮

( ) 你会收到一封电子邮件 其中的信息描述了如何验证账户和完成加入过程

不加入P P也可以阅读论坛上的消息 但要张贴自己的消息 就必须加入该论坛

加入论坛后 就可以张贴新消息 回复其他用户张贴的消息 可以随时在Web上阅读消息 如果要让该网站给自己发送特定论坛中的消息 可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标

关于使用Wrox P P的更多信息 可阅读P P FAQ 了解论坛软件的工作情况以及P P和Wrox图书的许多常见问题 要阅读FAQ 可以在任意P P页面上单击FAQ链接

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

lishixinzhi/Article/program/SQL/201311/16496

使用计算机后,随着数据处理量的增长,产生了数据管理技术。

数据管理技术的发展与计算机硬件(主要是外部存储器)系统软件及计算机应用的范围有着密切的联系。

数据管理技术的发展经历了以下四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库技术阶段。

数据管理的诞生

数据库的历史可以追溯到五十年前,那时的数据管理非常简单。

通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。

而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。

然而,1950 年雷明顿兰德公司(Remington Rand Inc)的一种叫做Univac I 的计算机推出了一种一秒钟可以输入数百条记录的磁带驱动器,从而引发了数据管理的革命。

1956 年IBM生产出第一个磁盘驱动器—— the Model 305 RAMAC。

此驱动器有50 个盘片,每个盘片直径是2 英尺,可以储存5MB的数据。

使用磁盘最大的好处是可以随机存取数据,而穿孔卡片和磁带只能顺序存取数据。

1951: Univac系统使用磁带和穿孔卡片作为数据存储。

数据库系统的萌芽出现于二十世纪60 年代。

当时计算机开始广泛地应用于数据管理,对数据的共享提出了越来越高的要求。

传统的文件系统已经不能满足人们的需要,能够统一管理和共享数据的数据库管理系统(DBMS)应运而生。

数据模型是数据库系统的核心和基础,各种DBMS软件都是基于某种数据模型的。

所以通常也按照数据模型的特点将传统数据库系统分成网状数据库、层次数据库和关系数据库三类。

最早出现的网状DBMS,是美国通用电气公司Bachman等人在1961年开发的IDS(Integrated Data Store)。

1964年通用电气公司(General ElectricCo.)的Charles Bachman 成功地开发出世界上第一个网状DBMS也即第一个数据库管理系统——集成数据存储(Integrated Data Store IDS),奠定了网状数据库的基础,并在当时得到了广泛的发行和应用。

IDS 具有数据模式和日志的特征,但它只能在GE主机上运行,并且数据库只有一个文件,数据库所有的表必须通过手工编码生成。

之后,通用电气公司一个客户——BF Goodrich Chemical 公司最终不得不重写了整个系统,并将重写后的系统命名为集成数据管理系统(IDMS)。

网状数据库模型对于层次和非层次结构的事物都能比较自然的模拟,在关系数据库出现之前网状DBMS要比层次DBMS用得普遍。

在数据库发展史上,网状数据库占有重要地位。

层次型DBMS是紧随网络型数据库而出现的,最著名最典型的层次数据库系统是IBM 公司在1968 年开发的IMS(Information Management System),一种适合其主机的层次数据库。

这是IBM公司研制的最早的大型数据库系统程序产品。

从60年代末产生起,如今已经发展到IMSV6,提供群集、N路数据共享、消息队列共享等先进特性的支持。

这个具有30年历史的数据库产品在如今的WWW应用连接、商务智能应用中扮演着新的角色。

1973年Cullinane公司(也就是后来的Culli软件公司),开始出售Goodrich公司的IDMS改进版本,并且逐渐成为当时世界上最大的软件公司。

网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。

用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。

而后来出现的关系数据库较好地解决了这些问题。

1970年,IBM的研究员E.F.Codd博士在刊物《munication of the ACM》上发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文,提出了关系模型的概念,奠定了关系模型的理论基础。

尽管之前在1968年Childs已经提出了面向 *** 的模型,然而这篇论文被普遍认为是数据库系统历史上具有划时代意义的里程碑。

Codd的心愿是为数据库建立一个优美的数据模型。

后来Codd又陆续发表多篇文章,论述了范式理论和衡量关系系统的12条标准,用数学理论奠定了关系数据库的基础。

关系模型有严格的数学基础,抽象级别比较高,而且简单清晰,便于理解和使用。

但是当时也有人认为关系模型是理想化的数据模型,用来实现DBMS是不现实的,尤其担心关系数据库的性能难以接受,更有人视其为当时正在进行中的网状数据库规范化工作的严重威胁。

为了促进对问题的理解,1974年ACM牵头组织了一次研讨会,会上开展了一场分别以Codd和Bachman为首的支持和反对关系数据库两派之间的辩论。

这次著名的辩论推动了关系数据库的发展,使其最终成为现代数据库产品的主流。

1969年Edgar F.“Ted” Codd发明了关系数据库。

1970年关系模型建立之后,IBM公司在San Jose实验室增加了更多的研究人员研究这个项目,这个项目就是著名的System R。

其目标是论证一个全功能关系DBMS的可行性。

该项目结束于1979年,完成了第一个实现SQL的 DBMS。

然而IBM对IMS的承诺阻止了System R的投产,一直到1980年System R才作为一个产品正式推向市场。

IBM产品化步伐缓慢的三个原因:IBM重视信誉,重视质量,尽量减少故障;IBM是个大公司,官僚体系庞大,IBM内部已经有层次数据库产品,相关人员不积极,甚至反对。

然而同时,1973年加州大学伯克利分校的Michael Stonebraker和Eugene Wong利用System R已发布的信息开始开发自己的关系数据库系统Ingres。

他们开发的Ingres项目最后由Oracle公司、Ingres公司以及硅谷的其他厂商所商品化。

后来,System R和Ingres系统双双获得ACM的1988年“软件系统奖”。

1976年霍尼韦尔公司(Honeywell)开发了第一个商用关系数据库系统——Multics Relational Data Store。

关系型数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善。

其代表产品有Oracle、IBM公司的 DB2、微软公司的MS SQL Server以及Informix、ADABAS D等等。

1974年IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。

SQL语言的功能包括查询、 *** 纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户指出做什么而不需要指出怎么做。

SQL集成实现了数据库生命周期中的全部 *** 作。

SQL提供了与关系数据库进行交互的方法,它可以与标准的编程语言一起工作。

自产生之日起,SQL语言便成了检验关系数据库的试金石,而SQL语言标准的每一次变更都指导着关系数据库产品的发展方向。

然而,直到二十世纪七十年代中期,关系理论才通过SQL在商业数据库Oracle和DB2中使用。

1986年,ANSI把SQL作为关系数据库语言的美国标准,同年公布了标准SQL文本。

SQL标准有3个版本。

基本SQL定义是ANSⅨ3135-89,“Database Language - SQL with Integrity Enhancement”[ANS89],一般叫做SQL-89。

SQL-89定义了模式定义、数据 *** 作和事务处理。

SQL- 89和随后的ANSⅨ3168-1989,“Database Language-Embedded SQL”构成了第一代SQL标准。

ANSⅨ3135-1992[ANS92]描述了一种增强功能的SQL,叫做SQL-92标准。

SQL-92包括模式 *** 作,动态创建和SQL语句动态执行、网络环境支持等增强特性。

在完成SQL-92标准后,ANSI和ISO即开始合作开发SQL3标准。

SQL3的主要特点在于抽象数据类型的支持,为新一代对象关系数据库提供了标准。

1976年IBM E.F.Codd发表了一篇里程碑的论文“R系统:数据库关系理论”,介绍了关系数据库理论和查询语言SQL。

Oracle的创始人Ellison非常仔细地阅读了这篇文章,被其内容震惊,这是第一次有人用全面一致的方案管理数据信息。

作者E.F.Codd 1966年就发表了关系数据库理论,并在IBM研究机构开发原型,这个项目就是R系统,存取数据表的语言就是SQL。

Ellison看完后,敏锐意识到在这个研究基础上可以开发商用软件系统。

而当时大多数人认为关系数据库不会有商业价值。

Ellison认为这是他们的机会:他们决定开发通用商用数据库系统Oracle,这个名字来源于他们曾给中央情报局做过的项目名。

几个月后,他们就开发了Oracle 1.0。

但这只不过是个玩具,除了完成简单关系查询不能做任何事情,他们花相当长的时间才使Oracle变得可用,维持公司运转主要靠承接一些数据库管理项目和做顾问咨询工作。

而IBM却没有计划开发,为什么蓝色巨人放弃了这个价值上百亿的产品,原因有很多:IBM的研究人员大多是学术出身,他们最感兴趣的是理论,而非推向市场的产品,从学术上看,研究成果应公开发表论文和演讲能使他们成名,为什么不呢?还有一个很主要的原因就是IBM当时有一个销售得还不错的层次数据库产品IMS。

直到1985年IBM才发布了关系数据库DB2 ,Ellision那时已经成了千万富翁。

Ellison曾将IBM 选择Microsoft 的MS-DOS作为IBM-PC机的 *** 作系统比为:“世界企业经营历史上最严重的错误,价值超过了上千亿美元。”IBM发表R系统论文,而且没有很快推出关系数据库产品的错误可能仅仅次之。

Oracle的市值在1996年就达到了280亿美元。

随着信息技术和市场的发展,人们发现关系型数据库系统虽然技术很成熟,但其局限性也是显而易见的:它能很好地处理所谓的“表格型数据”,却对技术界出现的越来越多的复杂类型的数据无能为力。

九十年代以后,技术界一直在研究和寻求新型数据库系统。

但在什么是新型数据库系统的发展方向的问题上,产业界一度是相当困惑的。

受当时技术风潮的影响,在相当一段时间内,人们把大量的精力花在研究“面向对象的数据库系统(object oriented database)”或简称“OO数据库系统”。

值得一提的是,美国Stonebraker教授提出的面向对象的关系型数据库理论曾一度受到产业界的青睐。

而Stonebraker本人也在当时被Informix花大价钱聘为技术总负责人。

然而,数年的发展表明,面向对象的关系型数据库系统产品的市场发展的情况并不理想。

理论上的完美性并没有带来市场的热烈反应。

其不成功的主要原因在于,这种数据库产品的主要设计思想是企图用新型数据库系统来取代现有的数据库系统。

这对许多已经运用数据库系统多年并积累了大量工作数据的客户,尤其是大客户来说,是无法承受新旧数据间的转换而带来的巨大工作量及巨额开支的。

另外,面向对象的关系型数据库系统使查询语言变得极其复杂,从而使得无论是数据库的开发商家还是应用客户都视其复杂的应用技术为畏途。

二十世纪六十年代后期出现了一种新型数据库软件:决策支持系统(DSS),其目的是让管理者在决策过程中更有效地利用数据信息。

于是在1970年,第一个联机分析处理工具——Express诞生了。

其他决策支持系统紧随其后,许多是由公司的IT部门开发出来的。

1985年,第一个商务智能系统(business intelligence)由Metaphor计算机系统有限公司为Procter &Gamble公司开发出来,主要是用来连接销售信息和零售的扫描仪数据。

同年, Pilot软件公司开始出售第一个商用客户/服务器执行信息系统——mand Center。

同样在这年,加州大学伯克利分校Ingres项目演变成Postgres,其目标是开发出一个面向对象的数据库。

此后一年, Graphael公司开发了第一个商用的对象数据库系统—Gbase。

1988年,IBM公司的研究者Barry Devlin和Paul Murphy发明了一个新的术语—信息仓库,之后,IT的厂商开始构建实验性的数据仓库。

1991年,W.H. Bill Inmon出版了一本“如何构建数据仓库”的书,使得数据仓库真正开始应用。

1991: W.H.“Bill” Inmon发表了”构建数据仓库”

二十世纪九十年代,随着基于PC的客户/服务器计算模式和企业软件包的广泛采用,数据管理的变革基本完成。

数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。

Inter的异军突起以及XML语言的出现,给数据库系统的发展开辟了一片新的天地。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9643713.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存