首页>参考读物>计算机科学与技术>数据库

SQL查询初学者指南(原书第2版)
作者 : John L. Viescas;Michael J. Hernandez
译者 : 刘红伟
出版日期 : 2008-05-02
ISBN : 7-111-23900-0
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 419
开本 : 16开
原书名 : SQL Queries for Mere Mortals:A HandsOn Guideto Data Manipulation in SQL,Second Edition
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书好评  
  除非你在非常高的级别工作,否则这是你需要的独一无二的一本SQL图书。作者不但揭开了复杂查询的神秘面纱,还介绍了能够使“初学者”成为“超人”的原理和技术。请不要错过本书!
  ——Graham Mandeno, 数据库顾问

  本书针对编写SQL查询为初学者提供了一个按部就班、易于阅读的指导。它包含了上百个带有详细说明的例子。本书为我们提供了理解、修改和创建SQL查询所需的工具。
  —Keith W. Hare ,国际SQL标准委员会ISO/IEC JTC1 SC32 WG3负责人

  John Viescas和Mike Hernandez采用日常的英语查询并且直接将其翻译为SQL。对于所有数据库设计者来说本书是一本重要的书。它吸取了复杂的数学集合论和一阶谓词逻辑(这些理论在E. F. Codd的最初关于关系数据库设计的论文中有所概述),并且使得这些理论容易让每个人理解。如果你想要学习从初级到中级的SQL课程,本书是你所必需的,不管你已经买了多少本其他的书。
  —Arvin Meyer、MCP、MVP

  仅仅一个“小心这一陷阱”的提示项,就能够帮助你在编写自己的查询时避免某些问题,节省的成本远超本书的价格,如果你想要挖掘你数据库方面的全部潜能,我强烈推荐本书。
  —Kenneth D. Snell博士,数据库设计师/程序员

  John和Mike完成了不可思议的工作,使得通常枯燥而困难的主题变得鲜活起来。本书将会是所有正规开发者书架上特色鲜明的一本,只不过我确信它没有时间静静呆在书架上,因为本书太有用了。
  —Doug Steele,Microsoft Access开发者与作家

  在过去的几十年里,SQL已经从一种只有计算机专家才知道的语言演变为计算机业界广泛使用的国际标准。现在,每年使用SQL开发的新应用程序数以百万计。如果想要从Internet或者内部网络访问公司信息,可能要使用SQL。本书帮助新用户学习SQL查询的基础知识,同时对于中级用户和高级用户来说,也是必备的参考书。

  包含用于本书中示例查询的5个示例数据库的4种格式:Microsoft SQL Server 2000及以后版本、Microsoft Access 2000及以后版本、MySQL 5.0及以后版本,以及可以用于大多数其他语言实现的SQL脚本。

图书特色

图书前言

