SQL入门经典(第6版)

978-7-115-49631-7
作者: 赖安·斯蒂芬斯(Ryan Stephens)
译者: 郝记生王士喜
编辑: 傅道坤

图书目录:

详情

本书详细介绍了SQL语言的基本语法、基本概念,说明了各种SQL实现与ANSI标准之间的差别。书中包含了大量的范例,直观地说明了如何使用SQL对数据进行处理。每章后面还有针对性很强的测验与练习,能够帮助读者更好地理解和掌握学习的内容。在最后的附录里还有关于安装MySQL的详细介绍、书中用到的关键SQL语句、测验和练习的答案。 本书的内容层次清晰,针对性强,非常适合初学者作为入门教材。

图书摘要

版权信息

书名:抢读版-SQL入门经典(第6版)

ISBN:978-7-115-49631-7

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    [美]赖安·斯蒂芬斯(Ryan Stephens)

     [美]阿里D. 琼斯(Arie D. Jones)

     [美]罗恩·普劳(Ron Plew)

译    郝记生 王士喜

责任编辑 傅道坤

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


Ryan Stephens, Arie D. Jones and Ron Plew: Sams Teach Yourself SQL in 24 Hours (6th edition)

ISBN: 0672337592

Copyright © 2016 by Pearson Education, Inc.

Authorized translation from the English languages edition published by Pearson Education, Inc.

All rights reserved.

本书中文简体字版由美国Pearson公司授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。

版权所有,侵权必究。


本书详细介绍了SQL语言的基本语法、基本概念,说明了各种SQL实现与ANSI标准之间的差别。书中包含大量的示例,直观地说明了如何使用SQL对数据进行处理。每章后面还有针对性很强的测验与练习,能够帮助读者更好地理解和掌握学习的内容。在最后的附录里还有关于安装MySQL的详细介绍、书中用到的关键SQL语句、测验和练习的答案。

本书的内容层次清晰,针对性强,非常适合初学者作为入门教材。


在本书中,作者研究、应用和记录了20多年以来SQL标准以及这些标准在关键数据库系统中的应用。本书的作者是数据管理方面的专家,擅长Oracle、Microsoft和其他领先的技术。

Ryan Stephens是Perpetual Technologies公司以及Indy Data Partners公司(位于印第安纳波利斯)的联合创始人兼CEO。Ryan在IT领域有20多年的研究和咨询经历,擅长数据管理、SQL和Oracle,在印第安纳大学-普渡大学印第安纳波利斯联合分校创办并讲授了5年的数据库和SQL课程,还在印第安纳陆军国民警卫队担任了12年的程序分析员(programmer analyst)。Ryan已经为Sams Publishing编写了多本数据库和SQL相关的图书。

Arie D. Jones是Indy Data Partners(IDP)公司(位于印第安纳波利斯)新兴技术(Emerging Technologies)部门的副总裁,领导着一个专家小组负责数据库环境与应用程序的规划、设计、开发、部署和管理,从而让每个客户都获得最佳的工具与服务的组合。他还是技术活动的定期发言人,并且在数据库方面出版了多本图书,并发表了多篇文章。

Ron Plew已经从Perpetual Technologies公司的联合创始人和副总裁的位置上退休,他在关系数据库技术领域有20多年的研究和咨询经验,还为Sams Publishing合著了多本图书。Ron在印第安纳大学-普渡大学印第安纳波利斯联合分校讲授了5年的数据库和SQL课程,并且曾经担任印第安纳陆军国民警卫队的程序分析员。


本书献给我的妻子Jill以及我的三个孩子:Daniel、Autunn和Alivia。

——Ryan

本书献给我的妻子Jackie,感谢她在本书写作期间对我的理解与支持。

——Arie


感谢在本书6个版本的写作过程中给予我们支持和耐心的所有人,包括但不限于我们的家人、朋友、员工、合作伙伴以及阅读过本书之前版本的所有人。尤其感谢本书的合著者和商业伙伴Ron Plew,如果没有你的贡献,无论是本书的第1版还是我们的公司,都不会存在。感谢Arie Jones承担了本书当前版本的大部分写作工作,同时还要负责Indy Data Partners公司的领导工作。感谢Marshall Pyle和Jacinda Simmerman所做的技术编辑工作,以及为提升本书质量而做的工作。还要感谢Sams Publishing的所有人员,感谢你们的耐心和对本书细节的把握。与你们共事总是一件令人愉快的事情。

