本書介紹了使用MySQL進行數(shù)據(jù)庫管理的必備知識。全書共24章,主要分為三篇,其中基礎篇包括初識MySQL,數(shù)據(jù)庫操作,MySQL表結構管理,表數(shù)據(jù)的增、刪、改操作,簡單數(shù)據(jù)查詢等;實戰(zhàn)篇包括各種編程語言連接MySQL數(shù)據(jù)庫、操作數(shù)據(jù)表、數(shù)據(jù)查詢、數(shù)據(jù)匯總、多表查詢的應用、處理重復數(shù)據(jù);強化篇包括Python+MySQL實現(xiàn)在線學習筆記、Struts 2+Spring+Hibemate+MySQL實現(xiàn)網(wǎng)絡商城。
目前,講解MySQL數(shù)據(jù)庫技術的書籍有很多,但是真正從初學者的角度出發(fā),把技術及應用講解透徹的并不是很多。本書從初學者的角度出發(fā),為想要學習MySQL數(shù)據(jù)庫、想要進行數(shù)據(jù)庫開發(fā)的初中級開發(fā)人員、編程愛好者、大學師生精心策劃,所講內(nèi)容從技術應用的角度出發(fā),結合實際應用進行講解。本書側重MySQL數(shù)據(jù)庫的編程基礎與實踐,為保證讀者學以致用,在實踐方面循序漸進地進行3個層次的篇章介紹:基礎篇、實戰(zhàn)篇和強化篇。
本書內(nèi)容
全書共分為24章,主要通過“基礎篇(16章) 實戰(zhàn)篇(6章) 強化篇(2章)”3大維度一體化的講解方式,具體的學習結構如下圖所示。
本書特色
1.突出重點、學以致用
書中每個知識點都結合了簡單易懂的示例代碼以及非常詳細的注釋信息,力求使讀者能夠快速理解所學知識,提升學習效率,縮短學習路徑。
2.提升思維、綜合運用
本書以知識點綜合運用的方式,帶領讀者制作各種趣味性較強的應用案例,使讀者不斷提升編寫MySQL數(shù)據(jù)庫的思維,還可以快速提升對知識點的綜合運用能力,使讀者能夠回顧以往所學的知識點,并結合新的知識點進行綜合應用。
3.綜合技術、實際項目
本書在強化篇中提供了兩個貼近實際應用的項目,力求通過實際應用使讀者更容易地掌握MySQL技術與對應業(yè)務的需求。兩個項目都是根據(jù)實際開發(fā)經(jīng)驗總結而來,包含了在實際開發(fā)中所遇到的各種問題。項目結構清晰、擴展性強,讀者可根據(jù)個人需求進行擴展開發(fā)。
4.精彩欄目、貼心提示
本書根據(jù)實際學習的需要,設置了“注意”“說明”等許多貼心的小欄目,輔助讀者輕松理解所學知識,規(guī)避編程陷阱。
本書讀者對象
√編程愛好者
√參加畢業(yè)設計的學生
√相關培訓機構的老師和學生
√大中專院校的老師和學生
√各階段程序開發(fā)人員
√需要進行查閱和參考資料的開發(fā)人員
讀者服務
為方便解決讀者在學習本書過程中遇到的疑難問題及獲取更多圖書配套資源,我們在明日學院網(wǎng)站提供了社區(qū)服務和配套學習服務支持。此外,我們還提供了質(zhì)量反饋信箱及售后服務電話等,如圖書有質(zhì)量問題,可以及時聯(lián)系我們,我們將竭誠為您服務。
√質(zhì)量反饋信箱:mingrisoft@mingrisoft.com
√售后服務電話:4006751066
√售后服務QQ群:162973740
√微信公眾號:明日IT部落
致讀者
本書由明日科技的.NET開發(fā)團隊策劃并組織編寫,主要編寫人員有周佳星、王小科、張鑫、劉書娟、何平、趙寧、李磊、王國輝、高春艷、賽奎春、葛忠月、宋萬勇、楊麗、劉媛媛、依瑩瑩等。在編寫本書的過程中,我們本著科學、嚴謹?shù)膽B(tài)度,力求精益求精,但疏漏之處在所難免,敬請廣大讀者批評斧正。
感謝您閱讀本書,希望本書能成為您編程路上的領航者。
祝您讀書快樂!
編著者
第1篇 基礎篇001
第1章 初識MySQL 002
1.1 了解MySQL 002
1.2 MySQL 8.0的新特性 003
1.3 MySQL服務器的安裝與配置 004
1.3.1 MySQL下載 005
1.3.2 MySQL環(huán)境安裝 007
1.3.3 啟動、連接、斷開和停止MySQL服務器 015
第2章 數(shù)據(jù)庫操作 020
2.1 認識數(shù)據(jù)庫 020
2.1.1 數(shù)據(jù)庫基本概念 020
2.1.2 數(shù)據(jù)庫常用對象 021
2.1.3 系統(tǒng)數(shù)據(jù)庫 022
2.2 創(chuàng)建數(shù)據(jù)庫 022
2.3 查看數(shù)據(jù)庫 025
2.4 選擇數(shù)據(jù)庫 026
2.5 修改數(shù)據(jù)庫 026
2.6 刪除數(shù)據(jù)庫 027
2.7 數(shù)據(jù)庫存儲引擎的應用 028
2.7.1 查詢MySQL中支持的存儲引擎 029
2.7.2 InnoDB存儲引擎 030
2.7.3 MyISAM存儲引擎 031
2.7.4 MEMORY存儲引擎 032
2.7.5 如何選擇存儲引擎 032
2.8 綜合案例——創(chuàng)建測試數(shù)據(jù)庫 033
第3章 MySQL表結構管理 035
3.1 MySQL數(shù)據(jù)類型 035
3.1.1 數(shù)字類型 035
3.1.2 字符串類型 036
3.1.3 日期和時間類型 037
3.2 創(chuàng)建表 037
3.3 修改表結構 039
3.3.1 添加新字段及修改字段定義 039
3.3.2 修改字段名 040
3.3.3 刪除字段 040
3.3.4 修改表名 040
3.4 刪除表 041
3.5 綜合案例 042
3.6 實戰(zhàn)練習 043
第4章 表數(shù)據(jù)的增、刪、改操作 044
4.1 插入表記錄 044
4.1.1 使用INSERT語句插入數(shù)據(jù) 044
4.1.2 插入完整數(shù)據(jù) 045
4.1.3 插入數(shù)據(jù)記錄的一部分 046
4.1.4 插入多條記錄 046
4.1.5 使用INSERT…SET語句插入數(shù)據(jù) 047
4.2 修改表記錄 048
4.3 刪除表記錄 049
4.3.1 通過DELETE語句刪除數(shù)據(jù) 049
4.3.2 通過TRUNCATE TABLE語句刪除數(shù)據(jù) 051
4.4 綜合案例 051
4.5 實戰(zhàn)練習 052
第5章 簡單數(shù)據(jù)查詢 054
5.1 基本查詢語句 054
5.2 單 表 查 詢 056
5.2.1 查詢所有字段 056
5.2.2 查詢指定字段 056
5.2.3 查詢指定數(shù)據(jù) 057
5.2.4 帶關鍵字IN的范圍查詢 058
5.2.5 帶關鍵字BETWEEN AND的范圍查詢 058
5.2.6 模糊查詢 059
5.2.7 查詢空值 059
5.2.8 帶AND的多條件查詢 060
5.2.9 帶OR的多條件查詢 061
5.2.10 去除結果中的重復行 061
5.2.11 對查詢結果排序 062
5.2.12 分組查詢 063
5.2.13 限制查詢結果的數(shù)量 064
5.3 聚合函數(shù)查詢 065
5.3.1 COUNT()函數(shù) 065
5.3.2 SUM()函數(shù) 066
5.3.3 AVG()函數(shù) 066
5.3.4 MAX()函數(shù) 067
5.3.5 MIN()函數(shù) 067
5.4 綜合案例 068
5.5 實戰(zhàn)練習 068
第6章 多表數(shù)據(jù)查詢 070
6.1 連接查詢 070
6.1.1 內(nèi)連接查詢 070
6.1.2 外連接查詢 071
6.2 子查詢 072
6.2.1 帶IN關鍵字的子查詢 073
6.2.2 帶比較運算符的子查詢 074
6.2.3 帶ANY關鍵字的子查詢 074
6.2.4 帶ALL關鍵字的子查詢 074
6.3 合并查詢結果 075
6.4 定義表和字段的別名 076
6.4.1 為表取別名 076
6.4.2 為字段取別名 077
6.5 使用正則表達式查詢 078
6.5.1 匹配指定字符中的任意一個 079
6.5.2 使用“*”和“ ”來匹配多個字符 079
6.6 綜合案例 079
6.7 實戰(zhàn)練習 080
第7章 常用函數(shù) 082
7.1 MySQL函數(shù) 082
7.2 數(shù)學函數(shù) 083
7.3 字符串函數(shù) 086
7.4 日期和時間函數(shù) 091
7.5 條件判斷函數(shù) 095
7.6 系統(tǒng)信息函數(shù) 096
7.7 其他函數(shù) 098
7.8 綜合案例 100
7.9 實戰(zhàn)練習 101
第8章 數(shù)據(jù)完整性約束 102
8.1 定義完整性約束 102
8.1.1 實體完整性 102
8.1.2 參照完整性 104
8.1.3 用戶定義完整性 107
8.2 命名完整性約束 109
8.3 更新完整性約束 110
8.3.1 修改完整性約束 110
8.3.2 刪除完整性約束 110
8.4 綜合案例 111
8.5 實戰(zhàn)練習 112
第9章 索引 113
9.1 索引概述 113
9.1.1 MySQL索引概述 113
9.1.2 MySQL索引分類 114
9.2 創(chuàng)建索引 114
9.2.1 在建立數(shù)據(jù)表時創(chuàng)建索引 114
9.2.2 在已建立的數(shù)據(jù)表中創(chuàng)建索引 119
9.2.3 修改數(shù)據(jù)表結構添加索引 122
9.3 刪除索引 125
9.4 綜合案例 126
9.5 實戰(zhàn)練習 127
第10章 視圖 128
10.1 視圖概述 128
10.1.1 視圖的概念 128
10.1.2 視圖的作用 129
10.2 創(chuàng)建視圖 129
10.2.1 查看創(chuàng)建視圖的權限 129
10.2.2 在MySQL中創(chuàng)建視圖 130
10.2.3 創(chuàng)建視圖的注意事項 131
10.3 視圖操作 131
10.3.1 查看視圖 131
10.3.2 修改視圖 134
10.3.3 更新視圖 135
10.3.4 刪除視圖 137
10.4 綜合案例 138
10.5 實戰(zhàn)練習 138
第11章 存儲過程與存儲函數(shù) 139
11.1 創(chuàng)建存儲過程和存儲函數(shù) 139
11.1.1 創(chuàng)建存儲過程 139
11.1.2 創(chuàng)建存儲函數(shù) 141
11.2 存儲過程和存儲函數(shù)的調(diào)用 142
11.2.1 調(diào)用存儲過程 142
11.2.2 調(diào)用存儲函數(shù) 143
11.3 變量和光標的應用 143
11.3.1 變量的應用 143
11.3.2 光標的應用 145
11.4 查看存儲過程和存儲函數(shù) 147
11.4.1 SHOW STATUS語句 147
11.4.2 SHOW CREATE語句 147
11.5 修改存儲過程和存儲函數(shù) 148
11.6 刪除存儲過程和存儲函數(shù) 149
11.7 綜合案例 150
11.8 實戰(zhàn)練習 151
第12章 觸發(fā)器 153
12.1 MySQL觸發(fā)器 153
12.1.1 創(chuàng)建MySQL觸發(fā)器 153
12.1.2 創(chuàng)建具有多條執(zhí)行語句的觸發(fā)器 154
12.2 查看觸發(fā)器 156
12.2.1 SHOW TRIGGERS 156
12.2.2 查看triggers表中觸發(fā)器信息 156
12.3 使用觸發(fā)器 158
12.3.1 觸發(fā)器的執(zhí)行順序 158
12.3.2 使用觸發(fā)器維護冗余數(shù)據(jù) 159
12.4 刪除觸發(fā)器 160
12.5 綜合案例 161
12.6 實戰(zhàn)練習 162
第13章 事務處理與鎖 163
13.1 事務處理 163
13.1.1 事務的概念 163
13.1.2 事務處理的必要性 164
13.1.3 事務回滾 166
13.1.4 事務提交 167
13.1.5 MySQL中事務的應用 168
13.1.6 回退點 169
13.2 鎖 170
13.2.1 MySQL鎖的基本知識 170
13.2.2 表級鎖 171
13.2.3 行級鎖 175
13.2.4 什么是死鎖與如何避免死鎖 176
13.3 綜合案例 177
13.4 實戰(zhàn)練習 177
第14章 數(shù)據(jù)庫的備份與恢復 179
14.1 數(shù)據(jù)備份 179
14.1.1 使用mysqldump命令備份 179
14.1.2 直接復制整個數(shù)據(jù)庫目錄 182
14.1.3 使用mysqlhotcopy工具快速備份 183
14.2 數(shù)據(jù)恢復 183
14.2.1 使用mysql命令還原 183
14.2.2 直接復制到數(shù)據(jù)庫目錄 184
14.3 數(shù)據(jù)庫遷移 184
14.3.1 相同版本的MySQL數(shù)據(jù)庫之間的遷移 184
14.3.2 不同數(shù)據(jù)庫之間的遷移 185
14.4 表的導出和導入 185
14.4.1 用SELECT …INTO OUTFILE導出文本文件 186
14.4.2 用mysqldump命令導出文本文件 189
14.4.3 用mysql命令導出文本文件 192
14.5 綜合案例 193
14.6 實戰(zhàn)練習 194
第15章 MySQL優(yōu)化 196
15.1 優(yōu)化概述 196
15.2 優(yōu)化查詢 197
15.2.1 分析查詢語句 197
15.2.2 索引對查詢速度的影響 198
15.2.3 使用索引查詢 199
15.3 優(yōu)化數(shù)據(jù)庫結構 200
15.3.1 將字段很多的表分解成多個表 200
15.3.2 增加中間表 201
15.3.3 優(yōu)化插入記錄的速度 202
15.3.4 分析表、檢查表和優(yōu)化表 202
15.4 查詢緩存 204
15.5 子查詢優(yōu)化多表查詢 204
15.6 優(yōu)化表設計 205
15.7 綜合案例 206
15.8 實戰(zhàn)練習 207
第16章 用戶和權限管理 208
16.1 用戶管理 208
16.1.1 創(chuàng)建用戶 208
16.1.2 刪除用戶 209
16.1.3 重命名用戶 209
16.2 管理訪問權限 210
16.2.1 查看用戶權限 210
16.2.2 設置用戶權限 210
16.3 MySQL數(shù)據(jù)庫常見安全問題 214
16.3.1 權限更改何時生效 214
16.3.2 設置賬戶密碼 214
16.3.3 如何使密碼更安全 215
16.4 綜合案例 215
16.5 實戰(zhàn)練習 216
第2篇 實戰(zhàn)篇217
第17章 各種編程語言連接MySQL數(shù)據(jù)庫 218
17.1 在Python程序中連接MySQL數(shù)據(jù)庫 218
17.1.1 安裝PyMySQL 218
17.1.2 連接MySQL數(shù)據(jù)庫 218
17.1.3 創(chuàng)建MySQL數(shù)據(jù)表 219
17.1.4 操作MySQL數(shù)據(jù)表 220
17.2 在C語言程序中連接MySQL數(shù)據(jù)庫 221
17.2.1 配置MySQL依賴文件及庫 221
17.2.2 連接MySQL數(shù)據(jù)庫 223
17.3 在Java程序中連接MySQL數(shù)據(jù)庫 223
17.3.1 JDBC中常用的類和接口 224
17.3.2 數(shù)據(jù)庫操作 228
17.4 在PHP程序中連接MySQL數(shù)據(jù)庫 231
17.4.1 PHP操作MySQL數(shù)據(jù)庫的步驟 231
17.4.2 使用PHP操作MySQL數(shù)據(jù)庫 232
17.4.3 PHP管理MySQL數(shù)據(jù)庫中的數(shù)據(jù) 234
第18章 操作數(shù)據(jù)表 241
18.1 插入單行數(shù)據(jù) 241
18.1.1 插入整行數(shù)據(jù) 241
18.1.2 插入部分行數(shù)據(jù) 242
18.2 批量插入數(shù)據(jù) 243
18.2.1 通過VALUES關鍵字插入多行數(shù)據(jù) 243
18.2.2 通過查詢語句插入多行數(shù)據(jù) 244
18.3 修改數(shù)據(jù) 245
18.2.1 使用UPDATE語句更新列值 245
18.3.2 依據(jù)外表值更新數(shù)據(jù) 247
18.4 刪除數(shù)據(jù) 248
18.4.1 使用DELETE語句刪除數(shù)據(jù) 248
18.4.2 使用TRUNCATE TABLE語句刪除數(shù)據(jù) 249
第19章 數(shù)據(jù)查詢 251
19.1 模糊查詢 251
19.1.1 LIKE謂詞 251
19.1.2 “%”通配符的使用 251
19.1.3 “_”通配符的使用 252
19.1.4 使用ESCAPE定義轉(zhuǎn)義字符 253
19.2 查詢?nèi)掌谛蛿?shù)據(jù) 253
19.2.1 轉(zhuǎn)換日期格式 254
19.2.2 計算兩個日期的間隔天數(shù) 255
19.2.3 按指定日期查詢數(shù)據(jù) 255
19.3 查詢指定范圍的數(shù)據(jù) 256
19.3.1 查詢兩值之間的數(shù)據(jù) 256
19.3.2 查詢兩個日期之間的數(shù)據(jù) 257
19.3.3 在BETWEEN中使用日期函數(shù) 257
19.3.4 查詢不在兩數(shù)之間的數(shù)據(jù) 258
第20章 數(shù)據(jù)匯總 260
20.1 多列求和 260
20.2 求平均值 261
20.2.1 AVG()函數(shù)的普通用法 262
20.2.2 使用WHERE子句限制AVG()函數(shù)統(tǒng)計的行 262
20.3 求最大值與最小值 263
第21章 多表查詢的應用 265
21.1 合并多個結果集 265
21.1.1 UNION操作符 265
21.1.2 通過UNION ALL返回重復的行 268
21.2 使用子查詢關聯(lián)數(shù)據(jù) 268
21.3 內(nèi)連接查詢數(shù)據(jù) 270
21.3.1 等值連接 270
21.3.2 不等值連接 271
21.3.3 自然連接 271
第22章 處理重復數(shù)據(jù) 273
22.1 防止表中出現(xiàn)重復數(shù)據(jù) 273
22.2 過濾重復數(shù)據(jù) 276
22.3 統(tǒng)計重復數(shù)據(jù)的數(shù)量 277
22.4 移除表中的重復數(shù)據(jù) 277
第3篇 強化篇279
第23章 Python MySQL實現(xiàn)在線學習筆記 280
23.1 需求分析 280
23.2 系統(tǒng)設計 280
23.3 系統(tǒng)開發(fā) 283
23.4 技術準備 284
23.4.1 PyMySQL模塊 284
23.4.2 WTForms模塊 285
23.5 數(shù)據(jù)庫設計 286
23.5.1 數(shù)據(jù)庫概要說明 286
23.5.2 創(chuàng)建數(shù)據(jù)表 286
23.5.3 數(shù)據(jù)庫操作類 287
23.6 用戶模塊設計 289
23.6.1 用戶注冊功能實現(xiàn) 290
23.6.2 用戶登錄功能實現(xiàn) 292
23.6.3 退出登錄功能實現(xiàn) 295
23.6.4 用戶權限管理功能實現(xiàn) 296
23.7 筆記模塊設計 296
23.7.1 筆記列表功能實現(xiàn) 297
23.7.2 添加筆記功能實現(xiàn) 298
23.7.3 編輯筆記功能實現(xiàn) 299
23.7.4 刪除筆記功能實現(xiàn) 300
第24章 Struts 2 Spring Hibernate MySQL實現(xiàn)網(wǎng)絡商城 302
24.1 開發(fā)背景 302
24.2 需求分析 302
24.3 系統(tǒng)設計 303
24.3.1 功能結構 303
24.3.2 系統(tǒng)流程圖 303
24.3.3 開發(fā)環(huán)境 304
24.3.4 系統(tǒng)預覽 305
24.3.5 文件夾組織結構 306
24.4 數(shù)據(jù)庫設計 307
24.4.1 數(shù)據(jù)庫概念設計 307
24.4.2 創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)表 308
24.5 公共模塊的設計 310
24.5.1 泛型工具類 311
24.5.2 數(shù)據(jù)持久化類 311
24.5.3 分頁操作 313
24.5.4 實體映射 314
24.6 項目環(huán)境搭建 319
24.6.1 配置Struts 2 319
24.6.2 配置Hibernate 321
24.6.3 配置Spring 322
24.6.4 配置web.xml 323
24.7 前臺商品信息查詢模塊設計 324
24.7.1 前臺商品信息查詢模塊概述 324
24.7.2 前臺商品信息查詢模塊技術分析 324
24.7.3 前臺商品信息查詢模塊實現(xiàn)過程 325
24.8 購物車模塊設計 327
24.8.1 購物車模塊概述 327
24.8.2 購物車模塊技術分析 327
24.8.3 購物車基本功能實現(xiàn)過程 328
24.8.4 訂單相關功能實現(xiàn)過程 330
24.9 后臺商品管理模塊設計 333
24.9.1 后臺商品管理模塊概述 333
24.9.2 后臺商品管理模塊技術分析 333
24.9.3 商品管理功能實現(xiàn)過程 334
24.9.4 商品類別管理功能實現(xiàn)過程 338