MySQL技術(shù)內(nèi)幕

出版時(shí)間:2012-4-15  出版社:機(jī)械工業(yè)出版社華章公司  作者:姜承堯  頁(yè)數(shù):324  
Tag標(biāo)簽:無(wú)  

前言

前言:為什么要寫這本書(shū)多年來(lái),我一直在和各種不同的數(shù)據(jù)庫(kù)打交道,見(jiàn)證了MySQL從一個(gè)小型的關(guān)系型數(shù)據(jù)庫(kù)發(fā)展成為各大互聯(lián)網(wǎng)企業(yè)的核心數(shù)據(jù)庫(kù)系統(tǒng)的過(guò)程,期間參與了一些大大小小的項(xiàng)目開(kāi)發(fā)工作,并成功地幫助開(kāi)發(fā)人員構(gòu)建了一些可靠的、健壯的應(yīng)用程序。在這個(gè)過(guò)程中我積累了一些經(jīng)驗(yàn),正是這些不斷累積的經(jīng)驗(yàn)賦予了我靈感,于是有了本書(shū)。這本書(shū)實(shí)際上反映了這些年來(lái)我做了哪些事情,匯集了很多同行每天可能會(huì)遇到的一些問(wèn)題,并給出了解決方案。本書(shū)是“MySQL技術(shù)內(nèi)幕”系列的第二本書(shū),我將其命名為“SQL編程”而非“SQL查詢”,因?yàn)槲蚁胱尭嗟拈_(kāi)發(fā)人員和DBA意識(shí)到SQL也是一門語(yǔ)言,與我們平時(shí)接觸的C語(yǔ)言等編程語(yǔ)言并沒(méi)有什么不同。正因如此,我們也要追求SQL的編程之美。然而與其他語(yǔ)言不同的是,SQL語(yǔ)言不僅是面向過(guò)程的語(yǔ)言,更多的時(shí)候,通過(guò)SQL語(yǔ)言提供的面向集合的思想可以解決數(shù)據(jù)庫(kù)中遇到的很多問(wèn)題。當(dāng)然,SQL語(yǔ)言本身也提供了面向過(guò)程的方法,但是如果使用不當(dāng),會(huì)在數(shù)據(jù)庫(kù)性能方面遭遇夢(mèng)魘。SQL編程需要掌握的知識(shí)遠(yuǎn)比想象中多,只有掌握各種知識(shí),綜合運(yùn)用面向過(guò)程和面向集合的思想,才能真正解決所遇到的問(wèn)題。不要迷信網(wǎng)上的任何“神話”,不要被自己或他人的經(jīng)驗(yàn)所左右。我一直堅(jiān)信,只有理解了數(shù)據(jù)庫(kù)內(nèi)部運(yùn)行的原理,才能承自然之道,“乘天地之正,而御六氣之辯”,做到真正的“無(wú)招勝有招”。另一方面,MySQL數(shù)據(jù)庫(kù)目前大多被用于互聯(lián)網(wǎng)的聯(lián)機(jī)事務(wù)處理應(yīng)用中,給大部分用戶造成MySQL數(shù)據(jù)庫(kù)不能執(zhí)行復(fù)雜SQL查詢的錯(cuò)覺(jué)。本書(shū)將列舉各種復(fù)雜的查詢,使用戶了解MySQL數(shù)據(jù)庫(kù)處理復(fù)雜查詢的執(zhí)行過(guò)程。此外,由于MySQL數(shù)據(jù)庫(kù)的不斷發(fā)展,其分支版本已經(jīng)開(kāi)始支持Hash Join。相信隨著時(shí)間的推移以及MySQL數(shù)據(jù)庫(kù)本身的不斷發(fā)展,MySQL數(shù)據(jù)庫(kù)同樣會(huì)在聯(lián)機(jī)分析處理應(yīng)用中占有一席之地。大家需要做好這方面的準(zhǔn)備,這也是本書(shū)將提供給你的。最后,希望這本書(shū)可以引領(lǐng)開(kāi)發(fā)人員及DBA從不同的角度來(lái)看待SQL語(yǔ)言和數(shù)據(jù)庫(kù)的開(kāi)發(fā)工作。倘若這本書(shū)能解決你在實(shí)際生產(chǎn)環(huán)境中遇到的問(wèn)題,我會(huì)非常榮幸。讀者對(duì)象數(shù)據(jù)庫(kù)管理員數(shù)據(jù)庫(kù)開(kāi)發(fā)人員數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)師各類應(yīng)用程序開(kāi)發(fā)人員如何閱讀本書(shū)書(shū)中的示例一共用到三個(gè)數(shù)據(jù)庫(kù)文件:一個(gè)是employees數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)是MySQL數(shù)據(jù)庫(kù)官方提供的示例數(shù)據(jù)庫(kù),主要用來(lái)模擬公司員工的數(shù)據(jù),用戶可以通過(guò)官網(wǎng)下載(http://dev.mysql.com/doc/index-other.html);另一個(gè)是dbt3數(shù)據(jù)庫(kù),是通過(guò)Database Test Suite程序生成的,該數(shù)據(jù)庫(kù)較大,主要用來(lái)展示一些復(fù)雜的查詢;還有一個(gè)tpcc數(shù)據(jù)庫(kù),是一個(gè)模擬TPC-C測(cè)試的數(shù)據(jù)庫(kù),用戶可以從http://code.google.com/p/david-mysql-tools/下載。本書(shū)一共有10章,每章都像一本迷你書(shū),可以單獨(dú)成冊(cè)。用戶可以有選擇地閱讀,但是推薦根據(jù)本書(shū)的組織方式進(jìn)行閱讀,這樣會(huì)更具有條理性。第1章 SQL編程主要介紹了MySQL數(shù)據(jù)庫(kù)的發(fā)展歷史和什么是SQL編程。希望讀者能通過(guò)該章了解MySQL的深厚歷史背景,并且知道它已經(jīng)不再是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)。此外,還重點(diǎn)強(qiáng)調(diào)了SQL編程的三個(gè)階段,希望讀者可以通過(guò)本書(shū)的學(xué)習(xí)達(dá)到最后的融合階段。第2章 數(shù)據(jù)類型詳細(xì)介紹了MySQL數(shù)據(jù)庫(kù)中的各種數(shù)據(jù)類型和與之相應(yīng)的各種SQL編程問(wèn)題。數(shù)據(jù)類型是SQL編程的基石。每一位MySQL數(shù)據(jù)庫(kù)應(yīng)用的開(kāi)發(fā)人員都應(yīng)該好好閱讀本章。第3章 查詢處理深入探討了邏輯查詢與物理查詢。邏輯查詢幫助讀者理解數(shù)據(jù)庫(kù)應(yīng)該得到怎樣的結(jié)果;物理查詢是MySQL數(shù)據(jù)庫(kù)通過(guò)分析表的結(jié)構(gòu),選擇最小成本的執(zhí)行計(jì)劃來(lái)處理SQL語(yǔ)句,但是無(wú)論怎樣,最終的結(jié)果應(yīng)該和邏輯查詢一樣。第4章 子查詢子查詢是被很多開(kāi)發(fā)人員和DBA詬病的一個(gè)方面。如何正確地理解MySQL子查詢的執(zhí)行方式并實(shí)現(xiàn)對(duì)其優(yōu)化,是本章最重要的任務(wù)。本章的最后還講解了MySQL分支版本MariaDB對(duì)子查詢的優(yōu)化。在MariaDB數(shù)據(jù)庫(kù)中,子查詢?cè)僖膊皇鞘裁措y題了。第5章 聯(lián)接與集合操作聯(lián)接和集合是關(guān)系數(shù)據(jù)庫(kù)中常見(jiàn)的操作,該章詳細(xì)而深入地介紹了MySQL數(shù)據(jù)庫(kù)中的各種聯(lián)接及其內(nèi)部的實(shí)現(xiàn)算法,同時(shí)也介紹了MariaDB數(shù)據(jù)庫(kù)中引入的Hash Join,彌補(bǔ)了MySQL數(shù)據(jù)庫(kù)在OLAP應(yīng)用中的短板。本章最后針對(duì)集合的各種操作給出了解決方案。第6章 聚合和旋轉(zhuǎn)操作聚合與旋轉(zhuǎn)在報(bào)表系統(tǒng)中非常常見(jiàn),本章主要講解了MySQL數(shù)據(jù)庫(kù)對(duì)上述兩種操作的處理方法,以及一些常見(jiàn)問(wèn)題的解決方案。第7章 游標(biāo)游標(biāo)是面向過(guò)程的編程方式,這與前幾章介紹的面向集合的編程方式不同。雖然在大多數(shù)情況下游標(biāo)處理的性能較低,但是只要在正確的場(chǎng)合使用,游標(biāo)也會(huì)使SQL編程的效率得到極大提升。第8章 事務(wù)編程全面講解了MySQL數(shù)據(jù)庫(kù)中關(guān)于事務(wù)的各種編程技巧,同時(shí)也對(duì)事物的分類進(jìn)行了詳細(xì)的介紹。本章主要面向以InnoDB存儲(chǔ)引擎為核心的應(yīng)用編程。第9章 索引一般來(lái)說(shuō),索引可以提高SQL語(yǔ)句的執(zhí)行速度,但是并非所有情況都是如此。本章詳細(xì)分析了各種索引的內(nèi)部實(shí)現(xiàn),以及哪種情況下使用索引可以帶來(lái)效率的提升。這對(duì)SQL編程來(lái)說(shuō)非常重要。第10章 分區(qū)分區(qū)是設(shè)計(jì)表時(shí)需要考慮的重要問(wèn)題之一。正確和有效地分區(qū)會(huì)對(duì)SQL編程帶來(lái)巨大的影響。本章告訴讀者應(yīng)該如何分區(qū),以及如何通過(guò)分區(qū)來(lái)進(jìn)行SQL編程。

內(nèi)容概要

本書(shū)是暢銷書(shū)《MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎》的姊妹篇,深刻揭示了MySQL中SQL編程的精髓與奧秘,能為開(kāi)發(fā)者和DBA們利用SQL語(yǔ)言解決各種與開(kāi)發(fā)和管理相關(guān)的MySQL難題提供很好的指導(dǎo)和幫助。
全書(shū)一共10章,全面探討了MySQL中SQL編程的各種方法、技巧與最佳實(shí)踐。第1章首先介紹了SQL編程的概念、數(shù)據(jù)庫(kù)的應(yīng)用類型以及SQL查詢分析器,然后介紹了SQL編程的三個(gè)階段,希望讀者通過(guò)本書(shū)的學(xué)習(xí)能達(dá)到最后的融合階段。第2章全面講解了MySQL中的各種數(shù)據(jù)類型和與之相對(duì)應(yīng)的各種編程問(wèn)題。第3章深入探討了邏輯查詢與物理查詢的原理與方法。第4章的主題是子查詢,不僅講解了各種常用的子查詢方法及其優(yōu)化,而且還講解了MariaDB對(duì)子查詢的優(yōu)化。第5章首先詳細(xì)地分析了MySQL中的各種聯(lián)接及其內(nèi)部的實(shí)現(xiàn)算法,以及MariaDB數(shù)據(jù)庫(kù)中引入的Hash
Join,然后針對(duì)關(guān)于集合的各種操作給出了解決方案。第6章分享了聚合和旋轉(zhuǎn)操作的方法與技巧,并對(duì)一些經(jīng)典的常見(jiàn)問(wèn)題給出了解決方案。第7章深入闡述了游標(biāo)的使用,重點(diǎn)在于如何通過(guò)正確地使用游標(biāo)來(lái)提高SQL編程的效率。第8章講解了關(guān)于事務(wù)的各種編程技巧,同時(shí)對(duì)事務(wù)的分類進(jìn)行了詳細(xì)闡述。第9章詳細(xì)分析了各種索引的內(nèi)部實(shí)現(xiàn),探討了如何使用索引來(lái)提升查詢效率。第10章介紹了分區(qū)的方法與技巧,闡明了如何通過(guò)分區(qū)來(lái)進(jìn)行SQL編程。
無(wú)論你是開(kāi)發(fā)人員還是DBA,無(wú)論你是需要一本SQL查詢手冊(cè)還是希望系統(tǒng)深入地學(xué)習(xí)SQL編程,本書(shū)都會(huì)是不錯(cuò)的選擇。

作者簡(jiǎn)介

姜承堯(David
Jiang),資深MySQL數(shù)據(jù)庫(kù)專家,MySQL開(kāi)源分支版本InnoSQL
的創(chuàng)始人,獨(dú)立數(shù)據(jù)庫(kù)咨詢顧問(wèn)不僅擅長(zhǎng)于數(shù)據(jù)庫(kù)的管理和維護(hù),還擅長(zhǎng)于數(shù)據(jù)庫(kù)的開(kāi)發(fā),同時(shí)一直致力于MySQL數(shù)據(jù)庫(kù)底層實(shí)現(xiàn)原理的研究和探索,對(duì)高性能數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)也有深刻而獨(dú)到的理解。目前就職于網(wǎng)易研究院,擔(dān)任后臺(tái)技術(shù)中心技術(shù)經(jīng)理一職,從事MySQL數(shù)據(jù)庫(kù)底層以及云的相關(guān)的開(kāi)發(fā)工作。曾領(lǐng)導(dǎo)并參與了多個(gè)大型核心數(shù)據(jù)庫(kù)應(yīng)用的設(shè)計(jì)、實(shí)施、管理和維護(hù),實(shí)戰(zhàn)經(jīng)驗(yàn)非常豐富?;钴S于開(kāi)源數(shù)據(jù)庫(kù)和開(kāi)源軟件領(lǐng)域,是著名開(kāi)源社區(qū)ChinaUnix
MySQL版塊的版主,熱衷于分享MySQL數(shù)據(jù)庫(kù)的各種成功應(yīng)用實(shí)踐。

