具体描述
編輯推薦
《MySQL必知必會》是經典暢銷書《SQL必知必會》之後,作者應眾多讀者的請求編寫的,專門針對MySQL用戶。書中繼承瞭《MySQL必知必會》的優點,沒有過多闡述數據庫基礎理論,而是緊貼實戰需要,直接從數據檢索開始,逐步深入各種復雜的內容,包括聯結的使用、子查詢、正則錶達式和基於全文本的搜索、存儲過程、遊標、觸發器、錶約束,等等。通過本書,讀者能夠掌握紮實的基本功,迅速成為MySQL高手。
內容簡介
MySQL是世界上受歡迎的數據庫管理係統之一。書中從介紹簡單的數據檢索開始,逐步深入一些復雜的內容,包括聯結的使用、子查詢、正則錶達式和基於全文本的搜索、存儲過程、遊標、觸發器、錶約束,等等。通過重點突齣的章節,條理清晰、係統而扼要地講述瞭讀者應該掌握的知識,使他們不經意間立刻功力大增。
《MySQL必知必會》注重實用性,操作性很強,適用於廣大軟件開發和數據庫管理人員學習參考。
作者簡介
Ben Forta,世界知名的技術作傢,也是Adobe技術界知名的專傢之一,目前擔任Adobe公司的高級技術推廣專傢。他具有計算機行業20多年工作經驗,多年來撰寫瞭十幾本技術圖書,包括《正則錶達式必知必會》、《SQL必知必會》(人民郵電齣版社齣版)等世界性的暢銷書,已被翻譯為十幾種文字。
內頁插圖
精彩書評
★“此書使我獲益匪淺,書的內容和版式都堪稱完美,期待作者的下一部著作!”
——Raymond Camden,BroadChoice公司軟件開發副總裁
目錄
第1章 瞭解SQL
1.1 數據庫基礎
1.1.1 什麼是數據庫
1.1.2 錶
1.1.3 列和數據類型
1.1.4 行
1.1.5 主鍵
1.2 什麼是SQL
1.3 動手實踐
1.4 小結
第2章 MySQL簡介
2.1 什麼是MySQL
2.1.1 客戶機-服務器軟件
2.1.2 MySQL版本
2.2 MySQL工具
2.2.1 mysql命令行實用程序
2.2.2 MySQL Adminis-trator
2.2.3 MySQL Query Browser
2.3 小結
第3章 使用MySQL
3.1 連接
3.2 選擇數據庫
3.3 瞭解數據庫和錶
3.4 小結
第4章 檢索數據
4.1 SELECT語句
4.2 檢索單個列
4.3 檢索多個列
4.4 檢索所有列
4.5 檢索不同的行
4.6 限製結果
4.7 使用完全限定的錶名
4.8 小結
第5章 排序檢索數據
5.1 排序數據
5.2 按多個列排序
5.3 指定排序方嚮
5.4 小結
第6章 過濾數據
6.1 使用WHERE子句
6.2 WHERE子句操作符
6.2.1 檢查單個值
6.2.2 不匹配檢查
6.2.3 範圍值檢查
6.2.4 空值檢查
6.3 小結
第7章 數據過濾
7.1 組閤WHERE子句
7.1.1 AND操作符
7.1.2 OR操作符
7.1.3 計算次序
7.2 IN操作符
7.3 NOT操作符
7.4 小結
第8章 用通配符進行過濾
8.1 LIKE操作符
8.1.1 百分號(%)通配符
8.1.2 下劃綫(_)通配符
8.2 使用通配符的技巧
8.3 小結
第9章 用正則錶達式進行搜索
9.1 正則錶達式介紹
9.2 使用MySQL正則錶達式
9.2.1 基本字符匹配
9.2.2 進行OR匹配
9.2.3 匹配幾個字符之一
9.2.4 匹配範圍
9.2.5 匹配特殊字符
9.2.6 匹配字符類
9.2.7 匹配多個實例
9.2.8 定位符
9.3 小結
第10章 創建計算字段
10.1 計算字段
10.2 拼接字段
10.3 執行算術計算
10.4 小結
第11章 使用數據處理函數
11.1 函數
11.2 使用函數
11.2.1 文本處理函數
11.2.2 日期和時間處理函數
11.2.3 數值處理函數
11.3 小結
第12章 匯總數據
12.1 聚集函數
12.1.1 AVG()函數
12.1.2 COUNT()函數
12.1.3 MAX()函數
12.1.4 MIN()函數
12.1.5 SUM()函數
12.2 聚集不同值
12.3 組閤聚集函數
12.4 小結
第13章 分組數據
13.1 數據分組
13.2 創建分組
13.3 過濾分組
13.4 分組和排序
13.5 SELECT子句順序
13.6 小結
第14章 使用子查詢
14.1 子查詢
14.2 利用子查詢進行過濾
14.3 作為計算字段使用子查詢
14.4 小結
第15章 聯結錶
15.1 聯結
15.1.1 關係錶
15.1.2 為什麼要使用聯結
15.2 創建聯結
15.2.1 WHERE子句的重要性
15.2.2 內部聯結
15.2.3 聯結多個錶
15.3 小結
第16章 創建高級聯結
16.1 使用錶彆名
16.2 使用不同類型的聯結
16.2.1 自聯結
16.2.2 自然聯結
16.2.3 外部聯結
16.3 使用帶聚集函數的聯結
16.4 使用聯結和聯結條件
16.5 小結
第17章 組閤查詢
17.1 組閤查詢
17.2 創建組閤查詢
17.2.1 使用UNION
17.2.2 UNION規則
17.2.3 包含或取消重復的行
17.2.4 對組閤查詢結果排序
17.3 小結
第18章 全文本搜索
18.1 理解全文本搜索
18.2 使用全文本搜索
18.2.1 啓用全文本搜索支持
18.2.2 進行全文本搜索
18.2.3 使用查詢擴展
18.2.4 布爾文本搜索
18.2.5 全文本搜索的使用說明
18.3 小結
第19章 插入數據
19.1 數據插入
19.2 插入完整的行
19.3 插入多個行
19.4 插入檢索齣的數據
19.5 小結
第20章 更新和刪除數據
20.1 更新數據
20.2 刪除數據
20.3 更新和刪除的指導原則
20.4 小結
第21章 創建和操縱錶
21.1 創建錶
21.1.1 錶創建基礎
21.1.2 使用NULL值
21.1.3 主鍵再介紹
21.1.4 使用AUTO_ INCREMENT
21.1.5 指定默認值
21.1.6 引擎類型
21.2 更新錶
21.3 刪除錶
21.4 重命名錶
21.5 小結
第22章 使用視圖
22.1 視圖
22.1.1 為什麼使用視圖
22.1.2 視圖的規則和限製
22.2 使用視圖
22.2.1 利用視圖簡化復雜的聯結
22.2.2 用視圖重新格式化檢索齣的數據
22.2.3 用視圖過濾不想要的數據
22.2.4 使用視圖與計算字段
22.2.5 更新視圖
22.3 小結
第23章 使用存儲過程
23.1 存儲過程
23.2 為什麼要使用存儲過程
23.3 使用存儲過程
23.3.1 執行存儲過程
23.3.2 創建存儲過程
23.3.3 刪除存儲過程
23.3.4 使用參數
23.3.5 建立智能存儲過程
23.3.6 檢查存儲過程
23.4 小結
第24章 使用遊標
24.1 遊標
24.2 使用遊標
24.2.1 創建遊標
24.2.2 打開和關閉遊標
24.2.3 使用遊標數據
24.3 小結
第25章 使用觸發器
25.1 觸發器
25.2 創建觸發器
25.3 刪除觸發器
25.4 使用觸發器
25.4.1 INSERT觸發器
25.4.2 DELETE觸發器
25.4.3 UPDATE觸發器
25.4.4 關於觸發器的進一步介紹
25.5 小結
第26章 管理事務處理
26.1 事務處理
26.2 控製事務處理
26.2.1 使用ROLLBACK
26.2.2 使用COMMIT
26.2.3 使用保留點
26.2.4 更改默認的提交行為
26.3 小結
第27章 全球化和本地化
27.1 字符集和校對順序
27.2 使用字符集和校對順序
27.3 小結
第28章 安全管理
28.1 訪問控製
28.2 管理用戶
28.2.1 創建用戶賬號
28.2.2 刪除用戶賬號
28.2.3 設置訪問權限
28.2.4 更改口令
28.3 小結
第29章 數據庫維護
29.1 備份數據
29.2 進行數據庫維護
29.3 診斷啓動問題
29.4 查看日誌文件
29.5 小結
第30章 改善性能
30.1 改善性能
30.2 小結
附錄A MySQL入門
附錄B 樣例錶
附錄C MySQL語句的語法
附錄D MySQL數據類型
附錄E MySQL保留字
索引
精彩書摘
第1章 瞭解SQL
1.1 數據庫基礎
你正在閱讀本書,這錶明你需要以某種方式與數據庫打交道。在深入學習MySQL及其SQL語言的實現之前,應該對數據庫及數據庫技術的某些基本概念有所瞭解。
你可能還沒有意識到,其實你自己一直在使用數據庫。每當你從自己的電子郵件地址簿裏查找名字時,你就在使用數據庫。
……
前言/序言
MySQL已經成為世界上最受歡迎的數據庫管理係統之一。無論是用在小型開發項目上,還是用來構建那些聲名顯赫的網站,MySQL都證明瞭自己是個穩定、可靠、快速、可信的係統,足以勝任任何數據存儲業務的需要。本書基於我的一本暢銷書Sams Teach Yourself SQL in 10 Minutes(中文版《SQL必知必會》,人民郵電齣版社齣版),那本書堪稱全世界用得最多的一本SQL教程,重點講解讀者必須知道的東西,條理清晰,係統而扼要。但是,即使是那樣一本廣為使用的成功的書,也還存在著以下這些局限性。由於要麵嚮所有主要的數據庫管理係統(DBMS),我不得不把針對具體DBMS的內容一再壓縮。為瞭簡化SQL的講解,我必須(盡可能)隻寫各種主要的DBMS通用的SQL語句。這要求我不得不捨棄一些更好的、針對具體DBMS的解決方案。雖然基本的SQL在不同的DBMS間具有較好的可移植性,但是高級的SQL顯然不是這樣的。因此,那本書裏無法詳細講解比較高級的內容,如觸發器、遊標、存儲過程、訪問控製、事務等。於是就有瞭這本書。本書沿用瞭前一本書業已成功的教程模式和組織結構,除瞭:MySQL以外,不在其他內容上過多糾纏。
深入掌握數據處理的利器:MySQL實戰指南 本書並非直接介紹《MySQL必知必會》這一具體書籍的內容,而是旨在為讀者提供一個全麵的、實戰導嚮的學習路徑,幫助他們深入理解和熟練運用MySQL數據庫。我們相信,掌握MySQL不僅僅是學習一套語法,更是理解數據存儲、查詢、管理以及優化背後的原理,從而能夠高效地解決實際業務問題。因此,本書將圍繞MySQL的核心概念、關鍵功能以及高級應用,提供詳盡的講解和大量的實踐案例,讓您從入門到精通,成為一名閤格的數據庫開發者和管理員。 第一部分:MySQL基礎架構與核心概念 在開始任何數據庫操作之前,理解MySQL的底層架構至關重要。本部分將從MySQL的整體設計齣發,揭示其內部工作機製,幫助您建立堅實的基礎。 MySQL架構剖析: 我們將深入剖析MySQL服務器的各個組件,包括連接器(Connector)、查詢解析器(Query Parser)、優化器(Optimizer)、執行器(Executor)、存儲引擎(Storage Engine)等。理解這些組件如何協同工作,是解決性能瓶頸和進行高級調優的第一步。例如,我們會解釋查詢是如何從接收到最終返迴結果的完整流程,以及在不同階段可能遇到的問題。 存儲引擎的抉擇: MySQL支持多種存儲引擎,每種引擎都有其獨特的優勢和適用場景。本書將重點介紹InnoDB和MyISAM這兩種最常用的存儲引擎。我們將詳細對比它們的特性,包括事務支持、鎖機製、索引類型、全文檢索能力以及性能錶現。通過實際的性能測試和案例分析,指導您根據具體業務需求選擇最閤適的存儲引擎。例如,對於需要高並發讀寫和數據一緻性的Web應用,InnoDB是首選;而對於讀多寫少的日誌係統,MyISAM可能更具優勢。 數據類型詳解: 選擇正確的數據類型直接影響數據的存儲效率、查詢性能和數據完整性。本書將對MySQL提供的各種數據類型進行全麵解讀,包括整數類型(TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT)、浮點數類型(FLOAT, DOUBLE, DECIMAL)、字符串類型(CHAR, VARCHAR, TEXT, BLOB)、日期和時間類型(DATE, TIME, DATETIME, TIMESTAMP, YEAR)以及枚舉(ENUM)、集閤(SET)等。我們將通過示例說明各種數據類型的取值範圍、存儲空間占用以及在不同場景下的使用注意事項。例如,為什麼在存儲貨幣時應該使用DECIMAL而不是FLOAT,以及什麼時候應該選擇VARCHAR而不是CHAR。 SQL語言入門: 結構化查詢語言(SQL)是與MySQL交互的唯一方式。本部分將從最基本的SQL語句開始,逐步深入。我們將講解數據查詢(SELECT)、數據插入(INSERT)、數據更新(UPDATE)和數據刪除(DELETE)等DML(Data Manipulation Language)語句。重點在於掌握WHERE子句的靈活運用,以及ORDER BY、GROUP BY、HAVING子句在數據聚閤和排序中的作用。 錶的創建與約束: 數據的結構由錶定義。我們將學習如何使用CREATE TABLE語句創建錶,並詳細講解各種約束,如主鍵(PRIMARY KEY)、唯一鍵(UNIQUE)、外鍵(FOREIGN KEY)、非空約束(NOT NULL)以及默認值(DEFAULT)。理解並閤理使用約束,是保證數據完整性和一緻性的基石。我們會通過創建具有復雜關係的多錶結構來演示約束的實際應用。 第二部分:數據查詢與數據處理的藝術 熟練掌握SQL查詢是使用MySQL的關鍵。本部分將專注於提升您的數據查詢能力,讓您能夠從海量數據中精準提取所需信息。 多錶連接(JOIN): 在實際應用中,數據往往分布在多個錶中。本書將深入講解各種JOIN操作,包括INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN(在MySQL中通常通過組閤LEFT JOIN和RIGHT JOIN模擬)以及CROSS JOIN。我們將通過圖文並茂的方式解釋JOIN的工作原理,並提供大量的聯閤查詢示例,涵蓋一對一、一對多、多對多等關係的處理。例如,如何同時查詢用戶的訂單信息和商品詳情。 子查詢(Subqueries): 子查詢是SQL中一種強大的特性,允許您在主查詢中嵌套執行另一個查詢。我們將介紹標量子查詢、行量子查詢、錶量子查詢以及在WHERE, FROM, SELECT子句中使用子查詢的技巧。通過實際案例,展示如何使用子查詢解決復雜的數據篩選和聚閤問題。例如,查找齣所有訂單金額大於平均訂單金額的訂單。 函數與錶達式的靈活運用: MySQL提供瞭豐富的內置函數,涵蓋字符串處理、數學計算、日期時間操作、聚閤函數等。本書將係統介紹常用函數的用法,並指導您如何結閤錶達式構造復雜的查詢邏輯。例如,使用DATE_FORMAT函數格式化日期,使用CASE語句實現條件判斷,以及利用聚閤函數(SUM, AVG, COUNT, MAX, MIN)進行數據統計。 索引優化: 索引是提高查詢性能的關鍵。我們將深入講解不同類型的索引(B-tree, Hash, Full-text)以及索引的工作原理。重點在於如何根據查詢語句的特點,選擇閤適的列創建索引,以及如何避免常見的索引失效情況。我們將通過explain命令分析查詢計劃,直觀地展示索引對查詢性能的影響,並提供優化索引的策略。例如,分析為何某些WHERE子句會導緻索引失效,以及如何調整查詢語句以充分利用索引。 視圖(Views): 視圖是一種虛擬錶,其內容由查詢定義。視圖可以簡化復雜的查詢,提高數據的安全性。我們將講解如何創建、修改和刪除視圖,並演示視圖在數據抽象和授權方麵的應用。 事務(Transactions): 對於涉及多個操作的數據修改,事務能夠保證數據的一緻性。本書將詳細講解事務的基本概念(ACID特性)、事務的隔離級彆(READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE)以及如何使用BEGIN, COMMIT, ROLLBACK語句來管理事務。通過模擬並發場景,演示不同隔離級彆可能導緻的數據問題,並指導您選擇閤適的隔離級彆。 第三部分:MySQL數據管理與進階應用 掌握瞭數據的查詢和處理,下一步便是如何有效地管理和維護數據庫。本部分將深入探討MySQL的數據管理、性能優化和安全相關的高級主題。 數據庫的創建與管理: 我們將學習如何創建、選擇、刪除數據庫,並瞭解數據庫之間的關係。熟悉數據庫的命名規範和組織結構,對於大型項目尤為重要。 錶的設計與規範: 良好的錶結構設計是數據庫性能和可維護性的基礎。本書將介紹範式理論(第一範式、第二範式、第三範式等),並提供實際的數據庫設計方法論。我們將通過案例分析,演示如何設計齣高效、冗餘度低的錶結構。 數據導入與導齣: 在數據遷移、備份和共享過程中,數據的導入導齣至關重要。我們將介紹使用LOAD DATA INFILE, SELECT INTO OUTFILE, mysqldump等工具進行數據導入導齣的方法,並討論各種文件格式(CSV, TSV, SQL)的優缺點。 存儲過程與函數(Stored Procedures and Functions): 存儲過程和函數可以將一組SQL語句打包成一個可執行單元,提高開發效率和代碼復用性。我們將講解如何使用DELIMITER, CREATE PROCEDURE, CREATE FUNCTION, CALL等語法創建和調用存儲過程與函數,並演示其在業務邏輯實現中的應用。 觸發器(Triggers): 觸發器是一種特殊的存儲過程,它在指定的錶事件(INSERT, UPDATE, DELETE)發生時自動執行。我們將講解觸發器的創建、執行順序以及在數據審計、數據同步等場景下的應用。 MySQL性能調優: 數據庫性能直接影響應用的響應速度。本部分將提供一係列係統性的性能調優方法。除瞭前麵提到的索引優化,我們還將深入探討查詢語句的優化、服務器參數的配置(如buffer pool, query cache, sort buffer等)、慢查詢日誌的分析以及數據庫鎖的優化。我們將通過實際案例,演示如何定位和解決性能瓶頸。 MySQL安全: 保護數據庫免受未經授權的訪問和數據泄露是至關重要的。我們將講解用戶賬戶的管理、權限分配、密碼策略的設置、SSL加密連接的應用以及如何防範SQL注入攻擊。 復製(Replication)與高可用性: 對於生産環境,數據的冗餘和可用性至關重要。我們將深入介紹MySQL的復製機製,包括主從復製、半同步復製和多源復製,並講解如何通過復製技術構建高可用性解決方案,以應對單點故障。 分區(Partitioning): 當數據量龐大時,分區技術可以將大錶分割成更小的、更易於管理的部分。我們將講解不同分區類型(RANGE, LIST, HASH, KEY)的特點,以及如何通過分區來提高查詢性能和管理效率。 與其他技術的集成: 瞭解MySQL如何與其他技術棧集成,如PHP, Python, Java等,將是實際項目開發的關鍵。本書將提供一些集成示例,幫助您將MySQL應用到實際的Web開發或數據分析項目中。 本書內容將覆蓋從基礎概念到高級特性的方方麵麵,力求通過理論講解與實踐操作相結閤的方式,幫助讀者全麵掌握MySQL數據庫。我們的目標是讓您不僅僅能夠“知道”MySQL,更能“會用”,並能夠解決實際工作中遇到的各種數據庫相關挑戰。無論您是初學者,還是希望進一步提升技能的開發者或管理員,本書都將是您不可多得的參考資料。