MySQL技術內幕(第4版)

《MySQL技術內幕(第4版)》是2011年7月1日由人民郵電出版社出版圖書,作者是杜波依斯。本書詳細介紹了MySQL的基礎知識。

內容簡介

本書介紹了MySQL的基礎知識及其有別於其他資料庫系統的獨特功能,包括SQL的工作原理和MySQL API的相關知識;講述了如何將MySQL與Perl或PHP等語言結合起來,為資料庫查詢結果生成動態Web頁面,如何編寫MySQL數據訪問程式;詳細討論了資料庫管理和維護、數據目錄的組織和內容、訪問控制、安全連線等。

《MySQL技術內幕(第4版)》附錄還提供了軟體的安裝信息,羅列了MySQL數據類型、函式、變數、語法、程式、API等重要細節。

《MySQL技術內幕(第4版)》是一部全面的MySQL指南,對資料庫系統感興趣的讀者都能從中獲益。

圖書目錄

目 錄

第一部分 MySQL基礎知識

第1章 MySQL和SQL 入門 2

1.1 MySQL的用途 2

1.2 示例資料庫 4

1.2.1 “美國歷史研究會”場景 5

1.2.2 考試記分項目 7

1.2.3 關於示例資料庫的說明 7

1.3 資料庫基本術語 7

1.3.1 資料庫的組織結構 8

1.3.2 資料庫查詢語言 10

1.3.3 MySQL的體系結構 10

1.4 MySQL 11

1.4.1 如何獲得示例資料庫 12

1.4.2 最低配置要求 12

1.4.3 如何建立和斷開與伺服器的連線 13

1.4.4 執行SQL語句 15

1.4.5 創建資料庫 17

1.4.6 創建數據表 18

1.4.7 如何添加新的數據行 33

1.4.8 將sampdb資料庫重設為原來的狀態 36

1.4.9 檢索信息 37

1.4.10 如何刪除或更新現有的數據行 64

1.5 與客戶程式MySQL互動的技巧 66

1.5.1 簡化連線過程 67

1.5.2 減少輸入查詢命令時的打字動作 69

1.6 後面各章的學習計畫 72

第2章 使用SQL管理數據 73

2.1 MySQL伺服器的SQL模式 73

2.2 MySQL標識符語法和命名規則 74

2.3 SQL語句中的字母大小寫問題 77

2.4 字元集支持 78

2.4.1 字元集的設定 79

2.4.2 確定可供選用的字元集和當前設定 80

2.4.3  Unicode支持 81

2.5  資料庫的選定、創建、刪除和變更 82

2.5.1 資料庫的選定 82

2.5.2 資料庫的創建 82

2.5.3 資料庫的刪除 83

2.5.4 資料庫的變更 83

2.6 數據表的創建、刪除、索引和變更 84

2.6.1 存儲引擎的特徵 84

2.6.2 創建數據表 90

2.6.3 刪除數據表 101

2.6.4 為數據表編制索引 101

2.6.5 改變數據表的結構 106

2.7 獲取資料庫的元數據 108

2.7.1 用SHOW語句獲取元數據 109

2.7.2 從INFORMATION_SCHEMA資料庫獲取元數據 110

2.7.3 從命令行獲取元數據 112

2.8 利用聯結操作對多個數據表進行檢索 113

2.8.1 內聯結 114

2.8.2 避免歧義:如何在聯結操作中給出數據列的名字 116

2.8.3 左聯結和右聯結(外聯結) 116

2.9 用子查詢進行多數據表檢索 120

2.9.1 子查詢與關係比較操作符 121

2.9.2 IN和NOT IN子查詢 122

2.9.3 ALL、ANY和SOME子查詢 123

2.9.4 EXISTS和NOT EXISTS子查詢 124

2.9.5 與主查詢相關的子查詢 124

2.9.6 FROM子句中的子查詢 124

2.9.7 把子查詢改寫為聯結查詢 125

2.10 用UNION語句進行多數據表檢索 126

2.11 使用視圖 129

2.12 涉及多個數據表的刪除和更新操作 133

2.13 事務處理 134

2.13.1 利用事務來保證語句的安全執行 135

2.13.2 使用事務保存點 139

2.13.3 事務的隔離性 139

2.13.4 事務問題的非事務解決方案 140

2.14 外鍵和引用完整性 143

2.14.1 外鍵的創建和使用 144