書(shū)籍目錄


前言
第1章 SQL編程
 1.1 MySQL數(shù)據(jù)庫(kù)
 1.1.1 MySQL數(shù)據(jù)庫(kù)歷史
 1.1.2 MySQL數(shù)據(jù)庫(kù)的分支版本
 1.2 SQL編程
 1.3 數(shù)據(jù)庫(kù)的應(yīng)用類型
 1.3.1 OLTP
 1.3.2 OLAP
 1.3.3 OLTP與OLAP的比較
 1.3.4 MySQL存儲(chǔ)引擎及其面向的數(shù)據(jù)庫(kù)應(yīng)用
 1.4 圖形化的SQL查詢分析器
 1.4.1 MySQL Workbench
 1.4.2 Toad for MySQL
 1.4.3 iMySQL-Front
 1.5 小結(jié)
第2章 數(shù)據(jù)類型
 2.1 類型屬性
 2.1.1 UNSIGNED
 2.1.2 ZEROFILL
 2.2 SQL_MODE設(shè)置
 2.3 日期和時(shí)間類型
 2.3.1 DATETIME和 DATE
 2.3.2 TIMESTAMP
 2.3.3 YEAR和TIME
 2.3.4 與日期和時(shí)間相關(guān)的函數(shù)
 2.4 關(guān)于日期的經(jīng)典SQL編程問(wèn)題
 2.4.1 生日問(wèn)題
 2.4.2 重疊問(wèn)題
 2.4.3 星期數(shù)的問(wèn)題
 2.5 數(shù)字類型
 2.5.1 整型
 2.5.2 浮點(diǎn)型(非精確類型)
 2.5.3 高精度類型
 2.5.4 位類型
 2.6 關(guān)于數(shù)字的經(jīng)典SQL編程問(wèn)題
 2.6.1 數(shù)字輔助表
 2.6.2 連續(xù)范圍問(wèn)題
 2.7 字符類型
 2.7.1 字符集
 2.7.2 排序規(guī)則
 2.7.3 CHAR和VARCHAR
 2.7.4 BINARY和VARBINARY
 2.7.5 BLOB和TEXT
 2.7.6 ENUM和SET類型
 2.8 小結(jié)
