本书通过以多种方法解答SQL编程谜题,提供一系列实用性很强的问题分析方法。书中收集了75个与SQL编程相关的有趣问题,涉及数据库应用的许多方面,如财务、投资、旅游、销售、计算等,不一而足。针对每一个谜题,作者给出了基于SQL-99及更新标准的多种解决方案,展示了解题思路,对SQL程序员有很强的参考价值。
本书适合数据库开发人员阅读,也可作为高等院校数据库课程师生的辅助教材。
作者简介:
Joe Celko,世界著名的数据库专家,曾经担任ANSI SQL标准委员会成员达十年之久。他也是世界上读者数量最多的SQL书籍作者之一。他曾撰写过一系列专栏,并通过他的新闻组支持了数据库编程技术以及ANSI/ISO标准的发展。除本书外,他还是SQL经典著作Joe Celko's SQL for Smarties和Joe Celko's SQL Style(中文版均将由人民邮电出版社出版)等畅销书的作者。
谜题1 财政年度表
谜题2 缺勤者
谜题3 麻醉师谜题
谜题4 门禁卡
谜题5 字母数据
谜题6 预订旅馆房间
谜题7 跟踪投资组合
谜题8 调度打印机
谜题9 空座位
谜题10 社会保险号的工资
谜题11 工作顺序
谜题12 索赔状态
谜题13 教师
谜题14 电话
谜题15 找出最近两次工资
谜题16 机械师
谜题17 职业介绍所
谜题18 广告信件
谜题19 销售冠军
谜题20 测验结果
.谜题21 飞机与飞行员
谜题22 房东
谜题23 杂志
谜题24 十里挑一
谜题25 里程碑
谜题26 数据流图
谜题27 找出相等集合
谜题28 计算正弦函数
谜题29 计算众数
谜题30 平均销售等待时间
谜题31 购买所有产品
谜题32 计算税收
谜题33 计算折旧
谜题34 咨询顾问收入
谜题35 库存调整
谜题36 双重职务
谜题37 移动平均数
谜题38 账簿更新
谜题39 保险损失
谜题40 排列
谜题41 预算
谜题42 清点鱼的数目
谜题43 毕业
谜题44 成对的款式
谜题45 辣味香肠比萨饼
谜题46 促销
谜题47 连号的座位
谜题48 分组还原
谜题49 小器械计数
谜题50 三个中的两个
谜题51 预算与实际支出
谜题52 员工问题
谜题53 按列折叠表
谜题54 潜在的重复
谜题55 赛马
谜题56 旅馆房间号
谜题57 间隔——版本1
谜题58 间隔——版本2
谜题59 合并时间段
谜题60 条码
谜题61 对字符串排序
谜题62 格式化报表
谜题63 连续的分组
谜题64 盒子
谜题65 产品面向的年龄范围
谜题66 数独
谜题67 稳定婚姻问题
谜题68 搭乘下一班公交车
谜题69 LIFO-FIFO库存
谜题70 股票趋势
谜题71 计算
谜题72 预约服务电话
谜题73 小型数据清理
谜题74 需要派生表吗
谜题75 找一间酒吧
索引
20世纪90年代早期和中期,我曾定期为杂志撰写专栏,开始是为Database Programming & Design杂志,后来是为DBMS杂志。我用来引起读者反响的诀窍是在每篇专栏后面附上一道SQL编程谜题。10年后,那两家杂志合并为Intelligent Enterprise杂志。我的SQL谜题也转登到了一些小型出版物上,最后慢慢停掉了。现在我有时会在www.dbazine.com网站和因特网上的其他地方发表一两道谜题,但不会再出现在印刷媒体上了。
多年来,大学生们有各种编程竞赛,以前使用最流行的过程语言——C、Pascal,现在多使用Java和C++。可是并没有太多的东西能够让数据库程序员测试他们自己的能力,除了我这本谜题小书。.
我常常发现我的谜题出现在各种课后作业中,因为我的谜题是教师们能找到的SQL习题的唯一来源。或许我还会收到某个懒惰学生发来的电子邮件,让我帮他完成作业,而他还不知道这些作业出自何处。
在那个时候,SQL-86是事实上的标准,SQL-92标准还只是数据库供应商的设计目标。而现在,很多供应商已在产品中实现了大部分SQL-92标准,目前的设计目标是SQL-99标准中的OLAP特性。
10年前,大学生们学习RDBMS课程,要成为SQL程序员还需要掌握一些技能。那时SQL产品价格昂贵,并且最好的产品都用在大型机上。
现在大学本科课程已不再讲授RDBMS理论。SQL不再像从前那样新奇,人们也能够找到便宜或开源的SQL数据库。因特网有许多新闻组,从中可以得到某个产品的帮助信息。..
糟糕的是SQL程序员的素质下降了,因为在没有RDBMS基础或者没有接受过SQL培训的情况下,就要求程序员在他们的宿主编程语言中编写SQL。
这本谜题集包含了本书第1版中的谜题,这样原来的读者可以找到他们最喜欢的谜题。不过其中很多谜题现在都有了新的解答,有些使用老的句法,有些使用新的特性。这些年来很多原有的解答都被其他人回炉加工过了。“回炉加工”是谜题术语,表示找到的解答比出谜题人提供的解答更好。本书第1版包含50道谜题,这一版包含75道谜题。
在第1版中,我是按照类别而不是按照时间顺序或复杂度来组织这些谜题的。但在这个版本,我放弃了这种不正式的分类方式,因为这样做没有意义。一个问题可以通过更改DDL或查询来解决,那它应该归到DDL谜题还是DML谜题呢?
每一道题目所涉及的人我都尽量列出了姓名,若有遗漏,我深表歉意。
致谢、校正及未来的版本
我将很高兴收到本书的校正、新的解题窍门和技巧,以及其他有关本书未来版本的建议。请将你的想法发送给我,或通过Morgan Kaufmann出版社与我联系。
我要感谢Morgan Kaufmann出版社的Diane Cerra、DBMS杂志的David Kalman和Maurice Frank、Database Programming & Design杂志的David Stodder、Miller-Freeman公司的Phil Chapnick、Boxes & Arrows的Frank Sweet以及www.dbazine.com的Dana Farver。
特别要感谢Smith Barney的Richard Romley,他帮助我回炉加工了许多早期的谜题;特别感谢这些年不断给我发电子邮件的CompuServe和SQL新闻组的所有人,以及现在还在新闻组上发帖子的人(我使用了你们新闻组名字,这样人们就可以搜索到你们的帖子)。这些人包括(但不限于)Raymond D’Anjou、Dieter Noeth、Alexander Kuznetsov、Andrey Odegov、Steve Kass、Tibor Karaszi、David Portas、Hugo Kornelis、Aaron Bertrand、Itzik Ben-Gan、Tom Moreau、Serge Rielau、Erland Sommarskog、Mikito Harakiri、Adam Machanic及Daniel A. Morgan。...
“本书是数据库界最受尊敬的专家Joe Celko众多经典图书中的一部。书中汇集了许多含义丰富的难题,是SQL程序员修炼内功的绝佳之作。”.
——SQL-Server-Peformance.com
“这是一本绝妙的书!我用本书培训开发小组的成员,起到了意想不到的效果。大家的SQL技能都有了很大提高。”...
——Lex van de pol,荷兰资深项目经理
【插图】