2.14.2 如果不能使用外鍵該怎么辦 149

2.15 使用FULLTEXT索引 150

2.15.1 全文搜尋:自然語言模式 151

2.15.2 全文搜尋:布爾模式 153

2.15.3 全文搜尋:查詢擴展模式 154

2.15.4 配置全文搜尋引擎 155

第3章 數據類型 156

3.1 數據值的類別 157

3.1.1 數值 157

3.1.2 字元串值 158

3.1.3 日期/時間值 166

3.1.4 坐標值 166

3.1.5 布爾值 166

3.1.6 空值NULL 166

3.2 MySQL的數據類型 166

3.2.1 數據類型概述 167

3.2.2 數據表中的特殊列類型 168

3.2.3 指定列默認值 169

3.2.4 數值數據類型 170

3.2.5 字元串數據類型 176

3.2.6 日期/時間數據類型 189

3.2.7 空間數據類型 196

3.3 MySQL如何處理非法數據值 197

3.4 序列 199

3.4.1 通用AUTO_INCREMENT屬性 199

3.4.2 與特定存儲引擎有關的AUTO_INCREMENT屬性 201

3.4.3 使用AUTO_INCREMENT數據列時的要點 203

3.4.4 使用AUTO_INCREMENT機制時的注意事項 204

3.4.5 如何在不使用AUTO_INCREMENT的情況下生成序列編號 205

3.5 表達式求值和類型轉換 207

3.5.1 表達式的編寫 207

3.5.2 類型轉換 213

3.6 數據類型的選用 220

3.6.1 數據列將容納什麼樣的數據 222

3.6.2 數據是否都在某個特定的區間內 224

3.6.3 與挑選數據類型有關的問題是相互影響的 225

第4章 存儲程式 227

4.1 複合語句和語句分隔設定 228

4.2 存儲函式和存儲過程 229

4.2.1 存儲函式和存儲過程的許可權 231

4.2.2 存儲過程的參數類型 232

4.3 觸發器 233

4.4 事件 234

4.5 存儲程式和視圖的安全性 236

第5章 查詢最佳化  237

5.1 使用索引 237

5.1.1 索引的優點 238

5.1.2 索引的缺點 240

5.1.3 挑選索引 241

5.2 MySQL的查詢最佳化程式 243

5.2.1 查詢最佳化器的工作原理 244

5.2.2 用EXPLAIN 語句檢查最佳化器操作 247

5.3 為提高查詢效率而挑選數據類型 252

5.4 有效載入數據 255

5.5 調度和鎖定問題 258

5.5.1 改變語句的執行優先權 259

5.5.2 使用延遲插入 259

5.5.3 使用並發插入 260

5.5.4 鎖定級別與並發性 260

5.6 系統管理員所完成的最佳化 261

5.6.1 使用MyISAM鍵快取 263

5.6.2 使用查詢快取 264

5.6.3 硬體最佳化 265

第二部 分 MySQL的編程接口

第6章 MySQL程式設計 268

6.1 為什麼要自己編寫MySQL程式 268

6.2 MySQL應用程式可用的API 271

6.2.1 C API 272

6.2.2 Perl DBI API 272

6.2.3 PHP API 274

6.3 如何挑選API 275

6.3.1 執行環境 275

6.3.2 性能 276

6.3.3 開發時間 278

6.3.4 可移植性 280

第7章 用C語言編寫MySQL程式 281

7.1 編譯和連結客戶程式 282

7.2 連線到伺服器 284

7.3 出錯訊息和命令行選項的處理 287

7.3.1 出錯檢查 287

7.3.2 實時獲取連線參數 290

7.3.3 給MySQL客戶程式增加選項處理功能 301

7.4 處理SQL語句 305

7.4.1 處理修改數據行的語句 306

7.4.2 處理有結果集的語句 307

7.4.3 一個通用的語句處理程式 310

7.4.4 另一種語句處理方案 311

7.4.5 mysql_store_result()與mysql_use_result()函式的對比 312

7.4.6 使用結果集元數據 314

7.4.7 對特殊字元和二進制數據進行編碼 319

7.5 互動式語句執行程式 322

7.6 怎樣編寫具備SSL支持的客戶程式 323

7.7 嵌入式伺服器庫的使用 327

7.7.1 編寫內建了伺服器的應用程式 328

7.7.2 生成應用程式可執行二進制檔案 330

