MySQL 8開發及實例(含開發實例視頻分析)
內容描述
本書共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數據庫綜合實例】―網上商城數據庫對象設計及測試 447
17.1 MySQL 8服務器和網上商城數據庫 447
17.2 表結構設計及其分析 448
17.3 視圖設計及其用途 455
17.4 觸發器設計及其功能 456
17.5 存儲過程和自定義函數:功能和事務 458
17.5.1 創建存儲過程和自定義函數 458
17.5.2 查看和修改存儲過程和自定義函數 464
17.6 事件設計及其功能 464
17.7 角色和用戶權限設計 466
17.8 數據庫各對象及其關聯配合測試 468
17.8.1 網上商城數據庫備份 468
17.8.2 商品分類表:插入記錄和用戶權限測試 469
17.8.3 商家表:插入記錄與默認值測試 471
17.8.4 商品表:增改刪記錄、外鍵完整性和存儲過程 472
17.8.5 商品圖片表:圖片列記錄導入導出測試 478
17.8.6 用戶表:各種數據類型和函數合法性記錄操作測試 480
17.8.7 購物車錶:存儲過程記錄操作和視圖查詢 483
17.8.8 訂單表:記錄操作、存儲過程和触發器聯動處理 484
17.8.9 商品表商品狀態修改和視圖查詢測試 489
17.8.10 銷售表和銷售詳情表:事件操作 490
17.9 順水快遞服務器和數據庫:服務器實例 492
第18章 【PHP/MySQL 8開發實例】―網上商城商家管理系統 493
18.1 PHP開發環境搭建 493
18.1.1 安裝Apache服務器 493
18.1.2 安裝PHP 8 498
18.1.3 安裝Eclipse 501
18.1.4 數據準備 505
18.2 PHP開發入門 505
18.2.1 項目的創建和運行 505
18.2.2 PHP連接MySQL 507
18.2.3 一個簡單的PHP查詢程序 509
18.3 商家管理系統開發 513
18.3.1 功能需求 513
18.3.2 前端程序設計 513
18.3.3 後端業務功能開發 522
18.3.4 其他功能開發 526
18.4 商家管理系統部署運行 531
第19章 【Spring Boot+MyBatis/MySQL 8開發實例】―網上商城商品管理系統 532
第1部分 Thymeleaf/Spring Boot簡易開發 532
19.1 系統架構及開發環境 532
19.1.1 系統架構 532
19.1.2 開發環境安裝及配置 533
19.1.3 數據準備 539
19.2 開發過程 540
第2部分 Vue/ElementUI+Spring Boot前後端分離開發 549
19.3 系統架構及開發工具 549
19.3.1 系統架構 549
19.3.2 添加安裝開發工具 550
19.4 前端開發 552
19.5 前後端分離的JavaEE項目 573
19.5.1 前端修改 573
19.5.2 後端開發 576
19.5.3 前後端聯調 580
19.6 給JavaEE項目添加業務功能 582
19.6.1 從數據庫載入商品分類 582
19.6.2 增加新商品 586
19.6.3 商品圖片的存儲和顯示 590
19.7 其他功能 594
19.7.1 打印 594
19.7.2 導出Excel 595
19.7.3 圖形分析 597
19.8 項目部署運行 599
第20章 【Android Studio/MySQL 8開發實例】―網上商城用戶購物APP 604
20.1 系統原理及開發工具 604
20.1.1 基本原理 604
20.1.2 開發工具安裝 605
20.1.3 數據準備 612
20.2 需求及實現思路 614
20.2.1 需求描述 614
20.2.2 實現思路 617
20.3 基本開發過程 619
20.3.1 創建Android工程 619
20.3.2 APP模擬與真機運行 620
20.3.3 開發底部標籤欄 624
20.3.4 開發列表視圖 630
20.3.5 開發Web端Servlet 644
20.3.6 運行前配置 653
20.3.7 數據庫操作 655
20.4 主頁豐富開發 655
20.4.1 主頁界面設計 655
20.4.2 商品廣告欄 656
20.4.3 類別頻道欄 660
20.4.4 搜索登錄欄 663
20.4.5 主頁功能集成 667
20.5 購物車頁功能開發 672
20.5.1 購物車頁界面設計 672
20.5.2 開發列表視圖 672
20.5.3 選中購買 673
20.5.4 移出購物車 674
20.5.5 調整購買數量 675
20.5.6 購物車頁功能集成 679
20.5.7 數據庫操作 682
20.6 物流狀態頁功能開發 683
20.6.1 物流狀態頁界面設計 683
20.6.2 開發列表視圖(物流狀態) 683
20.6.3 開發列表視圖(歷史清單) 684
20.6.4 退貨 685
20.6.5 評價 686
20.6.6 物流狀態頁功能集成 688
20.6.7 數據庫操作 692
20.7 註冊登錄頁功能開發 693
20.7.1 註冊登錄頁界面設計 693
20.7.2 註冊登錄頁功能實現 693
第21章 【WebService/MySQL 8多平台開發實例】―網上商城快遞信息傳遞 700
21.1 系統環境搭建 701
21.1.1 安裝VS2019 701
21.1.2 配置IIS服務器 706
21.1.3 配置MySQL多實例 709
21.1.4 數據準備 712
21.1.5 安裝客戶端開發環境 715
21.2 開發WebService 715
21.2.1 創建WebService項目 715
21.2.2 添加MySQL驅動 718
21.2.3 編寫WebService方法 718
21.2.4 特殊類型數據獲取 722
21.2.5 發布和測試 723
21.3 Android訪問WebService 726
21.3.1 界面設計 727
21.3.2 加載ksoap2庫 727
21.3.3 編寫Android程序 729
21.3.4 運行前配置 731
21.4 JavaEE(Spring Boot)訪問WebService 732
21.4.1 創建Spring Boot項目 733
21.4.2 用Axis2生成WebService客戶端 734
21.4.3 將Axis2整合進Spring Boot 735
21.4.4 頁面設計 737
21.4.5 後台開發 738
21.5 PHP訪問WebService 740
21.5.1 創建PHP項目 740
21.5.2 打開SOAP功能 742
21.5.3 頁面設計 742
21.5.4 後台開發 743
第22章 【C#+WebService/MySQL 8開發實例】―快遞管理 745
22.1 系統架構和環境 745
22.1.1 系統架構 745
22.1.2 運行環境 745
22.1.3 數據準備 746
22.2 設計客戶端 747
22.2.1 創建Windows窗體應用項目 748
22.2.2 界面設計 750
22.2.3 VS項目連接MySQL 751
22.2.4 C#程序開發 753
22.3 顯示二維碼 759
22.3.1 安裝及引入ZXing庫 760
22.3.2 功能實現 761
22.4 查詢包裹 761
22.4.1 功能實現 761
22.4.2 運行效果 764
22.5 更新物流 764
22.5.1 開發WebService方法 765
22.5.2 客戶端引用WebService 767
22.5.3 客戶端開發 768
22.5.4 運行演示 769
22.6 打印 769
第23章 【Qt 6+Python/MySQL 8開發實例】―網上商城商品銷售數據分析 771
23.1 開發環境準備 772
23.1.1 安裝Qt 772
23.1.2 安裝Python 776
23.1.3 安裝擴展庫 781
23.1.4 數據準備 783
23.2 開發過程 784
23.2.1 用Qt設計界面 784
23.2.2 UI文件轉為Py 789
23.2.3 Python程序框架 790
23.2.4 功能實現 791
附錄A 網上商城數據庫 795
作者介紹
鄭阿奇教授,任教於南京師範大學計算機科學與技術學院,主編多本計算機專業教材,多次獲選為國家規劃教材,兩次獲江蘇省優秀教學成果二等獎、江蘇省暢銷圖書編輯二等獎、全國高校出版社優秀暢銷書二等獎、兩次獲南京師範大學優秀教學成果一等獎、南京師範大學精品教材一等獎。