前言
SQL学习指南(第2版)(修订版)
编程语言在不断地出现和消亡,现在使用的语言只有很少一部分的历史能追溯到20年前。其中有大量应用在大型机环境的Cobol和流行于操作系统、服务器开发以及嵌入式系统的C语言。而在数据库领域,SQL的根源可以追溯到19世纪70年代。
SQL是一种从关系型数据库生成、操作和检索数据的语言。关系型数据库流行的原因之一是正确设计的关系型数据库可以处理海量数据。但处理大量数据集时,SQL就像一个高功率可变焦距的时髦数码相机,让你能够看到大型数据集,或者放大单独的行(或者两者之间的任何地方)。其他的数据库管理系统在沉重的负荷下往往会由于它们的焦距太窄(缩放镜头已经处于最大位置了)而崩溃,这就是要废黜关系型数据库和SQL的尝试已经基本上失败了的原因。因此,即使SQL是一门古老的语言,它也将继续活跃很长一段时间,并且在存储应用方面有光明的前途。
为什么要学习SQL
如果打算使用关系型数据库,无论是写应用程序、执行管理任务还是生成报表,那么都需要知道如何与数据库中的数据交互。即使使用工具为自己生成SQL,比如报表工具,有时也需要绕过自动生成功能而编写自己的SQL语句。
学习SQL语言有一个额外的好处,即强迫你勇敢面对并学会理解用于储存自己组织相关信息的数据结构。当开始适应数据库的表时,你可能会发现自己也会产生对数据库进行修改或增加等的建议。
为什么使用本书学习SQL
SQL语言可分为几类:用于创建数据库对象(表、索引、约束等)的语句统称为SQL模式语句,而用于创建、操纵和检索保存在数据库中的数据的语句称为SQL数据语句。作为管理员,你将同时使用SQL模式和SQL数据语句,而程序员或者报表作者可能只需要使用(或者只允许使用)SQL数据语句。虽然本书介绍了许多SQL模式语句,但是主要焦点还是编程功能。
由于只有少数命令,因此SQL数据语句看似很简单。依我看来,现在许多SQL图书都通过仅仅涉猎这个语言可能的表层知识帮助你培养这种观念。然而,如果打算使用SQL,那么你就有必要充分理解它的语言能力以及如何组合不同的功能以产生强大的结果。我感觉本书是唯一一本详细介绍SQL语言而不会同时被作为门挡的书(正如我知道的,1250页的“完全手册”往往被丢在人们的卧室书架上,布满了灰尘)。
虽然本书的示例都可以运行在MySQL、Oracle数据库以及SQL Server上,但是我必须选择其中之一来作为示例数据库服务器并规范化示例查询返回的结果集。我在这3个产品中选择了MySQL,是因为它可以免费获得、安装简单以及易于管理。对于那些使用其他服务器的人,我建议下载和安装MySQL并加载示例数据库,这样就可以运行示例数据库并试验数据了。