——Ryan


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可(如下图所示)。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


本章的重点包括:

欢迎来到SQL的世界,体验当今世界不断发展的庞大的数据库技术。通过阅读本书,我们可以获得很多的知识,而这些是在当今关系型数据库和数据管理领域生存所必需的。由于我们必须首先了解SQL的背景知识和一些预备知识,因此本章是一个概述性章节,之后会进入具体的编码章节。这使本章内容稍显枯燥,但这些貌似无趣的内容却是体会本书后续精彩内容的基础。

如今每一家企业都涉及数据,人们需要使用某种有组织的方法或机制来管理和检索数据。如果数据被保存在数据库中,这种机制被称为数据库管理系统(DBMS)。数据库管理系统已经存在多年,其中大多数源自于大型计算机上的平面文件系统。如今,随着技术的发展,在不断增长的商业需要、不断增加的企业数据和互联网技术的推动下,数据库管理系统的应用越来越广泛。

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

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

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

注意:与数据库通信

参考我们访问最喜欢的在线商店来订购图书、衣服或其他任何产品时的情况。我们需要通过点击的方式来导览产品目录,输入搜索条件,然后将货物放到购物车中,而这一切都需要在幕后执行SQL代码,以连接数据库,同时告诉数据库我们想要查看什么数据,以及以什么方式来查看。

美国国家标准化组织(American National Standards Institute,ANSI)是一个核准多种行业标准的组织。SQL作为关系数据库通信所使用的标准语言,最初是基于IBM的实现于1986年被批准。1987年,国际标准化组织(International Standards Organization,ISO)把ANSI SQL作为国际标准。该标准在1992年进行了修订(SQL-92),1999年再次修订(SQL-99)。目前最新的标准是2011年12月正式采用的SQL-2011。

SQL-211是当前采用的标准,SQL-2008是上一个标准。当前的SQL标准有9个相关文档,将来还可能增加其他文档,以扩展标准来适应新兴技术的需求。9个相关文档如下。

相对于之前的标准,SQL-2011标准的主要优势之一是时态数据库支持(temporal database support)。时态数据库支持是Oracle等SQL实现提供的一个原生功能,该功能允许基于指定的时间段,在数据库中查询和修改数据(前提是数据在这个时间段中存在)。时态数据库以及其他标准功能有多个级别的合规性,数据库实现需要遵守这些合规性。如果你使用的数据库实现不完全符合任何给定的标准,通常会有一些解决方法,这些方法涉及集成到数据库设计中的业务逻辑。任何标准都有明显的优点和缺点。最重要的是,标准可以指引厂商朝着适当的行业方向发展。就SQL来说,标准提供了必要基础的基本框架,最终使不同的实现之间保持一致性,更好地实现可移植性(不仅是对于数据库程序,而且是对于数据库整体和管理数据库的个人而言)。

有人认为标准限制了特定实现的灵活性和功能,然而,遵循标准的大多数厂商都在标准SQL中添加了特定于产品的增强功能,从而弥补了这种缺陷。

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

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

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

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

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

图1.1 数据库

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

图1.2 关系数据库

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

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

在客户端/服务器系统中,主计算机被称为服务器,可以通过网络进行访问(通常是局域网或广域网)。通常是个人计算机(PC)或其他服务器访问服务器,而不是哑终端。每台个人计算机被称为客户端,它可以连接到网络,从而允许客户端与服务器之间进行通信,这也就是“客户端/服务器”名称的由来。客户端/服务器与大型机环境之间最大的差别在于,客户端/服务器环境中的用户计算机能够“思考”,利用自身的CPU和内存运行自己的进程,并且能够轻松地通过网络访问服务器。在大多数情况下,客户端/服务器系统更适用于商业需求,因此获得了青睐。

现代数据库系统运行于多种不同的操作系统之上,而这些操作系统又运行在多种不同的计算机上。最常见的操作系统有基于Windows的系统、Linux和UNIX命令行系统。数据库主要位于客户端/服务器和Web环境中。无法实现数据库系统的主要原因是缺乏培训和经验。然而,随着当今商业中不断增长的(甚至是不合理的)需求以及Internet技术和网络计算的发展,我们应该理解客户端/服务器模型和基于Web的系统。图1.3展示了客户端/服务器技术的概念。

