首页>参考读物>计算机科学与技术>综合

SQL编程基础(原书第3版)
作者 : John J. Patrick
译者 : 刘红伟
丛书名 : 华章程序员书库
出版日期 : 2009-05-07
ISBN : 7-111-26541-2
定价 : 66.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 491
开本 : 16开
原书名 : SQL Fundamentals, Third Edition
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

图书前言

SQL是最重要的计算机语言之一。它是一种数据库语言。当我们在一个大型的信息库中查找需要的信息时,执行查找的代码很可能正在使用SQL。分享信息以便与其他人协作的很多应用程序也要使用SQL。
  SQL已在世界上100多种软件产品中使用,并且新的软件产品还在随时增加。本书介绍如何最大程度地利用好数据库,如何使用SQL来解决实际问题。本书用到最广为应用的SQL产品,即Oracle和Microsoft Access,这两种产品广为使用、容易获取,并且可以在个人计算机上运行。通过详细学习这两种产品,你将具备使用基于SQL的任何产品所需的所有基本技能。
  本书的组织方式
  本书用一种非正式对话的方式带领读者学习SQL的主题。本书并列地展示了用Oracle和Access完成同一任务,以便读者可以看到两者的相似性和不同之处。大多数主题都通过SQL代码的一个示例来说明。在这些示例中,我们有意让表很小,从而更容易地检查和理解示例。
  每个SQL代码示例都首先设定一个任务。然后,给出执行这个任务的SQL代码。我尽可能地编写在Oracle和Access上都能工作的SQL代码,然而,有时候我不可能这么做,因此我会针对Oracle编写SQL代码的一个版本,而针对Access编写另一个不同的版本。
  为了让本书易于阅读,每个SQL示例都给出了初始的数据表和最终的数据表。这使得我们能够检查自己是否理解SQL代码做了些什么。我让示例尽可能地小,以便检查。
  每个示例的后面常常给出一个提示,说明有关SQL代码或数据表的任何较难理解的地方。
  最后,我们给出一个问题供读者解决,以便检查自己对于这一主题的理解。你可以自己决定是否去做这些练习。通常,这些问题都较容易解决,只需要对示例中的SQL代码略做修改。如果决定要做一个练习,本书的Web站点可以帮助你判断自己的解答是否正确。
  本书中的每段SQL代码示例都设计为互不依赖而彼此独立,不需要之前的章节所做的任何修改。这就使得读者可以跳过本书中的某些内容,按照任意顺序来阅读章节。有些人可能想要从头到尾地阅读本书,但是,不一定非这样不可。
  一定要阅读附录,学习如何运行Oracle和Access的实用技巧。所有示例的数据库文件和代码都可以从本书的Web站点获取。在本书中的几个地方,我表达了自己对于计算机技术的观点,而这是很多其他的技术图书避免去做的事情。这些观点是我的个人观点,我完全对它们负责。我也保留改变自己的观点的权利。如果我这么做了,我会在本书的Web站点上放上我的新观点,以及促使我改变自己想法的原因。
  本书Web站点
  本书的Web站点是一个名为“sqlfun”的 Google group,其Web地址是http://groupsgooglecom/
  group/sqlfun。
  也可以通过Email:sqlfun@gmailcom联络我。
  这个Web站点包括如下内容:
  ■ 创建本书中用到的表的所有Oracle SQL代码。
  ■ 带有本书中用到的所有数据表的Access数据库。有针对数个版本的Access的数据库可供使用。
  ■ 检查读者对本书中的问题的解答方式。
  ■ 勘误表(如果书中有错的话)。
  ■ 开放的讨论区,可以在此发表评论、提出希望我解答的问题。
  欢迎访问本书的Web站点。
  致谢
  很多人对本书贡献良多。我想要借此感谢他们在我编写本书期间给予的所有支持。这些想法和反馈帮助我提高了本书内容的质量,改进了我表述这些内容的方式。特别地,我要感谢以下同仁对于本书第3版的建议和帮助:
  ■ Dejang Liu
  ■ Alma Lynn Bane
  对本书以前版本提供帮助的人包括:
  ■ Anila Manning对于本书第2版的编写提供了很多帮助。
  ■ Paul Reavis,他与我一起在加州大学伯克利继续教育学校教授这门课程。
  ■ Todd Matson审阅了Access相关的内容。
  ■ Faysal Shaarani 和 Bill Allaway审阅了Oracle相关的内容。
  ■ Spencer Brucker 和加州大学伯克利继续教育学校都支持我教授SQL基础课程并准备书中的素材。
  ■ Prentice Hall的所有同仁,尤其是编辑Bernard Goodwin;Moore Media公司的制作编辑Vanessa Moore;本书最初的编辑Michael Meehan和Jeffery Pepper;以及我没有直接共事的很多其他人。
  ■ 尤其感谢我的母亲Jean Praninskas;还有我的儿子Richard Watts,他也审阅了本书。
  还要感谢Brian Akitore、Mehran Ansari、Asa Ashraf、Anne Bester、Sandra Bush、Connie Chong、Patricia Cleveland、Robert D’Antony、Gan Davnarrain、Bruce Douglass、James Drummond、Ron Duckworth、Dean Evans、Steve Fajardo、Earl Gardner、Wolday Gebremichael、Neelam Hasni、Reda Ismail、Marques Junior、John Karsnak、Allyson Kinney、Gladys Lattier、Brian Lester、Mahen Luximan、Alex McDougall、E.Muljadi、Satyendra Narayan、Bade Oyebamiji、Stefan Pantazi、Todd Perchert、Oxana Rakova、Jacob Relles、Ricardo Ribeiro、Cindy Roberts、John Rusk、Ty Seward、Gary Shapiro、David Smith、Kenneth Smtih、Joan Spasyk、Patricia Warfel和William White

