目錄
第1章 MySQL入門 1
1.1 MySQL的用途 1
1.2 示例數據庫 3
1.2.1 美史聯盟項目 4
1.2.2 成績考評項目 5
1.2.3 如何運用示例數據庫 5
1.3 基本數據庫術語 6
1.3.1 結構術語 6
1.3.2 查詢語言術語 8
1.3.3 MySQL的體係結構術語 8
1.4 MySQL教程 9
1.4.1 獲取示例數據庫發行包 10
1.4.2 基本配置要求 10
1.4.3 建立和斷開MySQL服務器連接 11
1.4.4 執行SQL語句 13
1.4.5 創建數據庫 15
1.4.6 創建錶 15
1.4.7 添加新行 29
1.4.8 重置sampdb數據庫 32
1.4.9 檢索信息 33
1.4.10 刪除或更新已有行 56
1.5 mysql交互技巧 58
1.5.1 簡化連接過程 58
1.5.2 在調用命令時減少打字輸入 60
1.6 何去何從 63
第2章 使用SQL管理數據 64
2.1 服務器的SQL模式 65
2.2 MySQL的標識符語法和命名規則 66
2.3 SQL語句的大小寫規則 67
2.4 字符集支持 68
2.4.1 指定字符集 69
2.4.2 確定可用字符集和當前設置 70
2.4.3 Unicode支持 71
2.5 數據庫的選擇、創建、刪除和更改 72
2.5.1 選擇數據庫 72
2.5.2 創建數據庫 72
2.5.3 刪除數據庫 73
2.5.4 更改數據庫 73
2.6 錶的創建、刪除、索引和更改 73
2.6.1 存儲引擎的特性 73
2.6.2 創建錶 77
2.6.3 刪除錶 84
2.6.4 索引錶 84
2.6.5 更改錶結構 88
2.7 獲取數據庫元數據 90
2.7.1 使用SHOW語句獲取元數據 90
2.7.2 藉助INFORMATION_SCHEMA獲取元數據 92
2.7.3 從命令行獲取元數據 94
2.8 使用連接實現多錶檢索 95
2.8.1 內連接 96
2.8.2 對被連接錶裏的列引用進行限定 97
2.8.3 左(外)連接和右(外)連接 97
2.9 使用子查詢實現多錶檢索 100
2.9.1 帶關係比較運算符的子查詢 101
2.9.2 IN和NOT IN子查詢 102
2.9.3 ALL、ANY和SOME子查詢 103
2.9.4 EXISTS和NOT EXISTS子查詢 103
2.9.5 相關子查詢 104
2.9.6 FROM子句裏的子查詢 104
2.9.7 將子查詢改寫為連接 104
2.10 使用UNION實現多錶檢索 106
2.11 多錶刪除和更新 108
2.12 事務處理 110
2.12.1 利用事務保證語句安全執行 111
2.12.2 使用事務保存點 114
2.12.3 事務隔離 114
2.13 外鍵和引用完整性 116
2.14 使用FULLTEXT搜索 121
2.14.1 自然語言FULLTEXT搜索 122
2.14.2 布爾模式的全文搜索 124
2.14.3 查詢擴展全文搜索 125
2.14.4 配置全文搜索引擎 126
第3章 數據類型 127
3.1 數據值類彆 128
3.1.1 數值 128
3.1.2 字符串值 129
3.1.3 時態(日期/時間)值 136
3.1.4 空間值 136
3.1.5 布爾值 136
3.1.6 NULL值 136
3.2 MySQL數據類型 137
3.2.1 數據類型概述 137
3.2.2 錶定義裏的特殊列類型 138
3.2.3 指定列的默認值 139
3.2.4 數字數據類型 140
3.2.5 字符串數據類型 145
3.2.6 時態(日期/時間)數據類型 156
3.3 MySQL如何處理無效數據值 163
3.4 處理序列 164
3.4.1 通用的AUTO_INCREMENT屬性 164
3.4.2 存儲引擎特有的AUTO_INCREMENT屬性 166
3.4.3 使用AUTO_INCREMENT列需要考慮的問題 168
3.4.4 AUTO_INCREMENT列的使用提示 168
3.4.5 在無AUTO_INCREMENT的情況下生成序列 170
3.5 錶達式計算和類型轉換 171
3.5.1 編寫錶達式 172
3.5.2 類型轉換 177
3.6 選擇數據類型 183
3.6.1 列要存放什麼類型的值 184
3.6.2 所有值是否都在某個特定的區間內 186
第4章 視圖和存儲程序 188
4.1 使用視圖 189
4.2 使用存儲程序 191
4.2.1 復閤語句和語句分隔符 191
4.2.2 存儲函數和存儲過程 193
4.2.3 觸發器 196
4.2.4 事件 197
4.3 視圖和存儲程序的安全性 199
第5章 查詢優化 200
5.1 使用索引 200
5.1.1 索引的優點 201
5.1.2 索引的代價 203
5.1.3 挑選索引 203
5.2 MySQL查詢優化程序 206
5.2.1 查詢優化程序的工作原理 207
5.2.2 使用EXPLAIN檢查優化程序的操作 209
5.3 選擇利於高效查詢的數據類型 214
5.4 選擇利於高效查詢的錶存儲格式 216
5.5 高效加載數據 217
5.6 調度、鎖定和並發 219
第6章 MySQL程序設計入門 221
6.1 為何要自己編寫MySQL程序 221
6.2 MySQL提供的API 223
6.2.1 C語言API 224
6.2.2 Perl語言DBI API 224
6.2.3 PHP語言API 225
6.3 選擇API 226
6.3.1 執行環境 227
6.3.2 性能 227
6.3.3 開發時間 228
6.3.4 可移植性 228
第7章 用C語言編寫MySQL程序 230
7.1 編譯和鏈接客戶端程序 231
7.2 連接服務器 233
7.3 齣錯處理和命令選項處理 236
7.3.1 齣錯檢查 236
7.3.2 實時獲取連接參數 239
7.3.3 把選項處理整閤進客戶端程序 248
7.4 處理SQL語句 252
7.4.1 處理那些修改行的語句 253
7.4.2 處理那些返迴結果集的語句 254
7.4.3 通用的語句處理器 256
7.4.4 另一種語句處理方法 257
7.4.5 mysql_store_result()與mysql_use_result()的對比 258
7.4.6 使用結果集元數據 260
7.4.7 對特殊字符和二進製數據進行編碼 264
7.5 交互式語句執行程序 267
7.6 編寫支持SSL的客戶端程序 268
7.7 一次執行多條語句 272
7.8 使用服務器端預處理語句 273
7.9 使用預處理CALL支持 282
第8章 用Perl DBI編寫MySQL程序 286
8.1 Perl腳本的特點 286
8.2 Perl DBI概述 287
8.2.1 DBI數據類型 287
8.2.2 一個簡單的DBI腳本 288
8.2.3 齣錯處理 291
8.2.4 處理那些修改行的語句 294
8.2.5 處理那些返迴結果集的語句 295
8.2.6 在語句串裏引用特殊字符 302
8.2.7 占位符與預處理語句 305
8.2.8 把查詢結果綁定到腳本變量 307
8.2.9 指定連接參數 307
8.2.10 調試 310
8.2.11 使用結果集元數據 312
8.2.12 執行事務 316
8.3 DBI腳本實踐 317
8.3.1 生成美史聯盟成員名錄 317
8.3.2 發送成員資格更新通知 322
8.3.3 編輯美史聯盟成員條目 326
8.3.4 尋找誌趣相投的聯盟成員 331
8.3.5 把美史聯盟成員名錄放到網上 332
8.4 使用DBI來開發Web應用程序 334
8.4.1 配置Apache服務器來處理CGI腳本 335
8.4.2 CGI.pm模塊簡介 336
8.4.3 從Web腳本連接MySQL服務器 342
8.4.4 基於Web的數據庫瀏覽器 343
8.4.5 成績考評項目:分數瀏覽器 347
8.4.6 美史聯盟:搜索誌趣相投的成員 350
第9章 用PHP語言編寫MySQL程序 354
9.1 PHP概述 355
9.1.1 一個簡單的PHP腳本 357
9.1.2 利用PHP庫文件實現代碼封裝 359
9.1.3 簡單的數據檢索頁麵 363
9.1.4 處理語句結果 365
9.1.5 測試查詢結果裏的NULL值 368
9.1.6 使用預處理語句 369
9.1.7 利用占位符來處理數據引號問題 369
9.1.8 齣錯處理 371
9.2 PHP腳本實戰 372
9.2.1 一個在綫錄入分數的應用程序 373
9.2.2 創建交互式的在綫測驗 382
9.2.3 在綫編輯美史聯盟成員信息 386
第10章 MySQL管理簡介 393
10.1 MySQL組件 393
10.3 訪問控製與安全性 395
10.4 數據庫維護、備份和復製 395
第11章 MySQL數據目錄 397
11.1 數據目錄位置 397
11.2 數據目錄結構 398
11.2.1 MySQL服務器提供的數據訪問方式 399
11.2.2 數據庫在文件係統裏的錶示 400
11.2.3 錶在文件係統裏的錶示 400
11.2.4 視圖和觸發器在文件係統裏的錶示 401
11.2.5 SQL語句與錶文件操作的對應關係 401
11.2.6 操作係統對數據庫對象名字的約束 402
11.2.7 影響錶最大長度的因素 403
11.2.8 數據目錄結構對係統性能的影響 404
11.2.9 MySQL狀態文件和日誌文件 405
11.3 遷移數據目錄的內容 407
11.3.1 遷移方法 407
11.3.2 遷移注意事項 408
11.3.3 評估遷移帶來的影響 408
11.3.4 遷移整個數據目錄 409
11.3.5 遷移單個數據庫 409
11.3.6 遷移單個錶 409
11.3.7 遷移InnoDB係統錶空間 410
11.3.8 遷移狀態文件和日誌文件 410
第12章 MySQL的基本管理 412
12.1 保護新安裝的MySQL 412
12.1.1 為初始的MySQL賬戶建立密碼 413
12.1.2 為附加服務器設置密碼 416
12.2 安排MySQL服務器的啓動和關閉 416
12.2.1 在Unix裏運行MySQL服務器 417
12.2.2 在Windows裏運行MySQL服務器 420
12.2.3 指定服務器啓動選項 422
12.2.4 控製服務器的連接監聽 423
12.2.5 停止服務器 424
12.2.6 當你無法連接服務器時重新獲得對它的控製 425
12.3 使用係統變量和狀態變量 426
12.3.1 查看和設置係統變量值 427
12.3.2 查看狀態變量值 430
12.4 插件接口 431
12.5 存儲引擎配置 433
12.5.1 選擇存儲引擎 433
12.5.2 選擇默認存儲引擎 434
12.5.3 配置InnoDB存儲引擎 435
12.6 全球化問題 440
12.6.1 配置時區支持 440
12.6.2 選擇默認字符集和排序規則 441
12.6.3 選擇齣錯信息的顯示語言 442
12.6.4 選擇區域設置 442
12.7 服務器調整 442
12.7.1 用於服務器調整的通用型係統變量 443
12.7.2 存儲引擎調整 445
12.7.3 使用查詢緩存 449
12.7.4 硬件優化 450
12.8 服務器日誌 451
12.8.1 齣錯日誌 453
12.8.2 普通查詢日誌 454
12.8.3 慢查詢日誌 454
12.8.4 二進製日誌 455
12.8.5 中繼日誌 456
12.8.6 使用日誌錶 456
12.8.7 日誌管理 457
12.9 運行多個服務器 462
12.9.1 運行多個服務器的常見問題 462
12.9.2 配置和編譯不同的服務器 464
12.9.3 指定啓動選項的策略 465
12.9.4 使用mysqld_multi來管理服務器 466
12.9.5 在Windows裏運行多個服務器 468
12.9.6 運行多個服務器的客戶端 469
12.10 升級MySQL 469
第13章 安全性與訪問控製 471
13.1 保護對MySQL文件係統的訪問 472
13.1.1 如何竊取數據 472
13.1.2 保護MySQL安裝 473
13.2 管理MySQL用戶賬戶 477
13.2.1 MySQL賬戶的高級管理 479
13.2.2 權限分配 482
13.2.3 顯示賬戶權限 490
13.2.4 撤銷權限 490
13.2.5 更改密碼或重置丟失的密碼 491
13.2.6 避免訪問控製風險 491
13.2.7 插入式身份認證和代理用戶 494
13.3 權限錶結構和內容 496
13.3.1 權限錶訪問範圍列 498
13.3.2 權限錶權限列 498
13.3.3 權限錶身份認證列 499
13.3.4 權限錶SSL相關列 499
13.3.5 權限錶資源管理列 500
13.4 服務器如何控製客戶端訪問 500
13.4.1 訪問範圍列的內容 500
13.4.2 語句訪問驗證 502
13.4.3 訪問範圍列匹配順序 503
13.4.4 權限難題 503
13.5 使用SSL建立安全連接 506
第14章 數據庫維護、備份和復製 510
14.1 預防性維護的基本原則 510
14.2 在服務器運行時維護數據庫 511
14.2.1 為隻讀或讀/寫訪問鎖定單個錶 512
14.2.2 為隻讀訪問鎖定所有數據庫 514
14.3 基本的預防性維護 514
14.3.1 運用服務器的自動恢復功能 514
14.3.2 製訂預防性維護計劃 515
14.4 數據庫備份 516
14.4.1 存儲引擎的可移植特點 517
14.4.2 用mysqldump程序製作文本備份 518
14.4.3 製作二進製數據庫備份 521
14.4.4 備份InnoDB錶 522
14.5 將數據庫復製到另一個服務器 522
14.5.1 使用備份文件來復製數據庫 523
14.5.2 將數據庫從一個服務器復製到另一個 523
14.6 檢查和修復數據庫錶 524
14.6.1 使用CHECK TABLE檢查錶 525
14.6.2 使用REPAIR TABLE修復錶 525
14.6.3 使用mysqlcheck檢查修復錶 525
14.7 使用備份來恢復數據 526
14.7.1 恢復整個數據庫 527
14.7.2 恢復單個錶 527
14.7.3 重新執行二進製日誌文件裏的語句 528
14.7.4 應對InnoDB的自動恢復問題 529
14.8 設置復製服務器 530
14.8.1 復製的工作原理 530
14.8.2 建立主從復製關係 531
14.8.3 二進製日誌格式 533
14.8.4 使用復製從服務器來製作備份 534
附錄A 本書所需要的各類軟件 535
附錄B 數據類型參考 543
附錄C 操作符與函數參考 555
附錄D 係統變量、狀態變量和用戶變量參考 608
附錄E SQL語法參考 651
附錄F MySQL程序參考 721
· · · · · · (
收起)