图1.3 客户端/服务器模型

商业信息系统已经在Web集成方向有了很大发展。现在我们能够通过Internet访问数据库,这意味着顾客(数据的用户)使用浏览器(比如IE、Microsoft Edge和Firefox)就能访问公司的信息,能够定购货物、盘点库存、查看订单状态、对账户进行管理变更、转账等。

用户只需打开浏览器,访问公司的站点并登录(如果公司的站点要求这样做),就可以利用内置到公司Web页面中的程序访问数据。大多数公司都要求用户注册,并且为用户提供登录名和密码。

当然,通过Web浏览器访问数据库时,幕后还会发生许多事情。举例来说,Web程序可以运行SQL,从而访问公司的数据库,向Web服务器返回数据,然后再将数据返回到顾客的浏览器。

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

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

每个厂商的SQL实现在功能和性质上都是与众不同的。数据库服务器就是一个产品——像市场上的其他产品一样,由多个不同的厂商生产。为了实现可移植性和易用性,厂商都保证其实现兼容于当前的ANSI标准,这关乎到厂商的利益。比如一家公司从一个数据库服务器迁移到另一个时,需要数据库的用户学习另一种语言来维护新系统的功能,用户的体验会非常差。

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

SQL会话是用户利用SQL命令与关系数据库进行交互时发生的事情。当用户与数据库建立连接时,会话就被建立了。在SQL会话范围之内,用户可以输入有效的SQL命令对数据库进行查询,操作数据库中的数据,定义数据库结构(比如表)。会话可以通过直接与数据库建立连接来发起,也可以通过前端程序来发起。无论何种情况,会话通常是由通过网络访问数据库的用户在终端或工作站建立的。

当用户连接到数据库时,SQL会话就被初始化了。命令CONNECT用于建立与数据库的连接,它可以发起连接,也可以修改连接。举例来说,如果目前以USER1的身份连接到数据库,我们还可以用CONNECT命令以USER2的身份连接到数据库;连接成功之后,用于USER1的SQL会话就被隐式断开了。连接数据库通常需要使用以下命令:

  CONNECT user@databas

在尝试连接到数据库时,用户会看到一个提示,要求输入与当前用户名对应的密码。用户名用于向数据库验证身份,而密码是允许进行访问的钥匙。

当用户与数据库断开连接时,SQL会话就结束了。命令DISCONNECT用于断开用户与数据库的连接。当断开与数据库的连接之后,用户使用的软件可能看起来还在与数据库通信,但实际上已经没有连接了。当使用EXIT命令离开数据库时,SQL会话就结束了,而且用于访问数据库的软件通常会关闭。

  DISCONNECT

下面将讨论执行各种功能的SQL命令的基本分类。这些功能包括绑定数据库对象、操作对象、用数据填充数据库表、更新表中的现有数据、删除数据、执行数据库查询、控制数据库访问和数据库的全面管理。

主要的分类包括:

数据定义语言(DDL)是SQL的一部分,允许数据库用户创建和重构数据库对象,比如创建和删除表。

后续章节要讨论的一些最基础的DDL命令包括:

这些命令将在第3章、第17章和第20章中详细讨论。

数据操作语言(DML)是SQL的一部分,用于操作关系数据库对象内部的数据。

3个基本的DML命令是:

第5章将详细讨论这些命令。

虽然只具有一个命令,但数据查询语言(DQL)是现代关系数据库用户最关注的部分,这个基本的命令是SELECT。

这个命令具有很多选项和子句,用于构成对关系数据库的查询。查询是对数据库进行的信息调查,一般通过程序界面或命令行提示符向数据库发出。无论是简单还是复杂的查询,含糊还是明确的查询,都可以轻松地创建。

第7章到第16章将详细介绍SELECT命令。

SQL 中的数据控制命令用于控制对数据库中数据的访问。这些数据控制语言(DCL)命令通常用于创建与用户访问相关的对象,以及控制用户的权限分发。这些控制命令包括:

这些命令通常与其他命令组合在一起,在本书多个章节中都有介绍。