第3章 查詢處理
 3.1 邏輯查詢處理
 3.1.1 執(zhí)行笛卡兒積
 3.1.2 應(yīng)用ON過(guò)濾器
 3.1.3 添加外部行
 3.1.4 應(yīng)用WHERE過(guò)濾器
 3.1.5 分組
 3.1.6 應(yīng)用ROLLUP或CUBE
 3.1.7 應(yīng)用HAVING過(guò)濾器
 3.1.8 處理SELECT列表
 3.1.9 應(yīng)用DISTINCT子句
 3.1.10 應(yīng)用ORDER BY子句
 3.1.11 LIMIT子句
 3.2 物理查詢處理
 3.3 小結(jié)
第4章 子查詢
 4.1 子查詢概述
 4.1.1 子查詢的優(yōu)點(diǎn)和限制
 4.1.2 使用子查詢進(jìn)行比較
 4.1.3 使用ANY、IN和SOME進(jìn)行子查詢
 4.1.4 使用ALL進(jìn)行子查詢
 4.2 獨(dú)立子查詢
 4.3 相關(guān)子查詢
 4.4 EXISTS謂詞
 4.4.1 EXISTS
 4.4.2 NOT EXISTS
 4.5 派生表
 4.6 子查詢可以解決的經(jīng)典問(wèn)題
 4.6.1 行號(hào)
 4.6.2 分區(qū)
 4.6.3 最小缺失值問(wèn)題
 4.6.4 缺失范圍和連續(xù)范圍
 4.7 MariaDB對(duì)SEMI JOIN的優(yōu)化
 4.7.1 概述
 4.7.2 Table Pullout優(yōu)化
 4.7.3 Duplicate Weedout 優(yōu)化
 4.7.4 Materialization優(yōu)化
 4.8 小結(jié)