7.8 一次執行多條語句 331

7.9 使用伺服器端預處理語句 333

第8章 使用Perl DBI編寫MySQL程式 343

8.1 Perl腳本的特點 343

8.2 Perl DBI概述 344

8.2.1 DBI數據類型 344

8.2.2 一個簡單的DBI腳本 345

8.2.3 出錯處理 349

8.2.4 處理修改數據行的語句 352

8.2.5 處理返回結果集的語句 353

8.2.6 在語句字元串引用特殊字元 361

8.2.7 占位符與預處理語句 363

8.2.8 把查詢結果綁定到腳本變數 365

8.2.9 設定連線參數 366

8.2.10 調試 369

8.2.11 使用結果集的元數據 372

8.2.12 實現事務處理 376

8.3 DBI腳本實戰 377

8.3.1 生成美國歷史研究會會員名錄 377

8.3.2 發出會費催交通知 382

8.3.3 會員記錄項的編輯修改 387

8.3.4 尋找志趣相同的會員 392

8.3.5 把會員名錄放到網上 393

8.4 用DBI開發Web套用 396

8.4.1 配置Apache伺服器使用CGI腳本 397

8.4.2 CGI-pm模組簡介 398

8.4.3 從Web腳本連線MySQL伺服器 404

8.4.4 一個基於Web的資料庫瀏覽器 406

8.4.5 考試記分項目:考試分數瀏覽器 410

8.4.6 美國歷史研究會:尋找志趣相同的會員 413

第9章 用PHP編寫MySQL程式 418

9.1 PHP概述 419

9.1.1 一個簡單的PHP腳本 421

9.1.2 利用PHP庫檔案實現代碼封裝 424

9.1.3 簡單的數據檢索頁面 428

9.1.4 處理語句結果 431

9.1.5 測試查詢結果里的NULL值 434

9.1.6 使用預處理語句 434

9.1.7 利用占位符來處理帶引號的數據值 435

9.1.8 出錯處理 437

9.2 PHP腳本實戰 438

9.2.1 考試分數的線上錄入 438

9.2.2 創建一個互動式線上測驗 449

9.2.3 美國歷史研究會:會員個人資料的線上修改 454

第三部分 MySQL的系統管理

第10章 MySQL系統管理簡介 462

10.1 MySQL組件 462

10.2 常規管理 463

10.3 訪問控制與安全性 464

10.4 資料庫的維護、備份和複製 464

第11章 MySQL的數據目錄 466

11.1 數據目錄的位置 466

11.2 數據目錄的層次結構 468

11.2.1 MySQL伺服器如何提供對數據的訪問 468

11.2.2 MySQL資料庫在檔案系統里是如何表示的 469

11.2.3 數據表在檔案系統里的表示方式 470

11.2.4 視圖和觸發器在檔案系統里的表示方式 471

11.2.5 SQL語句與數據表檔案操作的對應關係 472

11.2.6 作業系統對資料庫對象的命名規則有何影響 472

11.2.7 影響數據表最大長度的因素 474

11.2.8 數據目錄的結構對系統性能的影響 475

11.2.9 MySQL狀態檔案和日誌檔案 477

11.3 重新安置數據目錄的內容 479

11.3.1 重新安置工作的具體方法 479

11.3.2 重新安置注意事項 480

11.3.3 評估重新安置的效果 480

11.3.4 重新安置整個數據目錄 481

11.3.5 重新安置各個資料庫 481

11.3.6 重新安置各個數據表 482

11.3.7 重新安置InnoDB共享表空間 482

11.3.8 重新安置狀態檔案和日誌檔案 482

第12章 MySQL資料庫系統的日常管理 484

12.1 安裝MySQL軟體後的初始安防設定 484

12.1.1 為初始MySQL賬戶設定口令 485

12.1.2 為第二個伺服器設定口令 489

12.2 安排MySQL伺服器的啟動和關停 489

12.2.1 在Unix上運行MySQL伺服器 489

12.2.2 在Windows上運行MySQL伺服器 493

12.2.3 指定伺服器啟動選項 495

12.2.4 關閉伺服器 497

12.2.5 當你未能連線至伺服器時重新獲得伺服器的控制 497

12.3 對MySQL伺服器的連線監聽情況進行控制 499

12.4 管理MySQL用戶賬戶 500

12.4.1 高級MySQL賬戶管理操作 501