数据管理命令用于对数据库中的操作进行审计和分析,还有助于分析系统性能。常用的两个数据管理命令如下所示:

不要把数据管理与数据库管理混为一谈。数据库管理是对数据库的整体管理,包括各级命令的使用。相较于SQL语言的核心命令,数据管理与每个SQL实现更相关。

除了前面介绍的几类命令,用户可以使用下面的命令实现管理数据库事务。

事务命令将在第6章详细讨论。

在继续讨论SQL基础知识之前,我们先来介绍一下本书后续章节中要使用的表和数据。本书使用了Canary Airlines这家虚构公司的数据库示例,而且已经生成了示例数据来为本书中的示例和练习创建真实的场景。下面的小节会介绍所用的表(数据库)、它们之间的关系、它们的结构,以及包含的数据示例。

图1.4展示了本书中的示例、测验和练习中所用的表的关系。每个表都有不同的名称,并且包含一些字段。图中的映射线表示了特定表之间通过共用字段(通常被称为主键这将在第3章讲解)建立的联系。

与其他航空公司一样,Canary Airlines旨在实现航班高效地进出港,并为乘客(顾客和终端用户)提供安全的出行方式。下面是Canary Airlines公司一些基本业务规则的概述,以及图1.4中所示的数据库表的关系:

图1.4 本书所用表之间的关系

像商业活动中的其他标准一样,表命名标准对于保持良好的秩序也是非常重要的。从前面对于表和数据的介绍可以看出,每个表的名称都以_TBL作为后缀,这种方式也是很多客户端站点所采用的。后缀_TBL说明这个对象是表,而关系型数据库中存在多种不同类型的对象。例如,在后续章节会出现后缀_INX,这说明对象是表的索引。命名标准几乎存在于整个机制之内,对任何关系型数据库的管理都起到了重要的辅助作用。需要说明的是,在命名数据库对象时,后缀的使用并不是强制性的。所谓的命名标准,只是为了在创建对象的时候可以遵循一定的准则。读者可以根据自己的喜好自由选择命名标准。

注意:命名标准

不仅要遵循任何SQL实现的对象命名规则,还要符合本地商业规则,从而创建出具有描述性的、与业务数据相关联的名称。一致的命名规则有助于使用SQL轻松管理数据库。

下面将展示本书所用的Passengers表中包含的示例数据。在查看下面这个Passengers表的前三个记录(或行)时,请仔细观察这些乘客的个人信息。此外,请尝试思考乘客是如何与航班和行程相关联的,以及数据中可能出现的所有变化。

PassengerID       FirstName        LastName        BirthDate           CountryCode
__________________________________________________________________________________
            1      Adeline          Wogan           1988-09-24         CA
            2      Stephnie         Mastrelli       1966-03-01         US
            3      Amina            Fold            1982-05-22         GB

存储和维护有价值的数据是数据库存在的原因。前文出现的数据是用来解释本书中的SQL概念的,下面进一步详细介绍表中的元素。记住,表是用于数据存储的最常见和最简单的形式。

1.字段

每个表都可以分解为更小的项,这些项被称为“字段”。字段是表中的列,用于保持表中每条记录的特定信息。表Passengers里的字段包括PassengerID、FirstName、LastName、BirthDate和CountryCode。这些字段对表中的特定信息进行分类保存。

2.记录或一行数据

记录,也被称为一行数据,是表中的一个水平条目。以上一个表Passengers为例,它的第一行记录如下所示:

1 Adeline Wogan 1988-09-24 CA

很明显,这条记录由乘客ID、乘客的姓氏、乘客的名字、出生日期和国家代码构成。对于每一个不同的乘客,表Passengers中都有一条相应的记录。

在关系型数据库的表里,一行数据是指一条完整的记录。

3.列

列是表中垂直的项,包含表中特定字段的全部信息。举例来说,表Passengers中与乘客的姓氏相关联的一列包含以下内容:

Wogan
Mastrelli
Fold

这一列基于字段LastName,也就是乘客的姓氏。每个列包含了表中每条记录中特定字段的全部信息。

4.主键

主键是一个列,可以在一个关系型数据库中唯一地标识表中的每一行数据。表Passengers里的主键是PassengerID,它通常是在表创建过程中初始化的。主键的特性确保了所有乘客ID都是唯一的,也就是说表Passengers中的每条记录都具有不同的PassengerID。主键避免了表中有重复的数据,并且还具有其他用途,具体介绍请见第3章。