第5章 聯(lián)接與集合操作
 5.1 聯(lián)接查詢
 5.1.1 新舊查詢語(yǔ)法
 5.1.2 CROSS JOIN
 5.1.3 INNER JOIN
 5.1.4 OUTER JOIN
 5.1.5 NATURAL JOIN
 5.1.6 STRAIGHT_JOIN
 5.2 其他聯(lián)接分類
 5.2.1 SELF JOIN
 5.2.2 NONEQUI JOIN
 5.2.3 SEMI JOIN和ANTI SEMI JOIN
 5.3 多表聯(lián)接
 5.4 滑動(dòng)訂單問(wèn)題
 5.5 聯(lián)接算法
 5.5.1 Simple Nested-Loops Join算法
 5.5.2 Block Nested-Loops Join算法
 5.5.3 Batched Key Access Join算法
 5.5.4 Classic Hash Join算法
 5.6 集合操作
 5.6.1 集合操作的概述
 5.6.2 UNION DISTINCT和UNION ALL
 5.6.3 EXCEPT
 5.6.4 INTERSECT
 5.7 小結(jié)
第6章 聚合和旋轉(zhuǎn)操作
 6.1 聚合
 6.1.1 聚合函數(shù)
 6.1.2 聚合的算法
 6.2 附加屬性聚合
 6.3 連續(xù)聚合
 6.3.1 累積聚合
 6.3.2 滑動(dòng)聚合
 6.3.3 年初至今聚合
 6.4 Pivoting
 6.4.1 開(kāi)放架構(gòu)
 6.4.2 關(guān)系除法
 6.4.3 格式化聚合數(shù)據(jù)
 6.5 Unpivoting
 6.6 CUBE 和 ROLLUP
 6.6.1 ROLLUP
 6.6.2 CUBE
 6.7 小結(jié)
第7章 游標(biāo)
 7.1 面向集合與面向過(guò)程的開(kāi)發(fā)
 7.2 游標(biāo)的使用
 7.3 游標(biāo)的開(kāi)銷
 7.4 使用游標(biāo)解決問(wèn)題
 7.4.1 游標(biāo)的性能分析
 7.4.2 連續(xù)聚合
 7.4.3 最大會(huì)話數(shù)
 7.5 小結(jié)
第8章 事務(wù)編程
 8.1 事務(wù)概述
 8.2 事務(wù)的分類
 8.3 事務(wù)控制語(yǔ)句
 8.4 隱式提交的SQL語(yǔ)句
 8.5 事務(wù)的隔離級(jí)別
 8.6 分布式事務(wù)編程
 8.7 不好的事務(wù)編程習(xí)慣
 8.7.1 在循環(huán)中提交
 8.7.2 使用自動(dòng)提交
 8.7.3 使用自動(dòng)回滾
 8.8 長(zhǎng)事務(wù)
 8.9 小結(jié)
第9章 索引
 9.1 緩沖池、順序讀取與隨機(jī)讀取
 9.2 數(shù)據(jù)結(jié)構(gòu)與算法
 9.2.1 二分查找法
 9.2.2 二叉查找樹(shù)和平衡二叉樹(shù)
 9.3 B+樹(shù)
 9.3.1 B+樹(shù)的插入操作
 9.3.2 B+樹(shù)的刪除操作
 9.4 B+樹(shù)索引
 9.4.1 InnoDB B+樹(shù)索引
 9.4.2 MyISAM B+樹(shù)索引
 9.5 Cardinality
 9.5.1 什么是Cardinality
 9.5.2 InnoDB存儲(chǔ)引擎怎樣統(tǒng)計(jì)Cardinality
 9.6 B+樹(shù)索引的使用
 9.6.1 不同應(yīng)用中B+樹(shù)索引的使用
 9.6.2 聯(lián)合索引
 9.6.3 覆蓋索引
 9.6.4 優(yōu)化器選擇不使用索引的情況
 9.6.5 INDEX HINT
 9.7 Multi-Range Read
 9.8 Index Condition Pushdown
 9.9 T樹(shù)索引
 9.9.1 T樹(shù)概述
 9.9.2 T樹(shù)的查找、插入和刪除操作
 9.9.3 T樹(shù)的旋轉(zhuǎn)
 9.10 哈希索引
 9.10.1 散列表
 9.10.2 InnoDB存儲(chǔ)引擎中的散列算法
 9.10.3 自適應(yīng)哈希索引
 9.11 小結(jié)