“就其本性而言,语言是具有群体性的,也就是说,它表达的不是特定的而是共同的事物,即对你、我和每个人都同样的事物。”
  ——Thomas Earnest Hulme, 《沉思录》(Speculations)

  学习如何获取和操作数据库中的信息通常是一个复杂的过程。然而,只要理解了所要询问的问题或者想要对数据库做出的改变,那么,它也可能是一个相对容易的任务。在理解了问题之后,可以把它翻译成任何数据库系统所使用的语言,在多数情况下,就是结构化查询语言(Structured Query Language,SQL)。我们必须把请求翻译成一条SQL语句,以便数据库系统知道我们想要获取或改变什么信息。SQL为我们提供了和数据库系统交流的工具。
  在担任数据库顾问的许多年里,我们发现,仅仅要从数据库获取信息或者在数据库中执行简单的数据修改的人数,要远远超过那些负责为一个数据库创建程序或应用程序的人数。不幸的是,没有一本书仅仅专注于这一主题,尤其是从一个“初学者”的角度。坦率地说,有很多关于SQL的好书,但是,大多数都是以数据库编程和开发为目标的。
  有了这种想法,我们决定是时候编写一本书来帮助人们学习如何正确而有效地查询数据库了。我们在2000年出版了本书的第1版。在本书中,我们还希望介绍使用SQL修改数据库中数据的基本方法。
  我们的决定结果已经在你的手中了。本书在SQL图书中是独一无二的,因为它关注SQL,而几乎与任何一种特定的数据库系统实现无关。本书第2版包含了数百个新的示例,并且包含了各个版本的示例数据库,包括使用最流行的开源MySQL数据库系统的数据库。当你阅读完本书时,将具备获取或修改任何信息所需的技能。
  致谢
  编写这样的一本书是合作的结果。总是有编辑、同事、朋友以及亲戚,在我们最需要的时候给予支持并且提供有价值的建议。这些人不断给我们鼓励,帮助我们集中注意力,并且激励我们完成这个项目。
  首先,也是最重要的,我们要感谢本书的策划编辑Elizabeth Peterson,他激励着我们编写了这个第2版。我们还要感谢Weinberge带领我们一路前行。并且,我们无法忘记最终的策划编辑Chuck Toporek以及Romny French和产品团队,他们是一个伟大的团队。特别感谢Chrysta Meadowbrooke,她完成了令人惊讶的最终手稿录入工作。她解决了很多不一致的地方,并且指出了一些需要修改的SQL例子。最后,感谢总编辑Karen Gettman,他领导着这个团队并且仔细地关注着整个过程。
  接下来,我们要感谢我们的技术编辑,特别是Stephen Forte和Keith Hare。Keith特别花时间运行了所有的例子,指出了几个错误,并且提出了改进的建议。再次感谢他贡献的所有时间和录入,并且帮助我们使本书成为关于SQL查询的严谨著述。
  最后,再次非常特别地感谢Keith Hare为我们作序。作为国际SQL标准委员会的负责人,Keith是一位非常优秀的SQL专家。我们对在这一主题上有丰富的学识和经验的Keith充满尊敬,并且,我们很乐意接受他对我们的处女作的看法和评论。

封底文字

本书好评 除非你在非常高的级别工作,否则这是你需要的独一无二的一本SQL图书。作者不但揭开了复杂查询的神秘面纱,还介绍了能够使“初学者”成为“超人”的原理和技术。请不要错过本书! ——Graham Mandeno, 数据库顾问 本书针对编写SQL查询为初学者提供了一个按部就班、易于阅读的指导。它包含了上百个带有详细说明的例子。本书为我们提供了理解、修改和创建SQL查询所需的工具。 —Keith W. Hare ,国际SQL标准委员会ISO/IEC JTC1 SC32 WG3负责人 John Viescas和Mike Hernandez采用日常的英语查询并且直接将其翻译为SQL。对于所有数据库设计者来说本书是一本重要的书。它吸取了复杂的数学集合论和一阶谓词逻辑(这些理论在E. F. Codd的最初关于关系数据库设计的论文中有所概述),并且使得这些理论容易让每个人理解。如果你想要学习从初级到中级的SQL课程,本书是你所必需的,不管你已经买了多少本其他的书。 —Arvin Meyer、MCP、MVP 仅仅一个“小心这一陷阱”的提示项,就能够帮助你在编写自己的查询时避免某些问题,节省的成本远超本书的价格,如果你想要挖掘你数据库方面的全部潜能,我强烈推荐本书。 —Kenneth D. Snell博士,数据库设计师/程序员 John和Mike完成了不可思议的工作,使得通常枯燥而困难的主题变得鲜活起来。本书将会是所有正规开发者书架上特色鲜明的一本,只不过我确信它没有时间静静呆在书架上,因为本书太有用了。 —Doug Steele,Microsoft Access开发者与作家 在过去的几十年里,SQL已经从一种只有计算机专家才知道的语言演变为计算机业界广泛使用的国际标准。现在,每年使用SQL开发的新应用程序数以百万计。如果想要从Internet或者内部网络访问公司信息,可能要使用SQL。本书帮助新用户学习SQL查询的基础知识,同时对于中级用户和高级用户来说,也是必备的参考书。 包含用于本书中示例查询的5个示例数据库的4种格式:Microsoft SQL Server 2000及以后版本、Microsoft Access 2000及以后版本、MySQL 5.0及以后版本,以及可以用于大多数其他语言实现的SQL脚本。