5.NULL值

NULL是一个用来表示“缺失值”的术语。如果表中某个字段的值是NULL,其表现形式就是字段为空,其值就是没有值。需要重点理解的是,NULL并不等同于0或空格。值为NULL的字段在表创建过程中会保持为空。比如在一个包含MiddleName列的表中,允许出现空值或者缺失值,因为并不是每个人都一定有中间名,其相应字段的值可能是NULL。在表的记录中,如果该记录的特定列中没有条目,则记录将标记为NULL值。

后续两章将详细介绍其他的表元素。

本书中的很多练习使用MySQL、Microsoft SQL Server和Oracle数据库来生成示例。我们之所以专注于这三种数据库实现,是因为它们都有各自的自由发布版本可供使用。此外,它们也是三种最常使用的关系型数据库实现。我们可以自由选择一种来安装,以便完成本书中的练习。注意,由于这三种数据库都不能与SQL-2011完全兼容,因此练习的结果可能会有一些细小的差别,或不完全复合ANSI标准。不过,掌握了基本的ANSI标准以后,读者就可以在不同的数据库实现之间自由切换。

前面介绍了SQL标准语言,简要说明了其历史,粗略展示了这个标准在过去多年是如何进化的。另外还讨论了数据库系统和当今技术,包括关系型数据库、客户端/服务器系统、基于Web的系统,这些对于理解SQL都是非常重要的。本章还介绍了SQL语言的主要组件,说明了关系型数据库市场有众多的厂商,以及各具特色的SQL实现。虽然它们与ANSI SQL都略有不同,但大多数厂商都在一定范围内遵循当前标准(SQL-2011),后者维护了SQL的一致性,并强制使开发的SQL程序具有可移植性。

另外还介绍了本书所使用的数据库。从前面的内容可以看到,数据库由一些表组成,它们彼此有一定的关联;我们也看到此时表中包含的数据。本章还介绍了SQL的一些背景知识,展示了现代数据库的概念。在完成本章的练习之后,读者会信心十足地继续后面的课程。

问:如果要学习SQL,是不是可以使用SQL的任何一种实现呢?

答:是的,只要数据库的实现是兼容ANSI SQL的,我们就可以与之进行交互。如果实现并不是完全兼容的,我们只需要稍做调整即可。

问:在客户端/服务器环境里,个人计算机是客户端还是服务器?

答:个人计算机被认为是客户端,但有时服务器也可以充当客户端的角色。

问:数据库对象(比如表和列)的命名规则,是否有一个整体标准呢?

答:尽管没有必要,但是最好在一个组织范围内部创建数据库对象和数据的命名规则,并始终如一地使用。命名规则的一致性可以使数据更容易进行识别和管理。

下面的内容包含一些测试问题和实战练习。这些测试问题的目的在于检验对学习内容的理解程度。实战练习是为了把学习的内容应用于实践,并且巩固对知识的掌握。在继续学习之前请先完成测试与练习,答案请见附录C。

1.SQL的含义是什么?

2.SQL命令的6个主要类别是什么?

3.4个事务控制命令是什么?

4.对于数据库访问来说,客户端/服务器模型与Web技术之间的主要区别是什么?

5.如果一个字段被定义为NULL,这是否表示该字段必须要输入某些内容?

1.说明下面的SQL命令分别属于哪个类别:

    CREATE TABLE 
    DELETE
    SELECT
    INSERT
    ALTER TABLE
    UPDATE

2.观察下面这个表,选出适合作为主键的列:

    AIRPORTS
    EMPLOYEES
    PASSENGERS
    AIRCRAFT

3.参考附录B,下载并在计算机上安装一种数据库实现,为后面的练习做准备。


相关图书

SQL实践教程(第10版)
SQL实践教程(第10版)
SQL初学教程(第3版)
SQL初学教程(第3版)
SQL学习指南(第3版)
SQL学习指南(第3版)
SQL优化核心思想
SQL优化核心思想
SQL初学者指南(第2版)
SQL初学者指南(第2版)
Oracle PL/SQL必知必会
Oracle PL/SQL必知必会

相关文章

相关课程