第10章 分區(qū)
 10.1 分區(qū)概述
 10.2 分區(qū)類型
 10.2.1 RANGE分區(qū)
 10.2.2 LIST分區(qū)
 10.2.3 HASH分區(qū)
 10.2.4 KEY分區(qū)
 10.2.5 COLUMNS分區(qū)
 10.3 子分區(qū)
 10.4 分區(qū)中的NULL值
 10.5 分區(qū)和性能
 10.6 在表和分區(qū)間交換數(shù)據(jù)
 10.7 小結(jié)

章節(jié)摘錄

版權(quán)頁(yè):第1章 SQL編程1.1 MySQL數(shù)據(jù)庫(kù)1.2 SQL編程1.3 數(shù)據(jù)庫(kù)的應(yīng)用類型1.4 圖形化的SQL查詢分析器1.5 小結(jié)SQL是一種編程語(yǔ)言,用來(lái)解決關(guān)系數(shù)據(jù)庫(kù)中的相關(guān)問(wèn)題。SQL編程就是通過(guò)SQL語(yǔ)句來(lái)解決特定問(wèn)題的一種編程方式。本章將介紹MySQL數(shù)據(jù)庫(kù)中與SQL編程相關(guān)的基礎(chǔ)知識(shí),幫助SQL用戶更好地理解MySQL數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)應(yīng)用類型,以及與SQL編程相關(guān)的特定問(wèn)題。1.1 MySQL數(shù)據(jù)庫(kù)1.1.1 MySQL數(shù)據(jù)庫(kù)歷史 毫無(wú)疑問(wèn),目前MySQL已經(jīng)成為最為流行的開(kāi)源關(guān)系數(shù)據(jù)庫(kù)系統(tǒng),并且一步一步地占領(lǐng)了原有商業(yè)數(shù)據(jù)庫(kù)的市場(chǎng)??梢钥吹紾oogle、Facebook、Yahoo、網(wǎng)易、久游等大公司都在使用MySQL數(shù)據(jù)庫(kù),甚至將其作為核心應(yīng)用的數(shù)據(jù)庫(kù)系統(tǒng)。而MySQL數(shù)據(jù)庫(kù)也不再僅僅應(yīng)用于Web項(xiàng)目,其扮演的角色更為豐富。在網(wǎng)絡(luò)游戲領(lǐng)域中,大部分的后臺(tái)數(shù)據(jù)庫(kù)都采用MySQL數(shù)據(jù)庫(kù),如大家比較熟悉的勁舞團(tuán)、魔獸世界、Second Life等。很少能看到有哪個(gè)網(wǎng)絡(luò)游戲數(shù)據(jù)庫(kù)不是采用MySQL數(shù)據(jù)庫(kù)的。此外,MySQL數(shù)據(jù)庫(kù)已成功應(yīng)用于中國(guó)外匯交易中心、中國(guó)移動(dòng)、國(guó)家電網(wǎng)等許多項(xiàng)目中。越來(lái)越多的企業(yè)級(jí)項(xiàng)目應(yīng)用“見(jiàn)證”了MySQL數(shù)據(jù)庫(kù)的飛速發(fā)展,并預(yù)示著MySQL數(shù)據(jù)庫(kù)本身正在逐漸完善并走向成熟。以前會(huì)有人詬病MySQL為什么沒(méi)有視圖,沒(méi)有存儲(chǔ)過(guò)程,沒(méi)有觸發(fā)器,沒(méi)有事件調(diào)度器。而現(xiàn)在,MySQL還沒(méi)有什么呢?經(jīng)歷了MySQL 5.0和5.1的發(fā)展,如今MySQL數(shù)據(jù)庫(kù)迎來(lái)了重要的5.5版本。在了解MySQL 5.5帶給我們的新特性之前,我們先來(lái)看看MySQL的發(fā)展歷程。簡(jiǎn)單來(lái)說(shuō),MySQL數(shù)據(jù)庫(kù)的發(fā)展可以概括為三個(gè)階段:初期開(kāi)源數(shù)據(jù)庫(kù)階段。Sun MySQL階段。Oracle MySQL階段。很多人以為MySQL是最近15年內(nèi)才出現(xiàn)的數(shù)據(jù)庫(kù),其實(shí)MySQL數(shù)據(jù)庫(kù)的歷史可以追溯到1979年,那時(shí)Bill Gates退學(xué)沒(méi)多久,微軟公司也才剛剛起步,而Larry的Oracle公司也才成立不久。那時(shí)有一個(gè)天才程序員Monty Widenius為一個(gè)名為TcX的小公司打工,并且用BASIC設(shè)計(jì)了一個(gè)報(bào)表工具,使其可以在4MHz主頻和16KB內(nèi)存的計(jì)算機(jī)上運(yùn)行。沒(méi)過(guò)多久,Monty又將此工具用C語(yǔ)言進(jìn)行了重寫并移植到了UNIX平臺(tái)。當(dāng)時(shí),這只是一個(gè)很底層的且僅面向報(bào)表的存儲(chǔ)引擎,名叫Unireg。雖然TcX這個(gè)小公司資源有限,但Monty天賦極高,面對(duì)資源有限的不利條件,反而更能發(fā)揮他的潛能。Monty總是力圖寫出最高效的代碼,并因此養(yǎng)成了習(xí)慣。與Monty在一起的還有一些別的同事,很少有人能堅(jiān)持把那些代碼持續(xù)寫到20年后,而Monty卻做到了。