图书序言

自从数据库语言SQL作为国际标准采用后的20年来,以及SQL数据库产品开始出现在市场后的25年来,SQL已经成为用来排序、修改、获取和删除数据的主要语言。今天,世界上数据的重要部分以及世界的经济,都是用SQL数据库来记录的。
SQL随处可见,因为它是操作数据的一种非常重要的工具,它是高性能的事务处理系统,它位于Web界面的后面。我曾经在网络监视器工具和垃圾邮件防火墙中见到SQL。今天,SQL可以直接执行,嵌套到编程语言中,以及通过调用接口来访问。它隐藏在GUI开发工具、代码生成器以及报表编制器中。不管是可见的还是隐藏的,底层的查询都是SQL。因此,要理解已有的应用程序并且创建一个新的应用程序,需要掌握SQL。
  本书针对编写SQL查询提供了一个按部就班的、易于阅读的指导。它包含了上百个带有详细说明的例子。本书提供了我们理解、修改和创建SQL查询所需要的工具。
  作为美国和国际SQL标准委员会的一名数据库顾问和成员,我花了大量的时间研究SQL。因此,我有一定的资格说:“本书的作者不仅理解SQL,而且知道如何讲解SQL”。他们在这两方面的能力使得本书成为宝贵的资源。


  Keith W. Hare
  JCC顾问公司高级顾问
  美国SQL标准委员会INCITS H2副主席
  国际SQL标准委员会ISO/IEC JTC1 SC32 WG3负责人

作者简介

John L. Viescas;Michael J. Hernandez:John L. Viescas: Viescas顾问公司(一家令人尊敬的数据库咨询服务提供商)总裁,畅销书《Microsoft Office Access 2003 Inside Out》和《Microsoft Office Access 2007 Inside Out》的作者。
Michael J. Hernandez: Microsoft Visual Studio Tools for Office (VSTO)的产品经理,负责协助和指导产品的未来战略以及通过各种各样的会议向客户和开发者推销VSTO。

译者简介

刘红伟:暂无简介

译者序

本书讨论的主题是SQL查询,而目标读者则是初学者。而这些,也恰恰是本书最大的两个特色。
  但凡市面上涉及数据库技术的图书,必然少不了介绍SQL(Structured Query Language,结构化查询语言)的部分,甚至有不少图书是专门介绍SQL的,因为SQL是和大多数数据库系统交流的标准语言。市面上不乏SQL的大全图书,对于SQL的起源、应用和其他方面一一道来。而本书在SQL图书中是独一无二的,因为它关注SQL,而几乎与任何一种特定的数据库系统实现无关;它关注SQL查询和数据操作,对于数据库设计、数据库对象创建、存储过程等则并未提及。作者缘何如此设计?这要从本书的第二个特色说起。
  什么样的人才是初学者呢?作者在前言中给出了明确的界定。两位作者都多年从事SQL方面的研究和咨询工作,他们比谁都清楚,绝大多数“初学者”使用最多的SQL功能就是数据查询。因此,本书大部分的篇幅都是针对如何用好SQL查询功能的。当然,本书也不是死板地局限于此。第五部分“修改数据集”是新加入的部分,分为3章来介绍UPDATE、INSERT和DELETE语句及其用法。当然,这也是出于读者需求的考虑。而第2章,则是一贯地介绍数据库设计合理化的一些原则。这并不是和SQL查询风马牛不相及,相反,良好的数据库设计,会在进行查询时减少很多不必要的麻烦。
  除了上述的两大特点,本书还有其他一些闪亮的特色,包括:丰富的示例和详细的示例说明、独特的“请求/翻译/整理/SQL”技术、SQL语法图表、随书CD上多种格式的示例数据库、每章末尾的练习题等。这些特点也都是为了服务前面所提到的两大特点而精心安排的。作者在引言中对这些特点给出了详细的说明和介绍。