作者简介

John J. Patrick:暂无简介

译者简介

刘红伟:暂无简介

译者序

SQL表示Structured Query Language,即结构化查询语言,它已经成为数据库应用的标准语言,因此,也是最重要的计算机语言之一。 对于计算机专业人士来说,SQL是必须掌握的语言之一,而对于想要高效率地使用商业数据库的一般读者来讲,掌握SQL可以在应用数据库的时候达到事半功倍的效果。
  本书根据John Patrick在美国加州大学伯克利分校讲授的SQL课程编写,详细介绍与SQL相关的概念和技术。读者不需要任何数据库语言的应用经验,就可以通过本书详细的介绍和丰富的实例,熟练地掌握和使用SQL。
  和其他的SQL相关图书相比,本书具有以下特色:
  ■ 不仅介绍基本概念,而且对每个概念都用了一个SQL范例进行说明。在大多数情况下都设置了一个任务,然后给出了完成这项任务的SQL代码。
  ■ 展示了数据的原表和结果表。这样,读者可以清晰地看到每一个SQL范例执行前后的变化,了解SQL语句的具体功能。
  ■ 提供Oracle SQL和Access SQL两个版本的代码。Oracle和Access分别是应用最广泛的企业级数据库和个人业务数据库。它们很好地覆盖了读者和用户的需求。
  ■ 每个小节的最后提出“检查理解”的练习,供读者实践本节学习到的知识,巩固对相关知识点的掌握。
  ■ 配套网站(http://groupsgooglecom/group/sqlfun)有丰富的辅助学习资源,包括创建数据库的代码(针对Oracle和Access的多个版本)、各章的范例代码、“检查理解”的解决方案、开放的学习讨论论坛。
  我们很高兴能够翻译这样一本SQL入门好书,希望读者能够愉快地阅读本书和学习SQL。参加本书翻译工作的有刘红伟、景龙、景文正、孙海军、李振胜、李秋强、楚亚军、景文生、王志刚、安宁宁、党耀云、谯谊、武文超、庞晋才、刘永昌和孙连升。在阅读本书的过程中,如果有任何评论和建议,读者可以通过liuhongwei198004@sinacom和译者交流。译者
  2009年2月

图书目录

译者序
前言


第1章在表中存储信息
简介
11什么是SQL
12什么是关系数据库?为什么要
使用它
13为什么学习SQL
14本书内容简介
表的组成部分
15数据存储于表中
16一行表示一个对象及其相关信息
17一列表示一类信息
18单元格是表的最小部分
19每个单元格应该只表示一样东西
110使用主键列标识每一个行
111大部分表都很“瘦长”
表的示例
112Oracle和Access中表的示例
113l_employees表的一些设计决策
114Lunches数据库
小结
第2章从表中获取信息
select语句
21目标:从表中获取几个列和行
22select语句概述
select子句
23select子句概述
24使用select子句获取若干列
25使用select子句获取所有的列
26使用select语句获取某个列中的
不同值
27使用select子句获得几个列中的
不同值
where子句
28where子句概览
29在where子句中使用等于条件
210在where子句中使用小于条件
211在where子句中使用不等于条件
212在where子句中使用in条件
213在where子句中使用between
条件
214在where子句中使用like条件
215在where子句中使用is null条件
order by子句
216orderby子句概述
217通过一列升序排列行
218通过若干列升序排列行
219根据若干列以各种顺序排序各行
220整个过程
小结
第3章where子句中的复合条件
where子句中的复合条件
31在where子句中使用复合条件
32将not与in、between、like和is
null条件一起使用
33where子句中复杂条件的标准形式
34一个常见错误
常数值
35在select子句中使用常数值
36使用常数表
标点符号问题
37现在需要知道的标点符号
38标点符号参考
区分大小写
39Oracle中的区分大小写
310关于SQL中区分大小写的争论
311有一个选择
312在Oracle SQL Command Line
环境中关闭区分大小写
313Access中区分大小写
三值逻辑
314使用三值逻辑的SQL
错误消息
315错误消息常常是错的
练习
316练习1
317练习2
318练习3
小结
第4章保存结果
在新表或者视图中保存结果
41从select语句的结果中创建
一个新表
42从select语句的结果创建
一个新的视图
43表和视图的相似之处
44表和视图的不同之处
45删除表
46删除视图
47一个视图可以建立在另一个
视图之上
48预防性删除
修改表中的数据
49添加新行到表中
410添加若干新行到一个表中
411更改已经存在于表的行中的数据
412从表中删除行
使用GUI修改表中的数据
413使用Oracle GUI来修改表中的
数据
414使用Access GUI来修改表中的
数据
修改表中数据的限制
415使用insert、update和delete的
约束条件
416安全限制
小结
第5章数据字典和其他Oracle主题
提交、回滚和事务
51commit和rollback命令
52Autocommit选项
53事务
通过视图修改数据
54通过视图更改数据
55通过视图更改数据的例子
56使用With Check Option的视图
Oracle中的SQL Commands页面
57SQL Commands页面概览
58Autocommit选项
59Explain选项
使用Oracle数据字典:第一部分
510数据字典概述
511如何查找所有表的名字
512如何查找所有视图的名字
513如何查找定义视图的select语句
514如何查找表或者视图中的列名
515如何查找表的主键
小结
第6章创建自己的表
创建表
61create table命令
62Oracle和Access中的数据类型
63文本数据类型
64数字数据类型
65日期/时间数据类型
66其他数据类型
67将数据放入新表中
68在Oracle中创建l_employees表
更改表
69为表添加主键
610更改表的主键
611向表中添加一个新列
612扩展列的长度
613从表中删除一个列
614对表进行其他更改
带有重复行的表
615重复行的问题
616如何删除重复行
617如何区别重复行
小结
第7章格式、序列和索引
格式
71日期格式
72显示已经格式化的日期
73输入已格式化的日期
74Oracle中的其他格式
75Access中的格式
序列
76在Oracle中创建序列
77在Oracle中使用序列
78在Access中使用序列
索引
79创建索引
710优化器
711索引如何工作的示例
在数据字典中查找更多的信息:第二部分
712如何查找有关列的数据类型的
信息
713如何查找有关序列的信息
714如何找到有关索引的信息
715如何找到所有数据库对象的
相关信息
716如何使用Oracle中的数据
字典表
717如何使用数据字典列的索引
练习
718创建一个想要庆祝的
节日的表
小结
第8章数据完整性
表上的约束条件
81约束条件使数据保持一致
82check约束条件
83unique约束条件
84not null约束条件
85primary key约束条件
86对字段数据类型和长度的限制
参照完整性
87参照完整性的概念
88参照完整性的示例
89对RI保护的数据表使用insert
和update
810通过RI允许对数据表使用insert
和update
811RI防止对查找表使用update
和delete
812如何从查找表中删除编码
813如何在查找表中更改编码
814RI作为表之间的关系
815在Access GUI中建立RI
RI的delete选项和update选项
816删除和更新查找表的三个选项
817删除规则:set null
818删除规则:cascade
819更新规则:cascade
验证参照完整性
820主键的两种含义
821使用两个或者更多的列作为主键
822查找表和数据表可以是同一个表
如何在create table语句中编写约束条件
823约束条件常常在create table
语句中编写
小结
第9章行函数
行函数简介
91直接从初始表中获得数据
92什么是行函数
93select子句中行函数的例子
94select语句的所有子句中使用
行函数的例子
95定义行函数作为第一步
数字函数
96数字函数
97如何测试行函数
98测试数字行函数的另一种方法
文本函数
99文本函数
910组合名和姓
911分隔名和姓
912设计电话号码的格式
日期函数
913日期函数
914日期函数的一个例子
915从日期中删除时间
小结
第10章使用行函数
特殊行函数
101其他行函数
102使用函数识别用户和日期
103使用函数把null改为其他值
104使用函数更改数据类型
使用行函数的文档
105使用Oracle文档
106使用Access文档
107使用Access Expression Builder
查看行函数
创建数字和日期模式
108创建一个简单的数字模式
109创建一个复杂的数字模式
1010列出一个星期的所有星期数
1011创建一个工作日日历
1012如何计算从出生到现在的天数
1013如何查找出生后满10 000天的
日期
1014给Oracle和Access中的报表
编行号
1015可选内容:解代数方程的一种
简单方法
小结
第11章汇总数据
列函数简介
111汇总一个列中的所有数据
112列函数列表
最大值和最小值
113找出最大值和最小值
114列函数和where子句一起使用
115找出拥有最大值和最小值的行
计数
116对行和数据计数
117零计数:第一部分
118对列中相异值计数
119计算两个或多个列中相异值的
数目
求和与平均
1110求和函数与平均函数
1111加法存在的问题以及如何解决
其他主题
1112并不总将null更改为零
1113计算列中null的数目
1114对相异值计数
小结
第12章控制汇总级别
将表划分为行的组并汇总每个组
121列中数据组的汇总
122group by子句
123由两个或更多列形成的组
124有多个分组列时的null组
125在同一条select语句中,已汇总的
数据不能与没有汇总的数据混在
一起
126解决方案1:将更多的列添加到
group by子句中
127解决方案2:将查询划分为两条
单独的select语句
128如何创建有多个小计和一个总计
的报表
129零计数:第二部分
1210零计数:第三部分
删除某些已汇总的数据
1211having子句
1212比较having子句与where子句
1213在一个表上使用select语句的
全过程
1214having子句没有增加select语
句的功能
1215使用where子句来删除原始
数据
1216如何对一个列函数应用另一个列
函数并且绕开其他限制
小结
第13章内连接
连接简介
131一个查询可以使用几个表中的
数据
132最佳方法是一次连接两个表
两个表的内连接
133一对一关系
134多对一关系
135一对多关系
136多对多关系
137删除不匹配的行
138删除匹配列中带有null的行
139编写SQL语句进行内连接的
5种方式
连接条件的变体
1310用两个或多个匹配列连接
1311用between匹配一系列值的
连接
1312使用大于条件的连接
1313用行函数进行连接
1314在from子句中编写连接条件
连接应用
1315查找表
1316组合连接和数据的选取
1317联合使用连接
1318如何从数据字典中找出主键列
1319用内连接组合三个或更多的表
小结
第14章外连接
外连接简介
141外连接派生于内连接
142外连接的3种类型
143左外连接
144右外连接
145全外连接
146union简介
147带有匹配列的两个表的union的
例子
外连接的应用
148零计数:第四部分
149组合外连接与数据选取
1410按排序顺序的全外连接
1411找出模式中的缺陷
1412用两列或多列进行比较
1413比较两个不同的全外连接
1414问题:左外连接和右外连接
可能很难处理
小结
第15章union和union all
union的基础知识
151union与连接之间的区别
152union和union all的区别
153union中的select语句
154union中的order by子句
155创建一个包含union的表或者
视图
156union中的自动数据类型转换
非常规的union
157不同数据类型表的union
158不同列数的两个表的union
union的应用
159确定两个表是否相同
1510在union中使用直接量确定
数据的来源
1511给异常、警告和错误的标志
附加消息
1512将数据从一个列中分到两个
不同的列中
1513将两个函数应用到数据的
不同部分
1514三个表或更多表的union
Oracle中的交集和差集
1515交集
1516差集
小结
第16章交叉连接和自连接
交叉连接
161交叉连接的定义
162交叉连接重要的原因
163内连接源自交叉连接
164内连接的属性
165连接条件中的错误可以显示为
一个交叉连接
166使用交叉连接列出所有可能
的组合
167三维或多维时的其他布局
168避免对大型表使用交叉连接
自连接
169表为什么与自己连接
1610自连接的例子
1611处理事件序列
1612生成从0到999的数字
Access中的CrossTab查询
1613当有两维时的交叉表查询
1614增加到四维的CrossTab查询
1615更多维的CrossTab查询
1616显示谁参加每次午餐的
CrossTab
1617显示每次午餐的食物
Oracle中的CrossTab查询
1618Oracle中的CrossTab查询——
第一部分
1619Oracle中的CrossTab查询——
第二部分
小结
第17章在产品数据库中组合表
连接三个或者更多表的方法
171使用一系列步骤连接几个表
172在where子句中一次连接几个表
173在from子句中一次连接几个表
丢失信息
174小心使用内连接
175小心使用左外连接和右外连接
176全外连接保留了所有的信息
177几个表的全外连接
注意计算机的效率
178监视查询
179使用索引
1710尽早在过程中选择想要的数据
1711使用表保存总结数据
1712使用几种方法编写SQL
标准化连接表的方式
1713连接是数据库设计的一部分
1714视图可以标准化表的连接方式
1715临时报表
小结
第18章ifthenelse、参数查询和
子查询
ifthenelse逻辑
181Oracle中的case函数和decode
函数
182Access中的Immediate If (iif)
函数
183给行附加消息
184将一个列的数据划分为两个
不同的列
185对数据的不同部分应用两个
函数
参数查询
186Oracle中的参数查询
187Oracle中多次使用参数
188在Oracle中定义参数的更多方法
189Access中的参数查询
1810Access中带有两个参数的查询
1811Access中的参数限制
子查询
1812子查询简介
1813产生一系列值的子查询
1814产生一个值的子查询
1815存在null值时避免使用not in
子查询的应用
1816用于update命令中的子查询
1817找出两个表之间的不同之处
1818使用最新数据
子查询的原有特性
1819相关子查询
1820使用exists的子查询
1821使用子查询编写外连接
1822嵌套子查询
1823子查询的使用限制
1824许多子查询也可以写作连接
小结
第19章多用户环境
数据库配置
191单用户环境
192多用户环境
193分布式环境
194通过Internet连接
多用户环境中的操作
195如何使用别人拥有的表
196代名
197快照
安全性和特权
198识别用户
199特权
1910角色
1911几个人同时使用相同的表
Oracle数据字典和多用户环境
1912ALL和USER
1913如何在数据字典中找到所需
的表
1914如何找到列的含义
小结
第20章SQL设计
SQL的最初设计目标
201做一件事并且做好它
202关注信息
203保持SQL语言的简单性
204协调人们一起工作
新的界面
205窗体
206报表
207Web工具
208更小的数据库
209OLTP
2010数据仓库
小结
附录A获取和安装Oracle
附录BOracle快速入门
附录CAccess快速入门
附录DLunches数据库的图
〖=A(〗111235556789910111113141819191919212122242629303031343537384042444445464748495151515355565858606262657070737373747575777778788081838484848789899090919395959799100101102104106106107107109109109109110113113114120122122124124124125126127128128130132133133133134137140140141141142144144145146147148148150150152153155156156156158159161161163163164165167167168168169169171172174175176176176178179179179179180181182183183183184185186187187189190190192192193194196197197199200201201203204204204204207208209211211212213215215218220221223223226227229230230230231232234236236237237239239241242244247248249250253254254254254256256258259261261262263265267267268272272273274276277277277278280282284286287289289290292292293294294296297299300300300301301302305306307308309310312312313314316316318318320322323324325326326326327328330331333334336336337339341342344346348350350350352353354357358361361362364364365367368369370371371372374375375375376376379379381382383384384385387389391391395396399402405405406408409409409411412413413413413413415415415416416416416416417420420421421421424426427429430431433434436437437438438439441442443444445446446447448448449449449450451451451452452454454454455456457457457458459460460460460461462462462462463463464464464464466466467467468477481489〖=〗

教学资源推荐
作者: 教育部高等学校计算机科学与技术教学指导委员会
作者: 王月海 何丽 孟丹 张艳苏 编著
作者: 教育部高等学校计算机科学与技术专业教学指导分委员会 编制
参考读物推荐
作者: 樊文婧 等编著
作者: 华诚科技 编著
作者: (美)Andrew Stellman; Jennifer Greene 著