媒體關(guān)注與評(píng)論

David是ChinaUnix社區(qū)資深的MySQL版主,幾年來(lái),在論壇里熱心地為廣大MySQL DBA和開(kāi)發(fā)者解答了很多問(wèn)題,非常受歡迎。David是MySQL領(lǐng)域的專家,不僅多年來(lái)一直在國(guó)內(nèi)的大型企業(yè)從事MySQL相關(guān)的工作,而且還為MySQL編寫了許多開(kāi)源工具和性能擴(kuò)展補(bǔ)丁,對(duì)MySQL數(shù)據(jù)庫(kù)的使用(管理與開(kāi)發(fā))和原理都非常精通。本書(shū)是David多年工作經(jīng)驗(yàn)的結(jié)晶,系統(tǒng)深入地揭示了MySQL中SQL編程的方方面面,能為我們解決復(fù)雜的MySQL數(shù)據(jù)庫(kù)問(wèn)題提供很好的指導(dǎo)。強(qiáng)烈推薦!——ChinaUnix社區(qū)&ITpub社區(qū)本書(shū)的內(nèi)容是告訴你如何使用SQL語(yǔ)言指揮數(shù)據(jù)庫(kù)這個(gè)“龐然大物”。人與人的溝通需要技巧,與數(shù)據(jù)庫(kù)溝通更需要技巧,而一切溝通都需要先從熟悉語(yǔ)言開(kāi)始。作者沉迷于數(shù)據(jù)庫(kù)的世界多年,有天賦,也肯下苦功,是我見(jiàn)過(guò)的最優(yōu)秀的DBA之一。他熟知SQL的各種語(yǔ)法技巧,結(jié)合日常工作中的經(jīng)驗(yàn)和領(lǐng)悟,寫出了這本“內(nèi)幕”。相信我,不管你是需要一本SQL查詢手冊(cè),還是想要獲得更多SQL編程的經(jīng)驗(yàn)技巧,本書(shū)都不可不讀?!欆?久游網(wǎng)首席運(yùn)營(yíng)官我是幾年前在某個(gè)技術(shù)社區(qū)中認(rèn)識(shí)David的,記得他總能用深入原理性的闡述來(lái)解答網(wǎng)友的疑惑。從中可以看出他對(duì)MySQL尤其是InnoDB引擎的理解之深,他的上一本著作《MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎》推出后廣獲好評(píng),填補(bǔ)了業(yè)界系統(tǒng)化講解InnoDB引擎原理的空白。本書(shū)詳細(xì)講解了子查詢、表連接、聚合、事務(wù)、索引等SQL編程各環(huán)節(jié)所涉及的內(nèi)容,全面揭示了MySQL中SQL編程的奧妙,用事實(shí)證明了MySQL也是可以處理復(fù)雜SQL查詢的,而非只是個(gè)玩具。在這里,我向開(kāi)發(fā)人員、DBA以及所有對(duì)MySQL有興趣的讀者推薦本書(shū),將使你受益匪淺。相信它將再次掀起習(xí)MySQL的熱潮?!~金榮 ChinaUnix社區(qū) MySQL版主無(wú)論是與MySQL數(shù)據(jù)庫(kù)相關(guān)的開(kāi)發(fā)工作,還是MySQL數(shù)據(jù)庫(kù)的管理與維護(hù),SQL語(yǔ)言都發(fā)揮著極為重要的作用。所以,對(duì)于數(shù)據(jù)管理人員(DBA)和開(kāi)發(fā)人員來(lái)說(shuō),掌握SQL編程技巧是全面了解數(shù)據(jù)庫(kù)系統(tǒng)的必備條件之一。本書(shū)結(jié)合MySQL的歷史、輔助工具、內(nèi)部工作機(jī)制等多個(gè)角度詳細(xì)講解了SQL編程的方法,展示了SQL在MySQL數(shù)據(jù)庫(kù)編程方面(尤其是性能方面)的高級(jí)技巧。對(duì)于想全面深入地學(xué)習(xí)SQL編程和MySQL數(shù)據(jù)庫(kù)的讀者而言,本書(shū)不可多得?!i 《Cassandra實(shí)戰(zhàn)》作者、專注于Hadoop&NoSQL技術(shù)研究

編輯推薦

《MySQL技術(shù)內(nèi)幕:SQL編程》系統(tǒng)深入地講解了MySQL數(shù)據(jù)庫(kù)中SQL編程的各種方法、技巧和最佳實(shí)踐,推薦DBA和開(kāi)發(fā)人員參閱!暢銷書(shū)《MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎》姊妹篇,揭示SQL編程的奧秘,演繹SQL編程之美資深MySQL專家親自執(zhí)筆,多個(gè)技術(shù)社區(qū)和多位數(shù)據(jù)庫(kù)專家聯(lián)袂推薦。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    MySQL技術(shù)內(nèi)幕 PDF格式下載


