序
前 言
第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
2.1.1 UNSIGNED/17
2.1.2 ZEROFILL/20
2.2 SQL_MODE設置/21
2.3 日期和時間類型/26
2.3.1 DATETIME和 DATE/26
2.3.2 TIMESTAMP/28
2.3.3 YEAR和TIME/30
2.3.4 與日期和時間相關的函數/31
2.4 關於日期的經典SQL編程問題/34
2.4.1 生日問題/34
2.4.2 重疊問題/37
2.4.3 星期數的問題/48
2.5 數字類型/53
2.5.1 整型/53
2.5.2 浮點型(非精確類型)/54
2.5.3 高精度類型/54
2.5.4 位類型/55
2.6 關於數字的經典SQL編程問題/56
2.6.1 數字輔助錶/56
2.6.2 連續範圍問題/58
2.7 字符類型/60
2.7.1 字符集/60
2.7.2 排序規則/64
2.7.3 CHAR和VARCHAR/68
2.7.4 BINARY和VARBINARY/70
2.7.5 BLOB和TEXT/72
2.7.6 ENUM和SET類型/73
2.8 小結/75
第3章 查詢處理/76
3.1 邏輯查詢處理/77
3.1.1 執行笛卡兒積/79
3.1.2 應用ON過濾器/80
3.1.3 添加外部行/83
3.1.4 應用WHERE過濾器/84
3.1.5 分組/85
3.1.6 應用ROLLUP或CUBE/86
3.1.7 應用HAVING過濾器/86
3.1.8 處理SELECT列錶/87
3.1.9 應用DISTINCT子句/87
3.1.10 應用ORDER BY子句/88
3.1.11 LIMIT子句/92
3.2 物理查詢處理/93
3.3 小結/95
第4章 子查詢/96
4.1 子查詢概述/97
4.1.1 子查詢的優點和限製/97
4.1.2 使用子查詢進行比較/97
4.1.3 使用ANY、IN和SOME進行子查詢/98
4.1.4 使用ALL進行子查詢/99
4.2 獨立子查詢/99
4.3 相關子查詢/105
4.4 EXISTS謂詞/109
4.4.1 EXISTS /109
4.4.2 NOT EXISTS/111
4.5 派生錶/113
4.6 子查詢可以解決的經典問題/114
4.6.1 行號/114
4.6.2 分區/118
4.6.3 最小缺失值問題/121
4.6.4 缺失範圍和連續範圍/122
4.7 MariaDB對SEMI JOIN的優化/126
4.7.1 概述/126
4.7.2 Table Pullout優化/127
4.7.3 Duplicate Weedout 優化/128
4.7.4 Materialization優化/129
4.8 小結/130
第5章 聯接與集閤操作/132
5.1 聯接查詢/133
5.1.1 新舊查詢語法/133
5.1.2 CROSS JOIN/134
5.1.3 INNER JOIN/137
5.1.4 OUTER JOIN/138
5.1.5 NATURAL JOIN/141
5.1.6 STRAIGHT_JOIN/141
5.2 其他聯接分類/142
5.2.1 SELF JOIN/143
5.2.2 NONEQUI JOIN/144
5.2.3 SEMI JOIN和ANTI SEMI JOIN/145
5.3 多錶聯接/146
5.4 滑動訂單問題/148
5.5 聯接算法/150
5.5.1 Simple Nested-Loops Join算法/150
5.5.2 Block Nested-Loops Join算法/155
5.5.3 Batched Key Access Join算法/158
5.5.4 Classic Hash Join算法/161
5.6 集閤操作/163
5.6.1 集閤操作的概述/163
5.6.2 UNION DISTINCT和UNION ALL/165
5.6.3 EXCEPT/167
5.6.4 INTERSECT/170
5.7 小結/171
第6章 聚閤和鏇轉操作/172
6.1 聚閤 /173
6.1.1 聚閤函數/173
6.1.2 聚閤的算法/174
6.2 附加屬性聚閤/176
6.3 連續聚閤/178
6.3.1 纍積聚閤/179
6.3.2 滑動聚閤/183
6.3.3 年初至今聚閤/184
6.4 Pivoting/185
6.4.1 開放架構/185
6.4.2 關係除法/187
6.4.3 格式化聚閤數據/189
6.5 Unpivoting/191
6.6 CUBE 和 ROLLUP/193
6.6.1 ROLLUP/193
6.6.2 CUBE/196
6.7 小結/197
第7章 遊標/198
7.1 麵嚮集閤與麵嚮過程的開發/199
7.2 遊標的使用/199
7.3 遊標的開銷/200
7.4 使用遊標解決問題/202
7.4.1 遊標的性能分析/202
7.4.2 連續聚閤/203
7.4.3 最大會話數/206
7.5 小結/210
第8章 事務編程/211
8.1 事務概述/212
8.2 事務的分類/214
8.3 事務控製語句/219
8.4 隱式提交的SQL語句/224
8.5 事務的隔離級彆/225
8.6 分布式事務編程/229
8.7 不好的事務編程習慣/234
8.7.1 在循環中提交/234
8.7.2 使用自動提交/236
8.7.3 使用自動迴滾/236
8.8 長事務/239
8.9 小結/240
第9章 索引/242
9.1 緩衝池、順序讀取與隨機讀取/243
9.2 數據結構與算法/246
9.2.1 二分查找法/246
9.2.2 二叉查找樹和平衡二叉樹/247
9.3 B+樹/249
9.3.1 B+樹的插入操作/250
9.3.2 B+樹的刪除操作/252
9.4 B+樹索引/253
9.4.1 InnoDB B+樹索引/254
9.4.2 MyISAM B+樹索引/256
9.5 Cardinality/256
9.5.1 什麼是Cardinality/256
9.5.2 InnoDB存儲引擎怎樣統計Cardinality/257
9.6 B+樹索引的使用/259
9.6.1 不同應用中B+樹索引的使用/259
9.6.2 聯閤索引/260
9.6.3 覆蓋索引/262
9.6.4 優化器選擇不使用索引的情況/263
9.6.5 INDEX HINT/265
9.7 Multi-Range Read/267
9.8 Index Condition Pushdown/269
9.9 T樹索引/271
9.9.1 T樹概述/271
9.9.2 T樹的查找、插入和刪除操作/272
9.9.3 T樹的鏇轉/273
9.10 哈希索引/276
9.10.1 散列錶/276
9.10.2 InnoDB存儲引擎中的散列算法/278
9.10.3 自適應哈希索引/278
9.11 小結/279
第10章 分區/280
10.1 分區概述/281
10.2 分區類型/283
10.2.1 RANGE分區/283
10.2.2 LIST分區/289
10.2.3 HASH分區/291
10.2.4 KEY分區/293
10.2.5 COLUMNS分區/293
10.3 子分區/295
10.4 分區中的NULL值/298
10.5 分區和性能/301
10.6 在錶和分區間交換數據/305
10.7 小結/307
· · · · · · (
收起)