內容簡介
本書共23章,包括MySQL 8基本內容、MySQL 8擴展內容、MySQL 8綜合設計和流行平台開發MySQL 8套用等。MySQL 8基本內容包括安裝、運行和基本工具,資料庫、字元集和存儲引擎,數據類型,表結構設計,表記錄操作,分區、表空間和行格式,運算符、表達式和系統函式,查詢、視圖和索引,過程式對象程式設計,用戶與許可權,系統管理等。MySQL 8擴展內容包括數據安全、雲資料庫、數據複製、集群:NDB Cluster和NoSQL等。MySQL 8綜合設計包括各流行平台共用的資料庫綜合實例設計,涉及資料庫設計、表結構設計、視圖設計、觸發器設計、存儲過程和自定義函式設計、事件設計、角色和用戶許可權設計等,在此基礎上對資料庫實例各對象採用樣本數據進行測試。流行平台開發MySQL 8套用涉及PHP、Vue/ElementUI Spring Boot MyBatis、Android、WebService、Visual C#、Qt Python等平台,以網上商城不同套用角色操作MySQL 8資料庫實例各對象,並在該過程中完成網上商城基本功能。本書以講故事的方式介紹MySQL 8的基本內容和配套實例,通過資料庫綜合設計和樣本數據測試將MySQL 8各對象串聯起來解決實際問題,精心設計流行平台資料庫套用系統功能,網上配套資源與本書緊密配合,層次清晰、閱讀方便。本書配套資源非常豐富,包括非基本功能二維碼文檔,每個平台各階段可運行的工程源程式檔案和資料庫檔案,每個平台配套開發過程及應用程式分析視頻。本書可作為MySQL 8學習和套用開發文檔,也可作為高等院校相關專業學生的參考書。
圖書目錄
第0章 本書導讀 1
第1章 MySQL 8安裝、運行和基本工具 4
1.1 MySQL簡介 4
1.1.1 MySQL的起源、特點及版本 4
1.1.2 MySQL 8 5
1.2 MySQL 8安裝與運行 7
1.2.1 安裝包方式安裝 7
1.2.2 壓縮檔方式安裝 12
1.2.3 運行MySQL 8 15
1.2.4 SQL語言 18
1.3 MySQL操作工具 19
1.3.1 MySQL客戶端工具 19
1.3.2 MySQL第三方工具 20
第2章 MySQL 8資料庫、字元集和存儲引擎 24
2.1 資料庫和表的基本操作 24
2.1.1 系統資料庫和本書創建的資料庫 24
2.1.2 資料庫的操作 26
2.1.3 表創建和記錄的基本操作及實例 27
2.2 字元集和排序規則 30
2.2.1 字元及其編碼 30
2.2.2 MySQL 8字元集 33
2.2.3 字元集環境變數設定 36
2.2.4 資料庫對象字元集修改 38
2.2.5 字元串亂碼問題 39
2.2.6 字元排序規則及實例 40
2.3 資料庫存儲引擎及實例 43
2.3.1 常用存儲引擎:【MERGE存儲引擎實例】 44
2.3.2 其他存儲引擎:【CSV存儲引擎實例】 48
第3章 MySQL 8數據類型 51
3.1 數值類型及實例 51
3.1.1 整數類型 52
3.1.2 實數類型 53
3.1.3 位型 58
3.2 日期與時間類型及實例 59
3.3 字元串類型及實例 65
3.3.1 文本字元串類型 65
3.3.2 枚舉類型和集合類型 69
3.3.3 二進制字元串類型 72
3.4 JSON和空間數據類型及實例 75
3.4.1 JSON數據類型 75
3.4.2 空間數據類型 79
第4章 MySQL 8表結構設計 86
4.1 數據類型選擇分析:【網上商城表實例】 86
4.2 創建表結構:【網上商城表結構實例】 90
4.2.1 列及其常用屬性 91
4.2.2 列約束 95
4.2.3 列默認值 96
4.2.4 數值類型其他列屬性 98
4.2.5 字元類型其他列屬性 99
4.2.6 虛擬列和類型變化 99
4.2.7 表約束 101
4.2.8 外鍵約束 104
4.2.9 從舊錶創建新表 108
4.2.10 表選項 111
4.3 修改表結構 112
4.3.1 添加和刪除列 113
4.3.2 修改列及其屬性 113
4.3.3 添加和刪除約束 118
4.3.4 表選項修改 122
第5章 MySQL 8表記錄操作 123
5.1 插入記錄 123
5.1.1 插入新記錄:【訂單表、用戶表、商品表實例】 123
5.1.2 插入查詢記錄 129
5.1.3 導入檔案數據:【商品表、供貨商表實例】 130
5.1.4 導入Excel/Word檔案數據:【訂單表、訂單項表實例】 136
5.1.5 導入圖片數據 139
5.2 修改記錄 140
5.2.1 替換記錄 140
5.2.2 更新記錄 143
5.2.3 JSON類型列記錄修改:【用戶表列更新實例】 147
5.2.4 空間類型列記錄修改:【用戶表列更新實例】 148
5.3 刪除記錄 149
5.3.1 逐個刪除行 149
5.3.2 清空表記錄 151
5.4 導出記錄 152
5.4.1 表記錄導出成表 152
5.4.2 表記錄導出成檔案 152
第6章 MySQL 8分區、表空間和行格式 155
6.1 分區及實例 155
6.1.1 分區簡介 155
6.1.2 分區的基本操作 156
6.1.3 範圍分區 160
6.1.4 列表分區 163
6.1.5 散列分區 165
6.1.6 鍵分區 168
6.1.7 子分區 169
6.1.8 分區管理 171
6.2 表空間及實例 175
6.2.1 表空間介紹 175
6.2.2 表空間的創建和使用 179
6.2.3 表空間中表的移動 180
6.2.4 修改表空間屬性 181
6.2.5 刪除表空間 182
6.3 行格式 183
6.3.1 概述 183
6.3.2 行格式設定和修改 184
6.3.3 行格式參數設定 185
第7章 MySQL 8運算符、表達式和系統函式 187
7.1 常量和變數 187
7.1.1 常量 187
7.1.2 變數 189
7.2 運算符與表達式 194
7.2.1 賦值運算符 194
7.2.2 算術運算符 194
7.2.3 比較運算符 195
7.2.4 判斷運算符 200
7.2.5 字元串匹配 202
7.2.6 邏輯運算符和位運算符 204
7.2.7 表達式和運算符的優先權 206
7.3 系統函式 208
7.3.1 數學函式 208
7.3.2 字元串函式 211
7.3.3 日期時間函式 217
7.3.4 類型轉換函式 224
7.3.5 JSON函式 225
7.3.6 空間數據處理函式 229
7.3.7 視窗函式 234
7.3.8 其他函式 236
第8章 MySQL 8查詢、視圖和索引 238
8.1 資料庫查詢及實例 238
8.1.1 SELECT語句 238
8.1.2 選擇輸出項 239
8.1.3 單數據源 244
8.1.4 多數據源 247
8.1.5 查詢條件:邏輯條件 251
8.1.6 查詢條件:枚舉、集合、JSON和空間條件 256
8.1.7 查詢條件:子查詢條件 259
8.1.8 分組 265
8.1.9 分組後篩選 267
8.1.10 輸出行排序 269
8.1.11 輸出行限制 270
8.1.12 多表記錄聯合 271
8.1.13 通用表表達式 272
8.1.14 視窗表達 273
8.1.15 查詢準備 276
8.1.16 單表簡單查詢 277
8.2 視圖及實例 277
8.2.1 創建視圖 278
8.2.2 查詢視圖 279
8.2.3 更新視圖 280
8.2.4 修改視圖 283
8.2.5 刪除視圖 284
8.3 索引及實例 285
8.3.1 索引概述 285
8.3.2 索引操作 286
8.3.3 特殊數據類型索引 289
8.3.4 索引與分區查詢 290
8.3.5 索引建立原則 291
8.4 評估查詢性能及實例 293
8.4.1 評估查詢概述 293
8.4.2 評估查詢實例及其說明 295
8.4.3 統計直方圖 297
第9章 MySQL 8過程式對象程式設計 299
9.1 過程體 299
9.1.1 複合語句的開始和結束 300
9.1.2 局部變數定義 300
9.1.3 條件分支 301
9.1.4 循環執行 303
9.2 出錯處理及實例 305
9.2.1 根據錯誤自動處理 306
9.2.2 根據情況拋出信號 309
9.3 事務管理及實例 311
9.3.1 基本概念 311
9.3.2 事務處理 312
9.3.3 事務隔離級 315
9.3.4 事務套用實例 316
9.4 游標及實例 319
9.5 存儲過程及實例 321
9.5.1 存儲過程的基本操作 321
9.5.2 存儲過程的套用 323
9.5.3 存儲對象訪問控制 325
9.6 存儲函式及實例 326
9.6.1 存儲函式的基本操作 326
9.6.2 存儲函式的套用 328
9.7 觸發器及實例 331
9.7.1 觸發器的創建和修改 331
9.7.2 觸發器套用舉例 333
9.7.3 觸發器和存儲過程的使用注意事項 337
9.8 事件及實例 338
9.8.1 創建事件 338
9.8.2 修改和刪除事件 340
第10章 MySQL 8用戶與許可權 342
10.1 用戶管理及實例 342
10.1.1 創建、刪除用戶 343
10.1.2 修改用戶名、密碼 344
10.2 許可權控制及實例 345
10.2.1 授予許可權語句 345
10.2.2 許可權轉移和限制 351
10.2.3 許可權撤銷 353
10.2.4 Navicat可視化許可權操作 353
10.3 角色和許可權管理及實例 354
10.3.1 創建角色和分配許可權 355
10.3.2 用戶角色和許可權分配舉例 355
第11章 MySQL 8系統管理 357
11.1 全局鎖、表鎖、行鎖和死鎖 357
11.1.1 全局鎖 357
11.1.2 表鎖 358
11.1.3 行鎖 359
11.1.4 死鎖 363
11.2 資料庫備份與恢復 363
11.2.1 mysqldump備份和恢復 364
11.2.2 使用日誌檔案備份和恢復 366
11.2.3 檔案系統和實時資料庫備份 367
11.3 資源組 368
11.4 表維護 371
11.4.1 索引可壓縮性更新 371
11.4.2 檢查表是否有錯 372
11.4.3 報告表校驗和 372
11.4.4 最佳化表數據存儲 373
11.4.5 修復表和索引 373
11.5 數據字典 373
第12章 MySQL 8數據安全 376
12.1 數據加密、解密及實例 377
12.1.1 對稱密鑰密碼體制 377
12.1.2 表(表空間)加密、解密 378
12.2 數據完整性與數字簽名及實例 381
12.2.1 公鑰密碼體制 381
12.2.2 數據摘要與數字簽名 384
12.3 以加密方式連線MySQL 387
12.3.1 基於SSL的安全連線 387
12.3.2 配置SSL連線 387
12.3.3 查看SSL連線信息 388
第13章 MySQL 8雲資料庫 390
13.1 雲資料庫線上使用及實例 390
13.1.1 購買雲資料庫 390
13.1.2 使用雲資料庫 395
13.2 雲資料庫遠程訪問及實例 400
13.2.1 架設雲伺服器 400
13.2.2 配置外網 405
13.2.3 用Navicat Premium連線 407
13.2.4 將本地數據備份到雲上 408
第14章 MySQL 8數據複製 410
14.1 數據複製概述 410
14.1.1 數據複製及其特點 410
14.1.2 環境準備 411
14.2 一主多從複製及實例 412
14.2.1 一主二從架構的搭建 412
14.2.2 一主二從同步的實現 416
14.3 多主一從複製及實例 417
14.3.1 二主一從的搭建 417
14.3.2 二主一從的實現 419
14.4 跨伺服器視圖及實例 420
第15章 MySQL 8集群:NDB Cluster 424
15.1 集群簡介 424
15.1.1 基本架構 424
15.1.2 基本節點組成 425
15.2 安裝MySQL 8集群版 425
15.3 搭建集群環境及實例 430
15.3.1 管理節點的配置 430
15.3.2 數據及SQL節點 432
15.3.3 節點的啟動 432
15.4 集群功能實現及實例 436
15.4.1 數據創建和同步 437
15.4.2 模擬災難恢復 437
15.4.3 加入單純SQL節點 438
15.5 集群與主從複製比較 439
第16章 MySQL 8 NoSQL 440
16.1 MySQL 8 NoSQL的配置 440
16.2 MySQL Shell 8 441
16.2.1 準備 441
16.2.2 命令簡介 441
16.3 MySQL 8 NoSQL及實例 442
16.3.1 NoSQL資料庫和表創建 442
16.3.2 NoSQL表數據操作 444
16.3.3 NoSQL表索引和查詢 446
第17章 MySQL 8資料庫綜合1
作者簡介
鄭阿奇教授,任教於南京師範大學計算機科學與技術學院,主編多本計算機專業教材,多次獲選為國家規劃教材,兩次獲江蘇省優秀教學成果二等獎、江蘇省暢銷圖書編輯二等獎、全國高校出版社優秀暢銷書二等獎、兩次獲南京師範大學優秀教學成果一等獎、南京師範大學精品教材一等獎。