內容簡介
《MySQL?從入門到精通(第?3?版)》從初學者角度出發,通過通俗易懂的語言和豐富多彩的實例,詳細介紹了MySQL開發需要掌握的各方面技術。全書共分為4篇22章,包括資料庫基礎,初識MySQL,使用MySQL圖形化管理工具,資料庫操作,存儲引擎及數據類型,數據表操作,MySQL基礎,表數據的增、刪、改操作,數據查詢,常用函式,索引,視圖,數據完整性約束,存儲過程與存儲函式,觸發器,事務,事件,備份與恢復,MySQL性能最佳化,許可權管理及安全控制,Python+MySQL實現智慧校園考試系統和Java+MySQL實現物流配貨系統等內容。書中所有知識都結合具體實例進行介紹,涉及的程式代碼也給出了詳細的注釋,可以使讀者輕鬆領會MySQL的精髓,快速提高開發技能。
圖書目錄
目 錄
第1篇 基 礎 知 識
第1章 資料庫基礎 2
視頻講解:23分鐘
1.1 資料庫系統概述 2
1.1.1 資料庫技術的發展 2
1.1.2 資料庫系統的組成 3
1.2 數據模型 3
1.2.1 數據模型的概念 3
1.2.2 常見的數據模型 4
1.2.3 關係資料庫的規範化 5
1.2.4 關係資料庫的設計原則 7
1.2.5 實體與關係 7
1.3 資料庫的體系結構 8
1.3.1 資料庫三級模式結構 8
1.3.2 三級模式之間的映射 8
1.4 小結 9
1.5 實踐與練習 9
第2章 初識MySQL 10
視頻講解:22分鐘
2.1 了解MySQL 10
2.1.1 MySQL資料庫的概念 11
2.1.2 MySQL的優勢 11
2.1.3 MySQL的發展史 11
2.2 MySQL 8.0的新特性 11
2.3 MySQL的套用環境 13
2.4 MySQL伺服器的安裝和配置 13
2.4.1 MySQL伺服器安裝包的下載 13
2.4.2 MySQL伺服器的安裝 16
2.4.3 啟動、連線、斷開和停止MySQL伺服器 27
2.4.4 打開MySQL 8.0 Command Line Client 31
2.5 如何學好MySQL 32
2.6 小結 32
2.7 實踐與練習 32
第3章 使用MySQL圖形化管理工具 33
視頻講解:23分鐘
3.1 安裝phpMyAdmin圖形化管理工具 33
3.1.1 phpMyAdmin圖形化管理工具簡介 33
3.1.2 下載phpstudy集成開發環境 34
3.1.3 下載phpMyAdmin 34
3.1.4 打開phpMyAdmin 34
3.2 資料庫操作管理 35
3.2.1 創建資料庫 35
3.2.2 修改和刪除資料庫 36
3.3 管理數據表 37
3.3.1 創建數據表 37
3.3.2 修改數據表 38
3.3.3 刪除數據表 38
3.4 管理數據記錄 39
3.4.1 使用SQL語句插入數據 39
3.4.2 使用SQL語句修改數據 40
3.4.3 使用SQL語句查詢數據 40
3.4.4 使用SQL語句刪除數據 41
3.4.5 通過form表單插入數據 42
3.4.6 瀏覽數據 43
3.4.7 搜尋數據 43
3.5 導入/導出數據 44
3.5.1 導出MySQL資料庫腳本 44
3.5.2 導入MySQL資料庫腳本 45
3.6 設定編碼格式 46
3.7 添加伺服器新用戶 48
3.8 重置MySQL伺服器登錄密碼 49
3.9 小結 51
3.10 實踐與練習 51
第4章 資料庫操作 52
視頻講解:28分鐘
4.1 認識資料庫 52
4.1.1 資料庫基本概念 52
4.1.2 資料庫常用對象 54
4.1.3 系統資料庫 54
4.2 創建資料庫 55
4.2.1 使用CREATE DATABASE語句創建資料庫 56
4.2.2 使用CREATE SCHEMA語句創建資料庫 56
4.2.3 創建指定字元集的資料庫 57
4.2.4 創建資料庫前判斷是否存在同名資料庫 58
4.3 查看資料庫(SHOW命令) 58
4.4 選擇資料庫(USE命令) 59
4.5 修改資料庫(ALTER命令) 60
4.6 刪除資料庫(DROP命令) 61
4.7 小結 63
4.8 實踐與練習 63
第5章 存儲引擎及數據類型 64
視頻講解:18分鐘
5.1 MySQL存儲引擎 64
5.1.1 MySQL存儲引擎的概念 65
5.1.2 查詢MySQL中支持的存儲引擎 65
5.1.3 InnoDB存儲引擎 67
5.1.4 MyISAM存儲引擎 68
5.1.5 MEMORY存儲引擎 68
5.1.6 選擇存儲引擎 70
5.1.7 設定數據表的存儲引擎 70
5.2 MySQL數據類型 71
5.2.1 數字類型 71
5.2.2 字元串類型 72
5.2.3 日期和時間類型 74
5.3 小結 74
5.4 實踐與練習 74
第6章 數據表操作 75
視頻講解:38分鐘
6.1 創建數據表(CREATE TABLE語句) 75
6.2 查看錶結構 77
6.2.1 使用SHOW COLUMNS語句查看 77
6.2.2 使用DESCRIBE語句查看 78
6.3 修改表結構(ALTER TABLE語句) 78
6.3.1 添加新欄位和修改欄位定義 79
6.3.2 修改欄位名/類型 80
6.3.3 刪除欄位 81
6.3.4 修改表名 81
6.4 重命名表(RENAME TABLE語句) 82
6.5 複製表(CREATE TABLE…LIKE語句) 83
6.6 刪除表(DROP TABLE語句) 85
6.7 小結 86
6.8 實踐與練習 86
第2篇 核 心 技 術
第7章 MySQL基礎 88
視頻講解:37分鐘
7.1 運算符 88
7.1.1 算術運算符 88
7.1.2 比較運算符 89
7.1.3 邏輯運算符 93
7.1.4 位運算符 95
7.1.5 運算符的優先權 95
7.2 流程控制語句 96
7.2.1 IF語句 96
7.2.2 CASE語句 97
7.2.3 WHILE循環語句 98
7.2.4 LOOP循環語句 99
7.2.5 REPEAT循環語句 100
7.3 小結 101
7.4 實踐與練習 101
第8章 表數據的增、刪、改操作 102
視頻講解:31分鐘
8.1 增添數據 102
8.1.1 使用INSERT…VALUES語句插入數據 102
8.1.2 使用INSERT…SET語句插入數據 106
8.1.3 使用INSERT...SELECT語句插入查詢結果 107
8.2 修改數據 109
8.3 刪除數據 110
8.3.1 使用DELETE語句刪除數據 110
8.3.2 使用TRUNCATE TABLE語句刪除數據 111
8.4 小結 112
8.5 實踐與練習 112
第9章 數據查詢 113
視頻講解:75分鐘
9.1 基本查詢語句 113
9.2 單表查詢 115
9.2.1 查詢所有欄位 115
9.2.2 查詢指定欄位 116
9.2.3 查詢指定數據 116
9.2.4 帶關鍵字IN的查詢 117
9.2.5 帶關鍵字BETWEEN AND的範圍查詢 117
9.2.6 帶LIKE的字元匹配查詢 118
9.2.7 用IS NULL關鍵字查詢空值 119
9.2.8 帶AND的多條件查詢 119
9.2.9 帶OR的多條件查詢 120
9.2.10 用DISTINCT關鍵字去除結果中的重複行 120
9.2.11 用ORDER BY關鍵字對查詢結果進行排序 121
9.2.12 用GROUP BY關鍵字分組查詢 121
9.2.13 用LIMIT限制查詢結果的數量 123
9.3 聚合函式查詢 124
9.3.1 COUNT()統計函式 124
9.3.2 SUM()求和函式 124
9.3.3 AVG()平均數函式 125
9.3.4 MAX()最大值函式 125
9.3.5 MIN()最小值函式 125
9.4 連線查詢 126
9.4.1 內連線查詢 126
9.4.2 外連線查詢 127
9.4.3 複合條件連線查詢 129
9.5 子查詢 129
9.5.1 帶IN關鍵字的子查詢 130
9.5.2 帶比較運算符的子查詢 131
9.5.3 帶EXISTS關鍵字的子查詢 131
9.5.4 帶ANY關鍵字的子查詢 132
9.5.5 帶ALL關鍵字的子查詢 132
9.6 合併查詢結果 133
9.7 定義表和欄位的別名 134
9.7.1 為表取別名 134
9.7.2 為欄位取別名 135
9.8 使用正則表達式查詢 135
9.8.1 匹配指定字元中的任意一個 136
9.8.2 使用“*”和“+”來匹配多個字元 137
9.8.3 匹配以指定的字元開頭和結束的記錄 137
9.9 小結 138
9.10 實踐與練習 138
第10章 常用函式 139
視頻講解:34分鐘
10.1 MySQL函式 139
10.2 數學函式 140
10.2.1 ABS(x)絕對值函式 141
10.2.2 FLOOR(x)向下取整函式 142
10.2.3 RAND()隨機數函式 142
10.2.4 PI()圓周率函式 143
10.2.5 TRUNCATE(x,y)截斷函式 143
10.2.6 ROUND(x)近似值函式和
ROUND(x,y)四捨五入函式 143
10.2.7 SQRT(x)平方函式 144
10.3 字元串函式 144
10.3.1 INSERT(s1,x,len,s2)替換函式 146
10.3.2 UPPER(s)函式和UCASE(s)字母大寫函式 146
10.3.3 LEFT(s,n)取左函式 147
10.3.4 RTRIM(s)去空格函式 147
10.3.5 SUBSTRING(s,n,len)截取函式 147
10.3.6 REVERSE(s)反轉函式 148
10.3.7 FIELD(s,s1,s2,…,sn)位置函式 148
10.3.8 LOCATE(s1,s)、POSITION(s1 IN s)和INSTR(s,s1)3個位置函式 149
10.4 日期和時間函式 149
10.4.1 CURDATE()和CURRENT_DATE()當前日期函式 151
10.4.2 CURTIME()和CURRENT_TIME()當前時間函式 151
10.4.3 NOW()當前日期和時間函式 152
10.4.4 DATEDIFF(d1,d2)間隔天數函式 152
10.4.5 ADDDATE(d,n)日期計算函式 153
10.4.6 ADDDATE(d,INTERVAL expr type)日期時間計算函式 153
10.4.7 SUBDATE(d,n)日期計算函式 153
10.5 條件判斷函式 154
10.6 系統信息函式 155
10.6.1 獲取MySQL版本號、連線數和資料庫名的函式 155
10.6.2 獲取用戶名的函式 155
10.6.3 獲取字元串的字元集和排序方式的函式 156
10.7 其他函式 156
10.7.1 格式化函式FORMAT(x,n) 157
10.7.2 改變字元集的函式 158
10.7.3 改變欄位數據類型的函式 158
10.8 小結 158
10.9 實踐與練習 159
第11章 索引 160
視頻講解:21分鐘
11.1 索引概述 160
11.1.1 MySQL索引概述 161
11.1.2 MySQL索引分類 161
11.2 創建索引 162
11.2.1 在建立數據表時創建索引 162
11.2.2 在已建立的數據表中創建索引 167
11.2.3 修改數據表結構以為數據表添加索引 171
11.3 刪除索引 173
11.4 小結 174
11.5 實踐與練習 174
第12章 視圖 175
視頻講解:26分鐘
12.1 視圖概述 175
12.1.1 視圖的概念 176
12.1.2 視圖的作用 176
12.2 創建視圖 177
12.2.1 查看創建視圖的許可權 177
12.2.2 創建視圖 178
12.2.3 創建視圖的注意事項 179
12.3 視圖操作 180
12.3.1 查看視圖 180
12.3.2 修改視圖 182
12.3.3 更新視圖 184
12.3.4 刪除視圖 186
12.4 小結 186
12.5 實踐與練習 187
第3篇 高 級 應 用
第13章 數據完整性約束 190
視頻講解:29分鐘
13.1 定義完整性約束 190
13.1.1 實體完整性 191
13.1.2 參照完整性 193
13.1.3 用戶定義完整性 195
13.2 命名完整性約束 198
13.3 更新完整性約束 200
13.3.1 刪除完整性約束 200
13.3.2 修改完整性約束 201
13.4 小結 202
13.5 實踐與練習 202
第14章 存儲過程與存儲函式 203
視頻講解:42分鐘
14.1 創建存儲過程和存儲函式 203
14.1.1 創建存儲過程 203
14.1.2 創建存儲函式 205
14.1.3 變數的套用 207
14.1.4 游標的套用 209
14.2 調用存儲過程和存儲函式 210
14.2.1 調用存儲過程 211
14.2.2 調用存儲函式 211
14.3 查看存儲過程和存儲函式 212
14.3.1 SHOW STATUS語句 212
14.3.2 SHOW CREATE語句 212
14.4 修改存儲過程和存儲函式 213
14.5 刪除存儲過程和存儲函式 214
14.6 小結 215
14.7 實踐與練習 215
第15章 觸發器 216
視頻講解:25分鐘
15.1 MySQL觸發器 216
15.1.1 創建MySQL觸發器 216
15.1.2 創建具有多條執行語句的觸發器 217
15.2 查看觸發器 219
15.2.1 SHOW TRIGGERS語句 219
15.2.2 查看triggers表中觸發器信息 220
15.3 使用觸發器 221
15.3.1 觸發器的執行順序 221
15.3.2 使用觸發器維護冗餘數據 222
15.4 刪除觸發器 223
15.5 小結 224
15.6 實踐與練習 224
第16章 事務 225
視頻講解:46分鐘
16.1 事務機制 225
16.1.1 事務的概念 225
16.1.2 事務機制的必要性 226
16.1.3 關閉MySQL自動提交 228
16.1.4 事務回滾 229
16.1.5 事務提交 231
16.1.6 MySQL中的事務 231
16.1.7 回退點 233
16.2 鎖機制 235
16.2.1 MySQL鎖機制的基本知識 235
16.2.2 MyISAM表的表級鎖 236
16.2.3 InnoDB表的行級鎖 240
16.2.4 死鎖的概念與避免 241
16.3 事務的隔離級別 242
16.3.1 事務的隔離級別與並發問題 242
16.3.2 設定事務的隔離級別 243
16.4 小結 243
16.5 實踐與練習 243
第17章 事件 244
視頻講解:18分鐘
17.1 事件概述 244
17.1.1 查看事件是否開啟 245
17.1.2 開啟事件 245
17.2 創建事件 246
17.3 修改事件 249
17.4 刪除事件 250
17.5 小結 251
17.6 實踐與練習 251
第18章 備份與恢復 252
視頻講解:44分鐘
18.1 數據備份 252
18.1.1 使用mysqldump命令備份 253
18.1.2 直接複製整個資料庫目錄 255
18.2 數據恢復 256
18.2.1 使用mysql命令還原 256
18.2.2 直接複製到資料庫目錄中 256
18.3 資料庫遷移 257
18.3.1 相同版本的MySQL資料庫之間的遷移 257
18.3.2 不同資料庫之間的遷移 257
18.4 表的導出和導入 258
18.4.1 用SELECT...INTO OUTFILE語句導出文本檔案 258
18.4.2 用mysqldump命令導出文本檔案 262
18.4.3 用mysql命令導出文本檔案 264
18.4.4 用LOAD DATA INFILE命令將文本檔案導入數據表中 265
18.4.5 用mysqlimport命令導入文本檔案 267
18.5 小結 268
18.6 實踐與練習 268
第19章 MySQL性能最佳化 269
視頻講解:30分鐘
19.1 最佳化概述 269
19.1.1 分析MySQL資料庫的性能 270
19.1.2 通過profile工具分析語句消耗性能 271
19.2 最佳化查詢 272
19.2.1 分析查詢語句 272
19.2.2 索引對查詢速度的影響 273
19.2.3 使用索引查詢 274
19.3 最佳化資料庫結構 276
19.3.1 將設定了很多欄位的表分解成多個表 276
19.3.2 增加中間表 277
19.3.3 最佳化插入記錄的速度 277
19.3.4 分析表、檢查表和最佳化表 279
19.4 最佳化多表查詢 280
19.5 最佳化表設計 281
19.6 小結 282
19.7 實踐與練習 282
第20章 許可權管理及安全控制 283
視頻講解:29分鐘
20.1 安全保護策略概述 283
20.2 用戶和許可權管理 284
20.2.1 使用CREATE USER命令創建用戶 285
20.2.2 使用DROP USER命令刪除用戶 285
20.2.3 使用RENAME USER命令重命名用戶 286
20.2.4 使用GRANT和REVOKE命令管理訪問許可權 286
20.3 MySQL資料庫安全常見問題 291
20.3.1 許可權更改何時生效 291
20.3.2 設定賬戶密碼 291
20.3.3 使密碼更安全 292
20.4 日誌檔案 292
20.4.1 錯誤日誌 292
20.4.2 慢查詢日誌 293
20.4.3 查詢日誌 294
20.4.4 二進制日誌 294
20.5 小結 296
20.6 實踐與練習 296
第4篇 項 目 實 戰
第21章 Python+MySQL實現智慧校園
考試系統 298
視頻講解:112分鐘
21.1 需求分析 298
21.2 系統功能設計 299
21.2.1 系統功能結構 299
21.2.2 系統業務流程 299
21.2.3 系統預覽 300
21.3 系統開發必備 301
21.3.1 系統開發環境 301
21.3.2 資料夾組織結構 301
21.4 資料庫設計 303
21.4.1 資料庫概要 303
21.4.2 數據表模型 304
21.5 用戶登錄模組設計 306
21.5.1 用戶登錄模組概述 306
21.5.2 使用Django默認授權機制實現普通登錄 306
21.5.3 機構註冊功能的實現 313
21.6 核心答題功能的設計 318
21.6.1 答題首頁設計 318
21.6.2 考試詳情頁面 321
21.6.3 答題功能的實現 324
21.6.4 提交答案 327
21.6.5 批量錄入題庫 330
21.7 小結 335
第22章 Java+MySQL實現物流
配貨系統 336
視頻講解:121分鐘
22.1 需求分析 336
22.2 系統設計 337
22.2.1 系統目標 337
22.2.2 構建開發環境 337
22.2.3 系統功能結構 338
22.2.4 業務流程 338
22.2.5 系統預覽 339
22.3 資料庫設計 341
22.3.1 資料庫概要 341
22.3.2 數據表結構 341
22.4 技術準備 343
22.4.1 JSP基礎 343
22.4.2 JSP的內置對象 345
22.4.3 Struts 2框架 346
22.4.4 Struts 2框架的Action對象 349
22.5 公共模組設計 350
22.5.1 編寫資料庫持久化類 350
22.5.2 編寫獲取系統時間操作類 351
22.5.3 編寫分頁Bean 351
22.5.4 請求頁面中的元素類的編寫 354
22.5.5 編寫重新定義的simple模板 354
22.6 管理員功能模組的設計 356
22.6.1 模組概述 356
22.6.2 代碼實現 357
22.7 車源信息管理模組的設計 361
22.7.1 模組概述 361
22.7.2 代碼實現 362
22.8 發貨單管理模組的設計 366
22.8.1 模組概述 366
22.8.2 代碼實現 367
22.9 小結 371