用戶評(píng)論 (總計(jì)76條)

 
 

  •   看過(guò)他的前一本innodb的,覺(jué)得不錯(cuò),不過(guò)小弟不才,還沒(méi)看完,看到新出了SQL編程,立馬買來(lái)看看,總結(jié)的很多東西都蠻有用的,對(duì)于進(jìn)一步深入了解Mysql的執(zhí)行和優(yōu)化有很好的幫助
  •   一本了解mysql ,sql編程方面的不錯(cuò)的書(shū),好好看看。在sql方面一定有所長(zhǎng)進(jìn)。
  •   內(nèi)容很詳細(xì),有很少一部分基于一些php的示例。前期圍繞mysql 一些特性和 數(shù)據(jù)結(jié)構(gòu),后期大部分都是性能優(yōu)化,和DBA常用的一些知識(shí),講解基本比較到到位,也適合做一本工具書(shū),對(duì)于開(kāi)發(fā)人員部分章節(jié)也非常適合品讀。不錯(cuò)的一本書(shū),比較厚,可以花時(shí)間慢慢讀!
  •   這本書(shū)是網(wǎng)易的DBA姜承堯所著,經(jīng)驗(yàn)豐富的DBA,寫的書(shū)非常通俗易懂,讓我對(duì)SQL尤其是性能方面有了深入的了解
  •   MySQL的經(jīng)典書(shū),值到推薦
  •   結(jié)合著高性能mysql一起看,互相參考著看
  •   mysql理論講的很不錯(cuò)
  •   很好的一本mysql指導(dǎo)書(shū)
  •   書(shū)的做工很好,內(nèi)容符合我的語(yǔ)氣:不是講解源代碼的,是數(shù)據(jù)庫(kù)優(yōu)化方面的
  •   才看了一兩章在,覺(jué)得寫的確實(shí)不錯(cuò)
  •   各種技術(shù)內(nèi)幕,不過(guò)想熟悉還是要靠手指和大腦多寫多思考
  •   講解的不錯(cuò),需要有一定的基礎(chǔ)才能看懂
  •   原來(lái)是姊妹篇 還有上一本 不過(guò)單獨(dú)一本也獨(dú)立成體系 挺好的
  •   值得一看,初級(jí)入門階段
  •   不錯(cuò)的書(shū)啊,就是買得太晚了
  •   還沒(méi)有開(kāi)始看,書(shū)的印刷還不錯(cuò),送貨速度也比較快!
  •   包裝的挺不錯(cuò),今天下雨,送過(guò)來(lái)一點(diǎn)都沒(méi)濕。
  •   期待書(shū)的內(nèi)容,希望是本好書(shū)
  •   經(jīng)典書(shū)籍好好學(xué)習(xí)啊工具書(shū)
  •   剛開(kāi)始學(xué)習(xí),感覺(jué)學(xué)習(xí)內(nèi)容很豐富
  •   雖說(shuō)是基礎(chǔ) 但是里面也有好多東西 以前沒(méi)接觸過(guò)的 好好的學(xué)習(xí)吧
  •   很好 學(xué)習(xí)了
  •   東西很好,送貨很快。
  •   內(nèi)容相當(dāng)專業(yè)
  •   書(shū)還沒(méi)仔細(xì)看,送貨速度快!
  •   看電子書(shū) 累眼睛 還是紙質(zhì)的好
  •   還是值得好好讀一下。可以解惑。
  •   進(jìn)階的
  •   書(shū)的質(zhì)量很好,不太適合作為入門書(shū)籍
  •   超棒的書(shū),紙質(zhì)也很好,正好趕上打折太開(kāi)心了~
  •   比較基礎(chǔ),可以作為工具書(shū)
  •   剛拿到,這次送貨比較慢,看看吧
  •   看了又長(zhǎng)知識(shí)了
  •   書(shū)已到手,質(zhì)量很好,內(nèi)容就是我想要的!
  •   見(jiàn)過(guò)的紙質(zhì)最好的書(shū),頗有收獲
  •   書(shū)紙張不錯(cuò),對(duì)熟悉其他數(shù)據(jù)庫(kù)的人,想開(kāi)發(fā)mysql程序有很大的幫助
  •   內(nèi)容是我想看到的,關(guān)于怎樣優(yōu)化sql.
    只是看完有點(diǎn)不知其所以然
  •   方便平時(shí)的查詢
  •   這本書(shū)是很深入的講。但我只是普通的程序員,其中很多東西看的不是很懂。所以我給4分 。不是因?yàn)?這本是不好。是我不懂而已。不知道本書(shū)的姐妹篇怎么樣,一直沒(méi)有貨。
    現(xiàn)在 在研究一下redis 希望能出一些這樣的書(shū)籍。MRR那部分我還是比較感興趣的。但網(wǎng)上的資料比較少。期待作者可以寫篇博文出來(lái)。
  •   學(xué)點(diǎn)內(nèi)幕,加點(diǎn)知識(shí)籌碼
  •   書(shū)中內(nèi)容不錯(cuò),很有幫助
  •   感覺(jué)里面很多內(nèi)容都是針對(duì)有一定基礎(chǔ)的,我是邊看邊百度,而且感覺(jué)有些錯(cuò)誤,不過(guò)書(shū)還是挺不錯(cuò)的
  •   這本書(shū)整理來(lái)說(shuō)還是很不錯(cuò)。
  •   書(shū)角明顯磨損了,不影響閱讀,只是有點(diǎn)影響觀感,還是希望快遞溫柔點(diǎn)兒
  •   雖然已經(jīng)買回來(lái)好久了,但一直都還沒(méi)顧得上細(xì)看……so不能提供參考信息啦
  •   需要一定經(jīng)驗(yàn)才能完全吸收!
  •   后續(xù)還有,期望中!
  •   適合有一定經(jīng)驗(yàn)的人看,講的不是很細(xì)
  •   書(shū)比較薄,但是貴,內(nèi)容還可以
  •   好書(shū),我同事讓買的,據(jù)說(shuō)蠻好~
  •   正學(xué)著呢,暫時(shí)沒(méi)發(fā)現(xiàn)有何缺點(diǎn)。
  •   有點(diǎn)收獲,但也別指望太多
  •   學(xué)習(xí)mysql技術(shù)的可以研究下
  •   特殊應(yīng)用的案例比較多,但未形成系統(tǒng)性的東西。
  •   還不錯(cuò)還不錯(cuò)。。值得買
  •   基礎(chǔ)入門書(shū)籍,不適合有一定基礎(chǔ)的看
  •   還好,有些地方略嫌簡(jiǎn)略還好,有些地方略嫌簡(jiǎn)略
  •   如果你是初學(xué)者,強(qiáng)烈不建議看此書(shū),里面很多知識(shí)都是需要有一定MYSQL基礎(chǔ)才能看的懂!但是如果你是想進(jìn)階的話,其實(shí)此書(shū)內(nèi)容也不是特別好!無(wú)意中在網(wǎng)上搜了一下 貌似此書(shū)網(wǎng)上都有。
  •   講了很多細(xì)節(jié),很全面,作者很有功力,初學(xué)者有難度,
  •   有點(diǎn)小貴,找mysql的書(shū)時(shí)看評(píng)價(jià)買的,符合我當(dāng)時(shí)買的需求。
  •   講的 清晰透徹。好好研讀吧。
  •   乍看目錄包含得內(nèi)容真豐富,如果仔細(xì)看內(nèi)容就會(huì)覺(jué)得寫得有點(diǎn)晦澀難懂,不接地氣,好像在捧著漢典古籍,都是文言文。翻了幾頁(yè)我以為是從外文翻譯過(guò)來(lái)的所以有些句子不通,結(jié)果一看序文是咱們中國(guó)人自己寫的。中國(guó)人用漢字都能寫得這么拐彎抹角,只能說(shuō)沒(méi)有拿以人為本的精神做事情。這里面包含了很多連題設(shè)都沒(méi)闡述明白就開(kāi)始解題的例子,沒(méi)有站在讀者的角度考慮問(wèn)題,不能以為包含難題的書(shū)就是好書(shū),讓別人看得費(fèi)勁就是好書(shū)。老外很多大牛高手寫出來(lái)的書(shū)都是平易近人,簡(jiǎn)單易懂的,而且也有很多深入的例子,看起來(lái)一點(diǎn)都不費(fèi)勁,只是有些中文譯本句子不太通順。寫書(shū),不是羅列自己的經(jīng)驗(yàn)和成就,以人為本,用心站在讀者的角度上分析問(wèn)題。
  •   如果是剛接觸mysql,還是不要看這本書(shū),很深入,需要一定基礎(chǔ),實(shí)驗(yàn)很詳細(xì)
  •   還行吧,初學(xué)者比較適合
  •   各方面都不錯(cuò),事務(wù)部分沒(méi)有將行級(jí)鎖和事務(wù)。
  •   這本書(shū)還是有點(diǎn)難度的,特別是里面用到的官方案例……有點(diǎn)難導(dǎo)!
  •   本書(shū)是國(guó)內(nèi)作者原創(chuàng),寫的不錯(cuò)。本書(shū)涉及到許多MySQL開(kāi)發(fā)方面的相對(duì)高級(jí)的話題,許多內(nèi)容看著眼熟,感覺(jué)是仿造微軟的《SQL Server技術(shù)內(nèi)幕》系列寫的,當(dāng)然是用MySQL來(lái)實(shí)現(xiàn)相應(yīng)的問(wèn)題。有些問(wèn)題比如“滑動(dòng)訂單”在實(shí)際工作中不是很常見(jiàn)的需求。最后兩節(jié)講的是與開(kāi)發(fā)、管理都相關(guān)的話題:索引、分區(qū)。
  •   看了一半了,蠻適合剛?cè)腴T的,很好
  •   這本書(shū)還是不錯(cuò)的,是一般MySQL從初級(jí)到中級(jí)的書(shū)??赐暌院螅瑢?duì)數(shù)據(jù)庫(kù)有更深入的了解。但是在第七章中,對(duì)事務(wù)的講解還是比較淺顯的,在讀這章的時(shí)候,有些疑惑,自己在網(wǎng)上查找資料,配合閱讀。還有一點(diǎn)就是,和之前作者的另外一篇著作《MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎》做對(duì)比,里面內(nèi)容和章節(jié)有很多重復(fù)的,作者說(shuō)這兩部書(shū)是姐妹篇,在讀者看來(lái),其實(shí)只要買其中的一本就... 閱讀更多
  •   總體來(lái)說(shuō)講到了數(shù)據(jù)庫(kù)系統(tǒng)性能后面的一些原理,就那些對(duì)數(shù)據(jù)庫(kù)系統(tǒng)有初步認(rèn)識(shí)以及一定應(yīng)用經(jīng)歷的人來(lái)說(shuō),閱讀本書(shū)會(huì)有較大的收獲。遺憾的是,很多地方都講得不夠深入。比如,有關(guān)查詢優(yōu)化這么重要的內(nèi)容,也只是點(diǎn)了一些而已。
  •   發(fā)貨快,比商店便宜
  •   還好,就是桂了點(diǎn)
  •   MySQL技術(shù)內(nèi)幕:SQL編程
  •   mysql核心
  •   深入了解mysql很有用
  •   作者寫的東西很多
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7