出版时间:2010-8 出版社:清华大学出版社 作者:戴特 页数:400 译者:周成兴
Tag标签:无
前言
SQL语言使用非常广泛。但是SQL又是难以使用的:它非常复杂,并且很令人费解,而且更容易出错。为了使你能确信写出的SQL代码是精确的(换句话说,这些SQL代码只做你希望做的事情,不多也不少),因此你就必须遵循适当的规则,这就是本书需要论述的问题,即关系地使用SQL语言就是你需要遵循的规则。但这又意味着什么呢?难道SQL不是相关的吗?当然在关系数据库中,SQL是事实上的标准,但事实上SQL自己并不是相关的。不幸的是,在很多方面SQL都是从关系理论分离开的,如重复的行和空行就是两个明显的例子,但并不是只有这两个例子。其结果就是,就像它给了你一根绳子把你自己捆住一样。因此如果你不想捆住自己,就需要理解关系理论(是什么和为什么);你需要了解SQL是如何从这个理论分离开来的;并且需要了解如何避免可能产生的问题。总之,你需要关系地使用SQL,然后你才能把SQL看作是关系型的那样行事,这样你就能获得它事实上的好处,从而实现一个真正的关系系统。现在,如果每个人都已经关系地使用SQL语言,那么类似于本书这种类型的书就不需要了,但事实上并非如此。相反地,在当前的SQL使用中,我看到了非常多的糟糕的例子。甚至在一些教科书和类似的出版物中,作者所推荐的实践中都存在这样的糟糕的例子,这些作者本应知道得更好;事实上,在这方面对这些文献资料的回顾是非常的令人沮丧的。在1969年,关系模型就首先令人看到了曙光,然而到现在为止,已经过去40年了,在数据库社区,关系模型看上去还是没有被普遍地理解。部分地因为这种原因,所以本书使用关系模型本身作为组织的原则;本书将会深入解释关系模型的各种特性,并且在每一个例子中都会说明如何最好地使用SQL来实现那些令人怀疑的特性。
内容概要
在关系数据库系统中,SQL已经成为了事实标准。SQL语言使用非常广泛,现在流行的所有数据库系统几乎都支持SQL。但是,SQL难以使用,它非常复杂,并且很令人费解。本书主要介绍了关系数据库的原理与SQL的内在关系,阐述了该如何把关系理论直接应用到SQL的应用中,并通过大量的例子以及对其背后理论解释,帮助读者编写出高效而精确的SQL代码。全书由12章和4个附录组成,每章后面都给出了一定的练习题,帮助读者巩固所学的内容,并在附录C中给出了这些练习题的答案,因此极大地方便了读者的学习和使用。
作者简介
作者:(美国)戴特(Date C.J.) 译者:周成兴 等C.J. Date个独立的作者、演讲者、研究者和技术顾问,其研究领域为关系数据库技术。他最著名的图书“An Introduction to Database Systems”(8th edition,Addison·Wesley,2004)以销售25万多册,被全世界几百所大学用作教材。他还编写了很多数据库管理方面的其他图书:Temporal Data and the Relational Model (Morgan Kaufmann, 2003)Database in Depth: Relational Theory for Practitioners (O'Reilly, 2005)Database, Types, and the Relational Model: The Third Manifesto (3rd edition, Addison-Wesley, 2006)The Relational Database Dictionary (O'Reilly, 2006)Date on O'Reilly, 2005: Writing 2000-2006 (Apress, 2007)Logic and Database: The Roots of Relational Theory (Trafford, 2007)The Relational Database Dictionary, Extended Edition (Apress, 2006)Date于2004年进入了“计算机工业”名人堂。对其评语是,他具有以清晰而易懂的方式阐述复杂技术内容的突出能力。
书籍目录
前言第1章 设置场景 关系模式是非常容易被误解的 一些术语的注释 法则,而不是产品 最初模式的一个回顾 模型和实现 关系的特性 基础关系和产生的关系 关系和关系变量 值和变量 结论 练习第2章 类型与域 类型和关系 等式比较 数据值的原子性 什么是类型 标量和非标量类型 SQL中的标量类型 SQL中的类型检查和强制类型转换 SQL中的一些整序 SQL中的行和表类型 结论 练习第3章 元组与关系、行和表 什么是元组 SQL中的行 什么是关系 关系和它们的关系体 关系是n维的 关系比较 TABLE—DUM和TABLE—DEE SQL中的表 SQL中列的命名 结论 练习第4章 无重复与无空值 重复有什么问题 复行:进一步讨论 在SQL中避免复行 空值有什么错 在SQL中避免空值 对外连接的评论 结论 练习第5章 基本关系变量与基本表 数据定义 更新是集合级别的 关系赋值 更多关于候选键的内容 关于外键更多的讨论 关系变量和断言 关系和类型 练习第6章 SQL与关系代数Ⅰ:原始的操作符 一些预备知识 有关闭包的更多讨论 约束 投影 连接 并、交和差 哪些操作符是原始的 每次都形成表达式的一小步 关系表达式的意思是什么 求一个表表达式的值 表达式转换 属性名字上的依赖 练习第7章 SQL与关系代数Ⅱ:附加的操作符 半连接和半差 扩展 映像关系 除 聚集操作符 映像关系再讨论 概要 概要再论 分组和不分组 what if查询 ORDER BY如何 练习第8章 SQL与约束 类型约束 SQL中的类型约束 数据库约束 SQL中数据库约束 事务 为什么数据库约束的检测必须是实时的 难道某些检测不是不得不被推迟吗 约束和谓词 各种各样的问题 练习第9章 SQL与视图 视图是关系变量 视图和谓词 获取操作 视图和约束 更新操作 视图是为了什么 视图和快照 练习第10章 SQL与逻辑 简单和复合的命题 简单和复合的谓词 定量 关系计算 更多的关于量化 一些等价形式. 结论 练习第11章 使用逻辑来形式化SQL表达式 一些转换规则 例子1:逻辑隐含 例子2:普遍的限定 例子3:隐含和一般的限制 例子4:相关的子查询 例子5:命名子查询 例子6:更多的关于命名子表达式 例子7:处理不确定性 例子8:使用COUNT 例子9:连接查询 例子10:唯一限制 例子11:ALL或者ANY比较 例子12:GROUP BY和HAVING 练习第12章 SQL主体杂项 SELECT 显表 名字限定 范围变量 子查询 “可能的非确定”表达式 空集 SQL表表达式的BNF范式语法 练习附录A 关系模式附录B 数据库设计理论附录C 练习答案附录D 进一步阅读
章节摘录
插图:视图是为了什么到目前为止,本章都是假设你已经知道视图为的是什么——但是尽管如此我还是想就这个主体说上一些。事实上,视图有两个截然不同的目的:·那些定义视图V什么的用户,显然是知道相应的视图定义表达式x的。因此这个用户可以在任何期望使用表达式x的地方使用名字y,但是这样的用法只是基本缩写,并且明显地这个正在讨论的用户理解这个缩写。·相反,那些仅是被通知嗍实存在以及这个,是可用的用户是被假设(至少理想情况下)不知道这个表达式x的,对于这些用户,事实上,v是被假设成看上去并且感觉像是一个基关系变量,就像我已经详细地解释的那样。并且这是视图的第二个事实上非常重要的用法,这也是本章到目前为止我的焦点所在。逻辑数据独立前面介绍的第二个目的与逻辑数据的独立这个问题密切相关。回忆一下第1章中物理数据上的独立的意思是我们可以改变数据的物理存储的方式并且由用户感觉到的数据的访问方式不需要做相应的改变。因此,相当的足够,逻辑数据的独立意味着我们可以改变数据逻辑上的存储方式并且用户感觉到的数据的访问方式不需要做相应的改变。并且视图被假设用来提供的就是这个逻辑数据的独立。
编辑推荐
《SQL与关系数据库理论》是由清华大学出版社出版的。
图书封面
图书标签Tags
无
评论、评分、阅读与下载