本書從零基礎(chǔ)讀者的角度出發(fā),通過通俗易懂的語(yǔ)言、豐富多彩的實(shí)例,循序漸進(jìn)地讓讀者在實(shí)踐中學(xué)習(xí)MySQL編程知識(shí),并提升自己的實(shí)際開發(fā)能力。
全書共分為4篇18章,內(nèi)容包括MySQL概述、MySQL圖形化管理工具、MySQL語(yǔ)言基礎(chǔ)、數(shù)據(jù)庫(kù)和數(shù)據(jù)表的操作、數(shù)據(jù)查詢、MySQL函數(shù)、索引、視圖、數(shù)據(jù)完整性約束、存儲(chǔ)過程與存儲(chǔ)函數(shù)、觸發(fā)器、事件、數(shù)據(jù)的備份與恢復(fù)、性能優(yōu)化、安全管理、MySQL系統(tǒng)管理、基于Java+MySQL的看店寶和基于Python+MySQL的智慧校園考試系統(tǒng)。書中知識(shí)點(diǎn)講解細(xì)致,側(cè)重介紹每個(gè)知識(shí)點(diǎn)的使用場(chǎng)景,涉及的代碼給出了詳細(xì)的注釋,可以使讀者輕松領(lǐng)會(huì)MySQL程序開發(fā)的精髓,快速提高開發(fā)技能。同時(shí),本書配套了大量教學(xué)視頻,掃碼即可觀看,還提供所有程序源文件,方便讀者實(shí)踐。
本書適合MySQL初學(xué)者、數(shù)據(jù)庫(kù)工程師等自學(xué)使用,也可用作高等院校相關(guān)專業(yè)的教材及參考書。
第1篇 基礎(chǔ)知識(shí)篇
第1章 MySQL概述 2 視頻講解:4節(jié),22分鐘
1.1 了解MySQL 3
1.1.1 MySQL數(shù)據(jù)庫(kù)的概念 3
1.1.2 MySQL的發(fā)展史 3
1.1.3 MySQL的優(yōu)勢(shì) 3
1.2 MySQL特性 3
1.3 MySQL的應(yīng)用環(huán)境 5
1.4 MySQL服務(wù)器的安裝和配置 5
1.4.1 MySQL服務(wù)器下載 5
1.4.2 MySQL服務(wù)器安裝 7
1.4.3 啟動(dòng)、連接、斷開和停止MySQL服務(wù)器 14
1.4.4 打開MySQL 8.0 Command Line Client 17
本章知識(shí)思維導(dǎo)圖 18
第2章 MySQL Workbench圖形化管理工具 19
2.1 MySQL Workbench圖形化管理工具概述 20
2.2 MySQL Workbench安裝 20
2.3 創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表 20
2.3.1 創(chuàng)建數(shù)據(jù)庫(kù) 20
2.3.2 創(chuàng)建數(shù)據(jù)表 22
2.4 添加數(shù)據(jù) 23
2.5 數(shù)據(jù)的導(dǎo)出和導(dǎo)入 24
2.5.1 數(shù)據(jù)的導(dǎo)出 24
2.5.2 數(shù)據(jù)的導(dǎo)入 25
本章知識(shí)思維導(dǎo)圖 26
第3章 MySQL語(yǔ)言基礎(chǔ) 27 視頻講解:3節(jié),45分鐘
3.1 數(shù)據(jù)類型 28
3.1.1 數(shù)字類型 28
3.1.2 字符串類型 28
3.1.3 日期和時(shí)間數(shù)據(jù)類型 30
3.2 運(yùn)算符 30
3.2.1 算術(shù)運(yùn)算符 30
3.2.2 比較運(yùn)算符 31
3.2.3 邏輯運(yùn)算符 34
3.2.4 位運(yùn)算符 36
3.2.5 運(yùn)算符的優(yōu)先級(jí) 37
3.3 流程控制語(yǔ)句 37
3.3.1 IF語(yǔ)句 37
3.3.2 CASE語(yǔ)句 38
3.3.3 WHILE循環(huán)語(yǔ)句 39
3.3.4 LOOP循環(huán)語(yǔ)句 40
3.3.5 REPEAT循環(huán)語(yǔ)句 41
本章知識(shí)思維導(dǎo)圖 43
第4章 數(shù)據(jù)庫(kù)和數(shù)據(jù)表操作 44 視頻講解:12節(jié),78分鐘
4.1 數(shù)據(jù)庫(kù)操作 45
4.1.1 創(chuàng)建數(shù)據(jù)庫(kù) 45
4.1.2 查看數(shù)據(jù)庫(kù) 45
4.1.3 選擇數(shù)據(jù)庫(kù) 46
4.1.4 刪除數(shù)據(jù)庫(kù) 46
4.2 數(shù)據(jù)表操作 46
4.2.1 創(chuàng)建數(shù)據(jù)表 46
4.2.2 查看表結(jié)構(gòu) 47
4.2.3 修改表結(jié)構(gòu) 48
4.2.4 重命名表 49
4.2.5 刪除數(shù)據(jù)表 50
4.3 語(yǔ)句操作 50
4.3.1 插入記錄 50
4.3.2 查詢數(shù)據(jù)庫(kù)記錄 51
4.3.3 修改記錄 55
4.3.4 刪除記錄 56
本章知識(shí)思維導(dǎo)圖 56
第5章 數(shù)據(jù)查詢 57 視頻講解:8節(jié),73分鐘
5.1 基本查詢語(yǔ)句 58
5.2 單表查詢 59
5.2.1 查詢所有字段 59
5.2.2 查詢指定字段 59
5.2.3 查詢指定數(shù)據(jù) 60
5.2.4 帶IN關(guān)鍵字的查詢 60
5.2.5 帶BETWEEN AND的范圍查詢 61
5.2.6 帶LIKE的字符匹配查詢 62
5.2.7 用IS NULL關(guān)鍵字查詢空值 62
5.2.8 帶AND的多條件查詢 63
5.2.9 帶OR的多條件查詢 63
5.2.10 用DISTINCT關(guān)鍵字去除結(jié)果中的重復(fù)行 64
5.2.11 用ORDEBY關(guān)鍵字對(duì)查詢結(jié)果排序 64
5.2.12 用GROUP BY關(guān)鍵字分組查詢 64
5.2.13 用LIMIT限制查詢結(jié)果的數(shù)量 66
5.3 使用聚合函數(shù)查詢 66
5.3.1 COUNT()函數(shù) 67
5.3.2 SUM()函數(shù) 67
5.3.3 AVG()函數(shù) 67
5.3.4 MAX()函數(shù) 68
5.3.5 MIN()函數(shù) 68
5.4 連接查詢 69
5.4.1 內(nèi)連接查詢 69
5.4.2 外連接查詢 70
5.4.3 復(fù)合條件連接查詢 71
5.5 子查詢 71
5.5.1 帶IN關(guān)鍵字的子查詢 72
5.5.2 帶比較運(yùn)算符的子查詢 73
5.5.3 帶EXISTS關(guān)鍵字的子查詢 73
5.5.4 帶ANY關(guān)鍵字的子查詢 74
5.5.5 帶ALL關(guān)鍵字的子查詢 75
5.6 合并查詢結(jié)果 76
5.7 定義表和字段的別名 77
5.7.1 為表取別名 77
5.7.2 為字段取別名 77
5.8 使用正則表達(dá)式查詢 78
5.8.1 匹配指定字符中的任意一個(gè) 79
5.8.2 使用“*”和“+”來匹配多個(gè)字符 79
本章知識(shí)思維導(dǎo)圖 80
第6章 MySQL函數(shù) 81 視頻講解:7節(jié),34分鐘
6.1 MySQL函數(shù)概述 82
6.2 數(shù)學(xué)函數(shù) 82
6.2.1 ABS(x)函數(shù) 83
6.2.2 FLOOR(x)函數(shù) 83
6.2.3 RAND()函數(shù) 83
6.2.4 PI()函數(shù) 84
6.2.5 TRUNCATE(x,y)函數(shù) 84
6.2.6 ROUND(x)函數(shù)和ROUND(x,y)函數(shù) 84
6.2.7 SQRT(x)函數(shù) 85
6.3 字符串函數(shù) 85
6.3.1 INSERT(s1,x,len,s2)函數(shù) 86
6.3.2 UPPER(s),UCASE(s)函數(shù) 86
6.3.3 LEFT(s,n)函數(shù) 87
6.3.4 RTRIM(s)函數(shù) 87
6.3.5 SUBSTRING(s,n,len)函數(shù) 87
6.3.6 REVERSE(s)函數(shù) 87
6.3.7 FIELD(s,s1,s2,...)函數(shù) 88
6.4 日期和時(shí)間函數(shù) 88
6.4.1 CURDATE()函數(shù)和CURRENT_DATE()函數(shù) 89
6.4.2 CURTIME()函數(shù)和CURRENT_TIME()函數(shù) 89
6.4.3 NOW()函數(shù) 90
6.4.4 DATEDIFF(d1,d2)函數(shù) 90
6.4.5 ADDDATE(d,n)函數(shù) 90
6.4.6 ADDDATE(d,INTERVAL exp type)函數(shù) 91
6.4.7 SUBDATE(d,n)函數(shù) 91
6.5 條件判斷函數(shù) 91
6.6 系統(tǒng)信息函數(shù) 92
6.7 加密函數(shù) 93
6.8 其他函數(shù) 93
本章知識(shí)思維導(dǎo)圖 94
第2篇 高級(jí)應(yīng)用篇
第7章 索引 96 視頻講解:3節(jié),21分鐘
7.1 索引概述 97
7.1.1 MySQL索引概述 97
7.1.2 MySQL索引分類 97
7.2 創(chuàng)建索引 98
7.2.1 在建立數(shù)據(jù)表時(shí)創(chuàng)建索引 98
7.2.2 在已建立的數(shù)據(jù)表中創(chuàng)建索引 102
7.2.3 修改數(shù)據(jù)表結(jié)構(gòu)添加索引 106
7.3 刪除索引 107
本章知識(shí)思維導(dǎo)圖 108
第8章 視圖 109 視頻講解:3節(jié),27分鐘
8.1 視圖概述 110
8.1.1 視圖的概念 110
8.1.2 視圖的作用 110
8.2 創(chuàng)建視圖 111
8.2.1 查看創(chuàng)建視圖的權(quán)限 111
8.2.2 創(chuàng)建視圖 111
8.2.3 創(chuàng)建視圖的注意事項(xiàng) 112
8.3 管理視圖 113
8.3.1 查看視圖 113
8.3.2 修改視圖 114
8.3.3 更新視圖 116
8.3.4 刪除視圖 118
本章知識(shí)思維導(dǎo)圖 119
第9章 數(shù)據(jù)完整性約束 120 視頻講解:5節(jié),29分鐘
9.1 定義完整性約束 121
9.1.1 實(shí)體完整性 121
9.1.2 參照完整性 123
9.1.3 用戶定義的完整性 126
9.2 命名完整性約束 127
9.3 更新完整性約束 128
9.3.1 刪除完整性約束 129
9.3.2 修改完整性約束 129
本章知識(shí)思維導(dǎo)圖 130
第10章 存儲(chǔ)過程與存儲(chǔ)函數(shù) 131 視頻講解:8節(jié),42分鐘
10.1 創(chuàng)建存儲(chǔ)過程和存儲(chǔ)函數(shù) 132
10.1.1 創(chuàng)建存儲(chǔ)過程 132
10.1.2 創(chuàng)建存儲(chǔ)函數(shù) 133
10.1.3 變量的應(yīng)用 134
10.1.4 光標(biāo)的運(yùn)用 137
10.2 存儲(chǔ)過程和存儲(chǔ)函數(shù)的調(diào)用 138
10.2.1 調(diào)用存儲(chǔ)過程 138
10.2.2 調(diào)用存儲(chǔ)函數(shù) 138
10.3 查看存儲(chǔ)過程和存儲(chǔ)函數(shù) 139
10.3.1 SHOW STATUS語(yǔ)句 139
10.3.2 SHOW CREATE語(yǔ)句 139
10.4 修改存儲(chǔ)過程和存儲(chǔ)函數(shù) 140
10.5 刪除存儲(chǔ)過程和存儲(chǔ)函數(shù) 141
本章知識(shí)思維導(dǎo)圖 142
第11章 觸發(fā)器 143 視頻講解:4節(jié),25分鐘
11.1 創(chuàng)建觸發(fā)器 144
11.1.1 創(chuàng)建單個(gè)執(zhí)行語(yǔ)句的觸發(fā)器 144
11.1.2 創(chuàng)建具有多個(gè)執(zhí)行語(yǔ)句的觸發(fā)器 145
11.2 查看觸發(fā)器 146
11.2.1 SHOW TRIGGERS 146
11.2.2 查看 triggers表中觸發(fā)器信息 147
11.3 執(zhí)行觸發(fā)器 147
11.4 刪除觸發(fā)器 148
本章知識(shí)思維導(dǎo)圖 150
第12章 事件 151 視頻講解:4節(jié),18分鐘
12.1 事件概述 152
12.1.1 查看事件是否開啟 152
12.1.2 開啟事件 153
12.2 創(chuàng)建事件 153
12.3 修改事件 155
12.4 刪除事件 157
本章知識(shí)思維導(dǎo)圖 158
第3篇 系統(tǒng)管理篇
第13章 數(shù)據(jù)的備份與恢復(fù) 160 視頻講解:4節(jié),43分鐘
13.1 數(shù)據(jù)備份 161
13.1.1 使用mysqldump命令備份 161
13.1.2 直接復(fù)制整個(gè)數(shù)據(jù)庫(kù)目錄 163
13.1.3 使用mysqlhotcopy工具快速備份 163
13.2 數(shù)據(jù)恢復(fù) 164
13.2.1 使用mysql命令還原數(shù)據(jù) 164
13.2.2 直接復(fù)制到數(shù)據(jù)庫(kù)目錄 164
13.3 數(shù)據(jù)庫(kù)遷移 165
13.3.1 相同版本的MySQL數(shù)據(jù)庫(kù)之間的遷移 165
13.3.2 不同數(shù)據(jù)庫(kù)之間的遷移 166
13.4 表的導(dǎo)出和導(dǎo)入 166
13.4.1 用SELECT ...INTO OUTFILE導(dǎo)出文本文件 166
13.4.2 用mysqldump命令導(dǎo)出文本文件 167
13.4.3 用mysql命令導(dǎo)出文本文件 168
本章知識(shí)思維導(dǎo)圖 169
第14章 性能優(yōu)化 170 視頻講解:5節(jié),30分鐘
14.1 優(yōu)化概述 171
14.2 優(yōu)化查詢 171
14.2.1 分析查詢語(yǔ)句 172
14.2.2 索引對(duì)查詢速度的影響 173
14.2.3 使用索引查詢 174
14.3 優(yōu)化數(shù)據(jù)庫(kù)結(jié)構(gòu) 175
14.3.1 將字段很多的表分解成多個(gè)表 175
14.3.2 增加中間表 176
14.3.3 優(yōu)化插入記錄的速度 177
14.3.4 分析表、檢查表和優(yōu)化表 178
14.4 查詢高速緩存 179
14.4.1 檢驗(yàn)高速緩存是否開啟 179
14.4.2 使用高速緩存 180
14.5 優(yōu)化多表查詢 180
14.6 優(yōu)化表設(shè)計(jì) 182
本章知識(shí)思維導(dǎo)圖 183
第15章 安全管理 184 視頻講解:4節(jié),29分鐘
15.1 安全保護(hù)策略概述 185
15.2 用戶和權(quán)限管理 185
15.2.1 使用CREATE USER命令創(chuàng)建用戶 186
15.2.2 使用DROP USER命令刪除用戶 186
15.2.3 使用RENAME USER命令重命名用戶 186
15.2.4 GRANT和REVOKE命令 187
15.3 MySQL數(shù)據(jù)庫(kù)安全常見問題 189
15.3.1 權(quán)限更改何時(shí)生效 189
15.3.2 設(shè)置賬戶密碼 189
15.3.3 使密碼更安全 190
15.4 狀態(tài)文件和日志文件 190
15.4.1 進(jìn)程ID文件 191
15.4.2 日志文件管理 191
本章知識(shí)思維導(dǎo)圖 199
第16章 MySQL系統(tǒng)管理 200
16.1 MySQL系統(tǒng)管理及安全問題 201
16.1.1 管理職責(zé)概述 201
16.1.2 日常管理 202
16.1.3 安全問題 203
16.1.4 數(shù)據(jù)庫(kù)修復(fù)和維護(hù) 203
16.2 數(shù)據(jù)目錄 204
16.2.1 數(shù)據(jù)目錄的位置 204
16.2.2 數(shù)據(jù)目錄的結(jié)構(gòu) 206
16.3 MySQL服務(wù)器如何提供對(duì)數(shù)據(jù)的訪問 206
16.4 MySQL數(shù)據(jù)庫(kù)/數(shù)據(jù)表在文件系統(tǒng)里的表示 207
16.4.1 MySQL數(shù)據(jù)庫(kù)在文件系統(tǒng)里的表示 207
16.4.2 MySQL數(shù)據(jù)表在文件系統(tǒng)里的表示 208
16.5 SQL語(yǔ)句如何映射為數(shù)據(jù)表文件操作 209
16.5.1 創(chuàng)建數(shù)據(jù)表 209
16.5.2 更新數(shù)據(jù)表 209
16.5.3 刪除數(shù)據(jù)表 210
16.6 操作系統(tǒng)對(duì)數(shù)據(jù)庫(kù)和數(shù)據(jù)表命名的限制 210
16.7 MySQL狀態(tài)文件和日志文件 211
本章知識(shí)思維導(dǎo)圖 214
第4篇 項(xiàng)目實(shí)戰(zhàn)篇
第17章 基于Java+MySQL的看店寶(京東版) 216
17.1 需求分析 217
17.2 系統(tǒng)設(shè)計(jì) 217
17.2.1 系統(tǒng)目標(biāo) 217
17.2.2 構(gòu)建開發(fā)環(huán)境 217
17.2.3 系統(tǒng)功能結(jié)構(gòu) 217
17.2.4 業(yè)務(wù)流程圖 218
17.2.5 系統(tǒng)預(yù)覽 219
17.3 數(shù)據(jù)庫(kù)設(shè)計(jì) 222
17.3.1 數(shù)據(jù)庫(kù)概要說明 222
17.3.2 數(shù)據(jù)庫(kù)E-R圖分析 222
17.3.3 數(shù)據(jù)表結(jié)構(gòu) 223
17.4 技術(shù)準(zhǔn)備 224
17.4.1 Servlet 3.0服務(wù) 224
17.4.2 Jsoup爬蟲 226
17.5 數(shù)據(jù)模型設(shè)計(jì) 228
17.5.1 模塊概述 228
17.5.2 代碼實(shí)現(xiàn) 229
17.6 持久層接口設(shè)計(jì) 231
17.6.1 模塊概述 231
17.6.2 代碼實(shí)現(xiàn) 231
17.7 爬蟲服務(wù)設(shè)計(jì) 231
17.7.1 模塊概述 231
17.7.2 代碼實(shí)現(xiàn) 231
17.8 數(shù)據(jù)加工處理服務(wù)設(shè)計(jì) 237
17.8.1 模塊概述 237
17.8.2 代碼實(shí)現(xiàn) 237
17.9 運(yùn)行項(xiàng)目 243
本章知識(shí)思維導(dǎo)圖 248
第18章 基于Python+MySQL的智慧校園考試系統(tǒng) 249
18.1 需求分析 250
18.2 系統(tǒng)功能設(shè)計(jì) 250
18.2.1 系統(tǒng)功能結(jié)構(gòu) 250
18.2.2 系統(tǒng)業(yè)務(wù)流程 250
18.2.3 系統(tǒng)預(yù)覽 251
18.3 系統(tǒng)開發(fā)必備 252
18.3.1 系統(tǒng)開發(fā)環(huán)境 252
18.3.2 文件夾組織結(jié)構(gòu) 252
18.4 數(shù)據(jù)庫(kù)設(shè)計(jì) 253
18.4.1 數(shù)據(jù)庫(kù)概要說明 253
18.4.2 數(shù)據(jù)表模型 254
18.5 用戶登錄模塊設(shè)計(jì) 256
18.5.1 用戶登錄模塊概述 256
18.5.2 使用Django默認(rèn)授權(quán)機(jī)制實(shí)現(xiàn)普通登錄 256
18.5.3 機(jī)構(gòu)注冊(cè)功能的實(shí)現(xiàn) 263
18.6 核心答題功能的設(shè)計(jì) 268
18.6.1 答題首頁(yè)設(shè)計(jì) 268
18.6.2 考試詳情頁(yè)面 270
18.6.3 答題功能的實(shí)現(xiàn) 272
18.6.4 提交答案 276
18.6.5 批量錄入題庫(kù) 278
本章知識(shí)思維導(dǎo)圖 284