12.4.2 對賬戶授權 503

12.4.3 查看賬戶的許可權 510

12.4.4 撤銷許可權和刪除用戶 510

12.4.5 改變口令或重新設定丟失的口令 511

12.5 維護日誌檔案 512

12.5.1 出錯日誌 514

12.5.2 常規查詢日誌 515

12.5.3 慢查詢日誌 515

12.5.4 二進制日誌和二進制日誌索引檔案 516

12.5.5 中繼日誌和中繼日誌索引檔案 517

12.5.6 日誌數據表的使用 518

12.5.7 日誌管理 519

12.6 調整MySQL伺服器 524

12.6.1 查看和設定系統變數的值 525

12.6.2 通用型系統變數 528

12.6.3 查看狀態變數的值 530

12.7 存儲引擎的配置 531

12.7.1 為MySQL伺服器挑選存儲引擎 531

12.7.2 配置MyISAM存儲引擎 533

12.7.3 配置InnoDB存儲引擎 536

12.7.4 配置Falcon存儲引擎 541

12.8 啟用或者禁用LOAD DATA語句的LOCAL能力 541

12.9 國際化和本地化問題 542

12.9.1 設定MySQL伺服器的地理時區 542

12.9.2 選擇用來顯示出錯信息的語言 544

12.9.3 配置MySQL伺服器的字元集支持 544

12.10 運行多個伺服器 545

12.10.1 運行多個伺服器的問題 545

12.10.2 配置和編譯不同的伺服器 547

12.10.3 指定啟動選項的決策 548

12.10.4 用於伺服器管理的mysqld_multi 549

12.10.5 在Windows系統上運行多個MySQL伺服器 550

12.11 升 級MySQL 553

第13章 訪問控制項和安全 555

13.1 內部安全性:防止未經授權的檔案系統訪問 555

13.1.1 如何偷取數據 556

13.1.2 保護你的MySQL安裝 557

13.2 外部安全性:防止未經授權的網路訪問 562

13.2.1 MySQL許可權表的結構和內容 562

13.2.2 伺服器如何控制客戶訪問 568

13.2.3 一個關於許可權的難題 572

13.2.4 應該迴避的許可權數據表風險 575

13.3 加密連線的建立 577

第14章 MySQL資料庫的維護、備份和複製 582

14.1 資料庫預防性維護工作的基本原則 582

14.2  在MySQL伺服器運行時維護資料庫 583

14.2.1 以唯讀方式或讀/寫方式鎖定一個或多個數據表 584

14.2.2 以唯讀方式鎖定所有的資料庫 586

14.3 預防性維護 587

14.3.1 充分利用MySQL伺服器的自動恢復能力 587

14.3.2 定期進行預防性維護 588

14.4 製作資料庫備份 589

14.4.1 用mysqldump程式製作文本備份 590

14.4.2 製作二進制資料庫備份 593

14.4.3 備份InnoDB或Faclcon數據表 595

14.5 把資料庫複製到另一個伺服器 596

14.5.1 使用一個備份檔案來複製資料庫 596

14.5.2 把資料庫從一個伺服器複製到另一個 597

14.6 數據表的檢查和修復 598

14.6.1 用伺服器檢查和修複數據表 599

14.6.2 用mysqlcheck程式檢查和修複數據表 599

14.6.3 用myisamchk程式檢查和修複數據表 600

14.7 使用備份進行數據恢復  603

14.7.1 恢復整個資料庫 603

14.7.2 恢複數據表 604

14.7.3 重新執行二進制日誌檔案里的語句 605

14.7.4 InnoDB存儲引擎的自動恢復功能 606

14.8 設定複製伺服器 607

14.8.1 複製機制的工作原理 607

14.8.2 建立主從複製關係 609

14.8.3 二進制日誌的格式 611

14.8.4 使用複製機制製作備份 612

第四部分 附錄

附錄A 獲得並安裝有關軟體 614

附錄B 數據類型指南 630

附錄C 操作符與函式用法指南 643

附錄D 系統變數、狀態變數和用戶變數使用指南 705

附錄E SQL語法指南 746

附錄F MySQL程式指南 823

附錄G API指南(圖靈網站下載)

附錄H Perl DBI API指南(圖靈網站下載)

附錄I PHP API指南(圖靈網站下載)

相關詞條

熱門詞條

聯絡我們