我们非常高兴能够把这样一本讲述SQL查询的好书翻译并介绍给广大读者。参加本书翻译工作的有刘红伟、景龙、景文正、孙海军、李振胜、李秋强、楚亚军、景文生、王志刚、安宁宁、党耀云、谯谊、武文超、庞晋才、刘永昌和孙连升。在阅读本书的过程中,读者如果有任何评论和建议,可以通过liuhongwei198004@sinacom和译者交流。

图书目录

译者序
序言
前言
引言


第一部分关系数据库和SQL
第1章什么是关系1
11数据库的类型1
12关系模型简史1
121源起2
122关系数据库软件2
13剖析关系数据库3
131表3
132字段4
133记录4
134键4
135视图5
136关系6
14我们将学到什么9
15从这里走向何处10
16小结11
第2章确保数据库结构的健全12
21为什么会有本章12
22为什么要关心全面的结构12
23字段调优13
231名字中包含什么(第一部分)13
232消除毛边14
233解析多部分字段16
234解析多值字段17
24调优表19
241名字中包含什么(第二部分)19
242确保合理的结构20
243解析非必要的重复字段21
244键的标识24
25建立牢固的关系27
251建立一个删除规则28
252设置参与类型29
253设置参与程度31
26就这些吗32
27小结32
第3章SQL简史34
31SQL的起源34
32早期厂商实现35
33随后有了标准36
34ANSI/ISO标准的演化37
35其他SQL标准38
36商业实现40
37未来会怎样41
38为什么应该学习SQL41
39小结41
第二部分SQL基础
第4章创建简单查询43
41SELECT简介43
42SELECT语句44
43一点题外话:数据与信息45
44把请求翻译为SQL46
441扩展可见的字段49
442使用快捷方式请求所有的列51
45删除重复的行52
46排序信息53
461要事第一:排序序列54
462现在来排序55
47保存你的工作57
48示例语句58
49小结63
410练习题63
第5章获取列以外的信息66
51什么是表达式66
52要表示何种类型的数据67
53改变数据类型:CAST函数68
54指定显式的值70
541字符串直接量70
542数值直接量71
543日期时间直接量72
55表达式类型74
551连接74
552数学表达式76
553日期和时间算术78
56在一条SELECT子句中使用表达式81
561使用连接表达式81
562命名表达式82
563使用一个数学表达式83
564使用日期表达式84
565短暂离题:值表达式85
57“没有内容”的值:Null87
571Null简介87
572Null的问题88
58示例语句89
59小结93
510练习题94
第6章过滤数据96
61使用WHERE来精炼你所看到的
东西96
611WHERE子句97
612使用WHERE子句98
62定义查找条件99
621比较99
622范围104
623集合成员107
624模式匹配108
625Null111
626排除带有NOT的行113
63使用多个条件115
631AND和OR简介115
632排除行:老话重提120
633优先级顺序122
634检查重叠的范围124
64回顾Null:一个警告提示126
65以不同的方式表达条件129
66示例语句130
67小结134
68练习题135
第三部分多表操作
第7章用集合思考139
71什么是集合139
72集合上的操作140
73交集140
731集合论中的交集141
732结果集之间的交集142
733可以用交集解决的问题144
74差集145
741集合论中的差集145
742结果集之间的差集146
743使用差集解决的问题149
75并集150
751集合论中的并集150
752使用并集来组合结果集151
753使用并集解决的问题153
76SQL集合操作153
761经典集合操作与SQL154
762找出共同值:INTERSECT154
763找出遗漏的值:EXCEPT
(DIFFERENCE)156
764组合集合:UNION158
77小结160
第8章INNER JOIN162
81什么是JOIN163
82INNERJOIN163
821什么是“合法的”JOIN163
822列引用163
823语法164
824检查那些关系175
83INNER JOIN的用法176
831查找相关的行176
ⅩⅤⅡ832查找匹配的值177
84示例语句177
841两个表178
842两个以上的表181
843查找匹配值186
85小结194
86练习题195
第9章OUTER JOIN198
91什么是OUTER JOIN198
92LEFT OUTER JOIN和RIGHT
OUTER JOIN199
93FULL OUTER JOIN214
931语法214
932在非键值上的FULL
OUTER JOIN217
933UNION JOIN218
94OUTER JOIN的用法218
941找出遗漏的值218
942找出部分匹配的信息219
95示例语句219
96小结231
97练习题231
第10章UNION234
101什么是UNION234
102编写带有UNION的请求235
1021使用简单的SELECT语句236
1022组合复杂的SELECT语句238
1023多次使用UNION241
1024排序一个UNION242
103UNION的用法244
104示例语句245
105小结253
106练习题254
第11章子查询256
111什么是子查询256
1111行子查询256
1112表子查询257
1113标量子查询257
112用作列表达式的子查询258
1121语法258
1122初探聚合函数:COUNT和
MAX260
113作为过滤器的子查询262
1131语法262
1132用于子查询的特定谓词关键字…264
114子查询的用法275
1141构建子查询作为列表达式275
1142用作过滤器的子查询275
115示例语句277
1151表达式中的子查询277
1152过滤器中的子查询281
116小结287
117练习题287
第四部分汇总和分组数据
第12章简单汇总291
121聚合函数291
1211用COUNT统计行和值293
1212用SUM求和295
1213使用AVG计算平均值296
1214使用MAX求最大值298
1215使用MIN求最小值299
1216使用多个函数300
122在过滤器中使用聚合函数301
123示例语句303
124小结308
125练习题308
第13章分组数据310
131为什么分组数据310
132GROUP BY子句311
1321语法312
1322混合列和表达式316
1323在WHERE子句中的子查询中
使用GROUP BY317
1324模拟一条SELECT DISTINCT
语句319
133一些适用的限制320
1331列限制320
ⅩⅤⅢ1332根据表达式分组321
134GROUP BY的用法323
135示例语句324
136小结332
137练习题332
第14章过滤分组的数据335
141“聚焦分组”的一种新含意335
142过滤器何时起作用339
1421应该把过滤器放在WHERE中
还是HAVING中339
1422避免HAVING COUNT陷阱341
143HAVING的用法344
144示例语句345
145小结352
146练习题352
第五部分修改数据集
第15章更新数据集合355
151什么是UPDATE355
152UPDATE语句355
1521使用一个简单的UPDATE
表达式356
1522短暂离题:事务359
1523更新多列359
1524使用子查询来过滤行360
1525使用一个子查询UPDATE
表达式365
153UPDATE的用法367154示例语句368
155小结379
156练习题379
第16章插入数据集382
161什么是INSERT382
162INSERT语句383
1621插入值383
1622产生下一个主键值386
1623使用SELECT插入数据387
163INSERT的用法392
164示例语句394
165小结401
166练习题401
第17章删除数据集404
171什么是DELETE404
172DELETE语句404
1721删除所有的行405
1722删除某些行406
173DELETE的用法410
174示例语句411
175小结416
176练习题416
结束语419
附录ASQL标准图
附录B示例数据库结构
附录C日期和时间函数
附录D推荐读物


附录部分在本书随书光盘中。

教学资源推荐
作者: (美)AnHai Doan,Alon Halevy,Zachary Ives 著
作者: Ramon A.Mata-Toledo,Pauline K.Cushman
作者: 熊建强,吴保珍,黄文斌
作者: 何宁 滕冲 熊素萍
参考读物推荐
作者: 刘 辉
作者: (美)Richard Yevich等
作者: 吕海波 著