基本信息

编辑推荐
网易CEO丁磊隆重推荐:
本书系统深入地讲解了MySQL数据库中SQL编程的各种方法、技巧和最佳实践,推荐DBA和开发人员参阅!
畅销书《MySQL技术内幕:InnoDB存储引擎》姊妹篇,揭示SQL编程的奥秘,演绎SQL编程之美
资深MySQL专家亲自执笔,多个技术社区和多位数据库专家联袂推荐
内容简介
计算机书籍
《MySQL技术内幕:SQL编程》是畅销书《MySQL技术内幕:InnoDB存储引擎》的姊妹篇,深刻揭示了MySQL中SQL编程的精髓与奥秘,能为开发者和DBA们利用SQL语言解决各种与开发和管理相关的MySQL难题提供很好的指导和帮助。
全书一共10章,全面探讨了MySQL中SQL编程的各种方法、技巧与最佳实践。第1章首先介绍了SQL编程的概念、数据库的应用类型以及SQL查询分析器,然后介绍了SQL编程的三个阶段,希望读者通过本书的学习能达到最后的融合阶段。第2章全面讲解了MySQL中的各种数据类型和与之相对应的各种编程问题。第3章深入探讨了逻辑查询与物理查询的原理与方法。第4章的主题是子查询,不仅讲解了各种常用的子查询方法及其优化,而且还讲解了MariaDB对子查询的优化。第5章首先详细地分析了MySQL中的各种联接及其内部的实现算法,以及MariaDB数据库中引入的Hash Join,然后针对关于集合的各种操作给出了解决方案。第6章分享了聚合和旋转操作的方法与技巧,并对一些经典的常见问题给出了解决方案。第7章深入阐述了游标的使用,重点在于如何通过正确地使用游标来提高SQL编程的效率。第8章讲解了关于事务的各种编程技巧,同时对事务的分类进行了详细阐述。第9章详细分析了各种索引的内部实现,探讨了如何使用索引来提升查询效率。第10章介绍了分区的方法与技巧,阐明了如何通过分区来进行SQL编程。
无论你是开发人员还是DBA,无论你是需要一本SQL查询手册还是希望系统深入地学习SQL编程,本书都会是不错的选择。
作译者
目录
序
前言
第1章 SQL编程/1
1.1 MySQL数据库/2
1.1.1 MySQL数据库历史/2
1.1.2 MySQL数据库的分支版本/4
1.2 SQL编程/5
1.3 数据库的应用类型/7
1.3.1 OLTP/7
1.3.2 OLAP/8
1.3.3 OLTP与OLAP的比较/9
1.3.4 MySQL存储引擎及其面向的数据库应用/10
1.4 图形化的SQL查询分析器/12
1.4.1 MySQL Workbench/12
1.4.2 Toad for MySQL/12
1.4.3 iMySQL-Front/13
1.5 小结/15
第2章 数据类型/16
2.1 类型属性/17
前言
多年来,我一直在和各种不同的数据库打交道,见证了MySQL从一个小型的关系型数据库发展成为各大互联网企业的核心数据库系统的过程,期间参与了一些大大小小的项目开发工作,并成功地帮助开发人员构建了一些可靠的、健壮的应用程序。在这个过程中我积累了一些经验,正是这些不断累积的经验赋予了我灵感,于是有了本书。这本书实际上反映了这些年来我做了哪些事情,汇集了很多同行每天可能会遇到的一些问题,并给出了解决方案。
本书是“MySQL技术内幕”系列的第二本书,我将其命名为“SQL编程”而非“SQL查询”,因为我想让更多的开发人员和DBA意识到SQL也是一门语言,与我们平时接触的C语言等编程语言并没有什么不同。正因如此,我们也要追求SQL的编程之美。
然而与其他语言不同的是,SQL语言不仅是面向过程的语言,更多的时候,通过SQL语言提供的面向集合的思想可以解决数据库中遇到的很多问题。当然,SQL语言本身也提供了面向过程的方法,但是如果使用不当,会在数据库性能方面遭遇梦魇。SQL编程需要掌握的知识远比想象中多,只有掌握各种知识,综合运用面向过程和面向集合的思想,才能真正解决所遇到的问题。不要迷信网上的任何“神话”,不要被自己或他人的经验所左右。我一直坚信,只有理解了数据库内部运行的原理,才能承自然之道,“乘天地之正,而御六气之辩”,做到真正的“无招胜有招”。
另一方面,MySQL数据库目前大多被用于互联网的联机事务处理应用中,给大部分用户造成MySQL数据库不能执行复杂SQL查询的错觉。本书将列举各种复杂的查询,使用户了解MySQL数据库处理复杂查询的执行过程。此外,由于MySQL数据库的不断发展,其分支版本已经开始支持Hash Join。相信随着时间的推移以及MySQL数据库本身的不断发展,MySQL数据库同样会在联机分析处理应用中占有一席之地。大家需要做好这方面的准备,这也是本书将提供给你的。
最后,希望这本书可以引领开发人员及DBA从不同的角度来看待SQL语言和数据库的开发工作。倘若这本书能解决你在实际生产环境中遇到的问题,我会非常荣幸。
读者对象
数据库管理员
数据库开发人员
数据库架构设计师
各类应用程序开发人员
如何阅读本书
书中的示例一共用到三个数据库文件:一个是employees数据库,该数据库是MySQL数据库官方提供的示例数据库,主要用来模拟公司员工的数据,用户可以通过官网下载(http://dev.mysql.com/doc/index-other.html);另一个是dbt3数据库,是通过Database Test Suite程序生成的,该数据库较大,主要用来展示一些复杂的查询;还有一个tpcc数据库,是一个模拟TPC-C测试的数据库,用户可以从http://code.google.com/p/david-mysql-tools/下载。
本书一共有10章,每章都像一本迷你书,可以单独成册。用户可以有选择地阅读,但是推荐根据本书的组织方式进行阅读,这样会更具有条理性。
第1章SQL编程
主要介绍了MySQL数据库的发展历史和什么是SQL编程。希望读者能通过该章了解MySQL的深厚历史背景,并且知道它已经不再是一个小型关系型数据库系统。此外,还重点强调了SQL编程的三个阶段,希望读者可以通过本书的学习达到最后的融合阶段。
第2章数据类型
详细介绍了MySQL数据库中的各种数据类型和与之相应的各种SQL编程问题。数据类型是SQL编程的基石。每一位MySQL数据库应用的开发人员都应该好好阅读本章。
第3章查询处理
深入探讨了逻辑查询与物理查询。逻辑查询帮助读者理解数据库应该得到怎样的结果;物理查询是MySQL数据库通过分析表的结构,选择最小成本的执行计划来处理SQL语句,但是无论怎样,最终的结果应该和逻辑查询一样。
序言
自我认识David(本书作者)以来,他就致力于MySQL底层原理的研究,当大多数人还在苦恼于如何编写SQL语句时,他已经在剖析MySQL内部的运作机理。也许,数据库呈现在众人眼前的还是一个黑匣子,而在David眼里就犹如一块由数百齿轮结合在一起精妙运转的怀表。当得知他的下本书将介绍SQL编程时,我不禁欣喜若狂。正如David所言,SQL是一门语言,也有其特有的语言艺术,只有深层次地挖掘语言内部的含义才能将想执行的操作描述得简洁高效。当我阅读此书并跟着作者的思路层层解析SQL编程时,经常会感叹,在数据库的许多细小操作上竟有如此多令人意想不到的亮点。如果说作者的上一本书—《MySQL技术内幕:InnoDB存储引擎》是面向OLTP的精华教程,那么本书将是OLAP的高阶宝典,它从编程的角度诠释了数据库语言的魅力,这恰恰是我们在实际生产环境中需要的。
在平时的工作中,David时常会有新颖的想法,记得在固态硬盘发布之初,其虽然有着优越的性能,但是高额的价格使开发者在大规模存储前对其望而止步。而David提出了使用固态硬盘做第二缓冲池(Secondary Buffer Pool)的设想,如今已被新浪投入生产使用,可见其独到的眼光。
《MySQL技术内幕:SQL编程》到底是怎样的一本书?在这本书中,David将会为你揭示关于MySQL不为人知的奥秘。相信读完此书,你对MySQL的SQL编程认识将达到一个新的水平。
—鹿遥火游网络科技有限公司数据库经理
媒体评论
——ChinaUnix社区& ITpub社区
本书的内容是告诉你如何使用SQL语言指挥数据库这个“庞然大物”。人与人的沟通需要技巧,与数据库沟通更需要技巧,而一切沟通都需要先从熟悉语言开始。作者沉迷于数据库的世界多年,有天赋,也肯下苦功,是我见过的最优秀的DBA之一。他熟知SQL的各种语法技巧,结合日常工作中的经验和领悟,写出了这本“内幕”。相信我,不管你是需要一本SQL查询手册,还是想要获得更多SQL编程的经验技巧,本书都不可不读。
——顾懿 久游网首席运营官
我是几年前在某个技术社区中认识David的,记得他总能用深入原理性的阐述来解答网友的疑惑。从中可以看出他对MySQL尤其是InnoDB引擎的理解之深,他的上一本著作《MySQL技术内幕:InnoDB存储引擎》推出后广获好评,填补了业界系统化讲解InnoDB引擎原理的空白。本书详细讲解了子查询、表连接、聚合、事务、索引等SQL编程各环节所涉及的内容,全面揭示了MySQL中SQL编程的奥妙,用事实证明了MySQL也是可以处理复杂SQL查询的,而非只是个玩具。在这里,我向开发人员、DBA以及所有对MySQL有兴趣的读者推荐本书,将使你受益匪浅。相信它将再次掀起习MySQL的热潮。
——叶金荣 ChinaUnix社区 MySQL版主
无论是与MySQL数据库相关的开发工作,还是MySQL数据库的管理与维护,SQL语言都发挥着极为重要的作用。所以,对于数据管理人员(DBA)和开发人员来说,掌握SQL编程技巧是全面了解数据库系统的必备条件之一。本书结合MySQL的历史、辅助工具、内部工作机制等多个角度详细讲解了SQL编程的方法,展示了SQL在MySQL数据库编程方面(尤其是性能方面)的高级技巧。对于想全面深入地学习SQL编程和MySQL数据库的读者而言,本书不可多得。
——郭鹏 《Cassandra实战》作者/专注于Hadoop&NoSQL技术研究