本書以當前流行的MySQL 5.7作為平臺,內(nèi)容分為MySQL基礎(chǔ)、習題、實驗、數(shù)據(jù)庫綜合實訓、數(shù)據(jù)庫應(yīng)用開發(fā)實訓和附錄。本版對MySQL基礎(chǔ)部分進行了系統(tǒng)優(yōu)化,使內(nèi)容更加簡明扼要,對原有實例進行了修改,從而為實驗數(shù)據(jù)庫與教程的一體化創(chuàng)造了條件。全書MySQL命令分層縮進,基礎(chǔ)部分數(shù)據(jù)庫表列名采用漢字,綜合實訓數(shù)據(jù)庫表列名則采用英文字符,數(shù)據(jù)庫及其對象、函數(shù)名等采用小寫字母,系統(tǒng)關(guān)鍵字采用大寫字母,語句格式清晰易懂,運行結(jié)果直觀。數(shù)據(jù)庫綜合實訓通過一個規(guī)模不大的數(shù)據(jù)庫綜合實例,將數(shù)據(jù)庫主要對象及其相互配合包含其中,同時又為后面的數(shù)據(jù)庫應(yīng)用開發(fā)實訓進行了精心的數(shù)據(jù)準備。實驗部分數(shù)據(jù)庫與基礎(chǔ)部分的是一樣的,這樣實驗更加方便,供讀者自己思考和練習的內(nèi)容也更系統(tǒng)和豐富,同時更有利于讀者理解基礎(chǔ)部分所學知識。習題部分進一步系統(tǒng)化,豐富了題型和內(nèi)容。數(shù)據(jù)庫應(yīng)用開發(fā)實訓介紹目前流行的PHP、Spring Boot、Python、Android Studio、Qt、C#和Visual C++等平臺操作MySQL數(shù)據(jù)庫的實例。每一個實訓既可獨立構(gòu)成一個小的應(yīng)用系統(tǒng),包含操作數(shù)據(jù)庫的基本方法,同時又可把幾個實訓合為一個綜合大系統(tǒng)。本書融基礎(chǔ)和應(yīng)用于一體,系統(tǒng)性、應(yīng)用性均比較完善。由于本書的內(nèi)容體系具有自己的特色,并且從方便教和學兩個角度組織內(nèi)容、調(diào)試實例和安排先后順序,所以用本書教和學均比較方便,讀者可根據(jù)自己的實際需要比較和選擇本書各部分內(nèi)容。本書免費提供配套的教學視頻(建議在Wi-Fi環(huán)境下掃碼觀看)、教學課件和習題參考答案。免費提供7個實訓平臺上可運行的源程序文件。同時免費提供實訓網(wǎng)絡(luò)文檔和配套的源程序文件,需要的讀者請到華信教育資源網(wǎng)(www.hxedu.com.cn)免費下載。本書可作為大學本科、高職高專院校有關(guān)課程教材,也可供廣大數(shù)據(jù)庫應(yīng)用開發(fā)人員使用或參考。
鄭阿奇,副教授,曾任教于南京師范大學。先后主編出版計算機教材和圖書超過100本,受到市場廣泛好評。出版的教材曾獲得高等教育國家“十一五”規(guī)劃教材、高等職業(yè)教育“十二五”國家規(guī)劃教材、高等職業(yè)教育“十三五”國家規(guī)劃教材、江蘇省高等職業(yè)教育“十四五”規(guī)劃教材、江蘇省教學成果二等獎、高等職業(yè)教育優(yōu)秀教材一等獎等榮譽。
第一部分 MySQL基礎(chǔ)
第1章 數(shù)據(jù)庫基礎(chǔ) 1
1.1 數(shù)據(jù)庫基本概念 1
1.1.1 數(shù)據(jù)庫及其系統(tǒng) 1
1.1.2 數(shù)據(jù)模型 2
1.1.3 關(guān)系數(shù)據(jù)庫 3
1.2 數(shù)據(jù)庫設(shè)計 4
1.2.1 概念模型 4
1.2.2 邏輯模型 5
1.2.3 物理模型 6
1.3 MySQL的安裝、配置和運行 6
1.3.1 MySQL的安裝和配置 7
1.3.2 MySQL數(shù)據(jù)庫試運行 7
1.4 常用MySQL界面工具 9
1.4.1 界面工具簡介 9
1.4.2 圖形化界面工具 10
第2章 數(shù)據(jù)類型 13
2.1 數(shù)值型 13
2.1.1 整數(shù)類型 13
2.1.2 實數(shù)類型 13
2.1.3 位類型 14
2.2 字符串型和二進制串型 14
2.2.1 字符串型 14
2.2.2 二進制串型 17
2.3 日期時間型 18
2.4 枚舉型、集合型、鍵值型和空間型 19
2.4.1 枚舉型和集合型 19
2.4.2 鍵值(JSON)型 21
2.4.3 空間型 21
第3章 數(shù)據(jù)庫和表 23
3.1 數(shù)據(jù)庫 23
3.1.1 創(chuàng)建數(shù)據(jù)庫 23
3.1.2 修改數(shù)據(jù)庫 24
3.1.3 刪除數(shù)據(jù)庫 24
3.1.4 打開和關(guān)閉數(shù)據(jù)庫 25
3.2 表 25
3.2.1 創(chuàng)建表 25
3.2.2 修改表 28
3.2.3 表的刪除和更名 30
3.3 表記錄的操作 31
3.3.1 插入記錄 31
3.3.2 修改記錄 33
3.3.3 刪除記錄 34
3.4 表操作綜合應(yīng)用 35
3.4.1 準備系統(tǒng)查詢需要的表 35
3.4.2 非基本數(shù)據(jù)類型表的操作 36
3.5 表選項 38
3.5.1 存儲引擎 38
3.5.2 表空間 42
3.5.3 表記錄分區(qū) 45
3.5.4 表記錄行格式 52
第4章 查詢和視圖 53
4.1 關(guān)系運算基礎(chǔ) 53
4.1.1 選擇(Selection)運算 54
4.1.2 投影(Projection)運算 54
4.1.3 連接(Join)運算 55
4.2 數(shù)據(jù)庫表查詢 56
4.2.1 選擇輸出項 56
4.2.2 限制輸出行 60
4.2.3 指定查詢數(shù)據(jù)源 61
4.2.4 查詢條件 64
4.2.5 查詢分組 72
4.2.6 分組后過濾 73
4.2.7 輸出排序 74
4.2.8 聯(lián)合查詢 76
4.2.9 輸出到變量或文件 76
4.2.10 非基本數(shù)據(jù)類型查詢 77
4.2.11 分區(qū)查詢 80
4.3 視圖 82
4.3.1 創(chuàng)建視圖 82
4.3.2 查詢視圖 83
4.3.3 更新視圖 83
4.3.4 刪除視圖 85
第5章 索引與數(shù)據(jù)完整性 86
5.1 索引 86
5.1.1 索引的分類 86
5.1.2 創(chuàng)建和刪除索引 87
5.1.3 分析和使用索引 89
5.1.4 評估查詢 91
5.2 數(shù)據(jù)完整性 92
5.2.1 實體完整性約束 92
5.2.2 參照完整性約束 93
5.2.3 域完整性約束 94
第6章 SQL擴展語言和系統(tǒng)函數(shù) 97
6.1 SQL簡介 97
6.2 常量和變量 97
6.2.1 常量 97
6.2.2 變量 100
6.3 運算符與表達式 102
6.3.1 算術(shù)運算符 102
6.3.2 比較運算符 103
6.3.3 邏輯運算符 105
6.3.4 位運算符 106
6.3.5 運算符優(yōu)先級 107
6.3.6 表達式 107
6.4 系統(tǒng)內(nèi)置函數(shù) 108
6.4.1 數(shù)學函數(shù) 108
6.4.2 聚合函數(shù) 111
6.4.3 字符串函數(shù) 111
6.4.4 日期時間函數(shù) 114
6.4.5 加密函數(shù) 116
6.4.6 控制流函數(shù) 117
6.4.7 格式化函數(shù) 118
6.4.8 類型轉(zhuǎn)換函數(shù) 119
6.4.9 系統(tǒng)信息函數(shù) 119
第7章 過程式數(shù)據(jù)庫對象 122
7.1 存儲過程 122
7.1.1 存儲過程簡介 122
7.1.2 存儲過程體 124
7.1.3 錯誤自動處理 129
7.2 存儲函數(shù) 131
7.3 游標 132
7.4 觸發(fā)器 134
7.5 事件 137
7.5.1 創(chuàng)建事件 137
7.5.2 修改和刪除事件 140
第8章 數(shù)據(jù)庫備份與恢復(fù) 141
8.1 SQL語句導(dǎo)出或?qū)霐?shù)據(jù) 141
8.1.1 表記錄導(dǎo)出 141
8.1.2 導(dǎo)入文本數(shù)據(jù) 142
8.2 數(shù)據(jù)庫備份與恢復(fù) 143
8.2.1 Windows命令行窗口備份和
恢復(fù) 143
8.2.2 使用日志文件備份和恢復(fù) 145
8.3 直接復(fù)制文件 146
第9章 用戶管理和權(quán)限控制 147
9.1 用戶管理 147
9.1.1 添加、刪除用戶 147
9.1.2 修改用戶名、密碼 148
9.2 權(quán)限控制 148
9.2.1 授予權(quán)限 148
9.2.2 權(quán)限轉(zhuǎn)移和限制 152
9.2.3 權(quán)限回收 152
第10章 事務(wù)管理和多用戶操作 154
10.1 事務(wù) 154
10.1.1 事務(wù)的概念 154
10.1.2 ACID屬性 154
10.1.3 事務(wù)處理 155
10.1.4 事務(wù)應(yīng)用實例 156
10.1.5 事務(wù)隔離級 157
10.2 多用戶 159
10.2.1 鎖定的級別 159
10.2.2 鎖定與解鎖 159
10.2.3 死鎖 164
10.2.4 并發(fā)訪問的問題 164
第二部分 習題
第1章 數(shù)據(jù)庫基礎(chǔ) 165
第2章 數(shù)據(jù)類型 166
第3章 數(shù)據(jù)庫和表 167
第4章 查詢和視圖 168
第5章 索引與數(shù)據(jù)完整性 170
第6章 SQL擴展語言和系統(tǒng)函數(shù) 171
第7章 過程式數(shù)據(jù)庫對象 172
第8章 數(shù)據(jù)庫備份與恢復(fù) 174
第9章 用戶管理和權(quán)限控制 174
第10章 事務(wù)管理和多用戶操作 175
第三部分 實驗
實驗1 MySQL構(gòu)建 177
實驗1.1 MySQL實例構(gòu)建 177
實驗1.2 MySQL多實例 177
實驗2 數(shù)據(jù)類型 177
實驗2.1 基本數(shù)據(jù)類型 177
實驗2.2 其他數(shù)據(jù)類型 179
實驗3 創(chuàng)建數(shù)據(jù)庫和表 180
實驗3.1 創(chuàng)建數(shù)據(jù)庫 180
實驗3.2 創(chuàng)建和修改表結(jié)構(gòu) 180
實驗3.3 表記錄操作 181
實驗3.4 表記錄分區(qū)查詢 181
實驗3.5 表空間和表分區(qū) 182
實驗4 表記錄查詢和視圖 182
實驗4.1 表記錄查詢 182
實驗4.2 表視圖 182
實驗5 索引和數(shù)據(jù)完整性 182
實驗6 SQL擴展語言和系統(tǒng)函數(shù) 183
實驗7 過程式數(shù)據(jù)庫對象 183
實驗7.1 存儲過程 183
實驗7.2 存儲函數(shù) 184
實驗7.3 游標 184
實驗7.4 觸發(fā)器 184
實驗7.5 事件 184
實驗8 數(shù)據(jù)庫備份與恢復(fù) 184
實驗8.1 SQL語句導(dǎo)出或?qū)霐?shù)據(jù) 184
實驗8.2 數(shù)據(jù)庫備份和恢復(fù) 184
實驗9 用戶管理和權(quán)限控制 185
實驗10 事務(wù)管理和多用戶操作 185
第四部分 數(shù)據(jù)庫綜合實訓
P0.1 創(chuàng)建數(shù)據(jù)庫及其對象 186
P0.1.1 創(chuàng)建數(shù)據(jù)庫 186
P0.1.2 創(chuàng)建表 186
P0.1.3 創(chuàng)建表間記錄完整性 188
P0.1.4 創(chuàng)建觸發(fā)器 188
P0.1.5 創(chuàng)建和執(zhí)行存儲過程 189
P0.2 測試數(shù)據(jù)庫對象關(guān)系的正確性 191
P0.2.1 插入學生表記錄 191
P0.2.2 插入課程表記錄 191
P0.2.3 插入成績表記錄 191
P0.2.4 觸發(fā)器功能測試 192
P0.2.5 表間記錄完整性測試 192
P0.2.6 存儲過程的功能測試 193
P0.3 功能和界面 193
P0.3.1 系統(tǒng)主頁 193
P0.3.2 “學生管理”功能界面 193
P0.3.3 “課程管理”功能界面 194
P0.3.4 “成績管理”功能界面 195
第五部分 數(shù)據(jù)庫應(yīng)用開發(fā)實訓
實訓1 PHP/MySQL學生成績管理系統(tǒng) 196
P1.1 PHP開發(fā)平臺的搭建 196
P1.1.1 創(chuàng)建PHP環(huán)境 196
P1.1.2 Eclipse的安裝與配置 196
P1.2 PHP開發(fā)入門 196
P1.2.1 PHP項目的建立 196
P1.2.2 PHP項目的運行 198
P1.2.3 PHP連接MySQL 199
P1.3 系統(tǒng)主頁設(shè)計 200
P1.3.1 主界面 200
P1.3.2 功能導(dǎo)航 201
P1.4 學生管理 202
P1.4.1 界面設(shè)計 202
P1.4.2 功能實現(xiàn) 205
P1.5 成績管理 207
P1.5.1 界面設(shè)計 207
P1.5.2 功能實現(xiàn) 210
P1.6 課程管理 210
實訓2 Spring Boot/MySQL學生成績管理
系統(tǒng) 213
P2.1 Spring Boot開發(fā)環(huán)境配置 213
P2.1.1 安裝JDK 213
P2.1.2 安裝Maven 213
P2.1.3 安裝IDEA 214
P2.2 系統(tǒng)架構(gòu)及分層設(shè)計 214
P2.2.1 系統(tǒng)架構(gòu) 214
P2.2.2 分層設(shè)計 214
P2.3 Spring Boot程序開發(fā) 215
P2.3.1 開發(fā)前的準備 215
P2.3.2 持久層開發(fā) 218
P2.3.3 業(yè)務(wù)層開發(fā) 221
P2.3.4 表示層開發(fā) 225
P2.3.5 運行測試 233
實訓3 Python/MySQL學生成績管理系統(tǒng) 235
P3.1 Python環(huán)境安裝 235
P3.1.1 安裝Python環(huán)境 235
P3.1.2 安裝MySQL驅(qū)動庫 235
P3.2 Python程序開發(fā) 236
P3.2.1 開發(fā)前的準備工作 236
P3.2.2實現(xiàn)思路 237
P3.2.3 功能代碼 237
P3.2.4 運行效果 241
實訓4 Android Studio/MySQL學生成績
管理系統(tǒng) 242
P4.1 環(huán)境搭建 242
P4.1.1 基本原理 242
P4.1.2 安裝開發(fā)工具 243
P4.1.3 準備MySQL數(shù)據(jù)庫 243
P4.2 服務(wù)器端Servlet程序開發(fā) 243
P4.2.1 創(chuàng)建動態(tài)Web項目 243
P4.2.2 編寫Servlet程序 245
P4.2.3 打包部署 250
P4.3 移動端Android程序開發(fā) 251
P4.3.1 創(chuàng)建Android工程 251
P4.3.2 設(shè)計界面 253
P4.3.3 編寫移動端代碼 253
P4.3.4 運行測試 258
實訓5 Qt/MySQL學生成績管理系統(tǒng) 262
P5.1 Qt的安裝 262
P5.2 編譯MySQL驅(qū)動 262
P5.3 Qt程序開發(fā) 265
P5.3.1 開發(fā)前的準備 265
P5.3.2 界面設(shè)計 269
P5.3.3 函數(shù)、槽、變量聲明 271
P5.3.4 功能實現(xiàn) 272
P5.3.5 運行效果 277
實訓6 C#/WebService/MySQL學生成績
管理系統(tǒng) 278
P6.1 C#窗體應(yīng)用程序開發(fā) 278
P6.1.1 創(chuàng)建項目 278
P6.1.2 安裝MySQL的.NET驅(qū)動 278
P6.1.3 準備MySQL數(shù)據(jù)庫 280
P6.1.4 界面設(shè)計 280
P6.1.5 功能實現(xiàn) 282
P6.1.6 運行效果 286
P6.2 C#程序使用WebService 287
P6.2.1 客戶端引用WebService 287
P6.2.2 程序調(diào)用WebService 289
實訓7 Visual C++(VS)/WebService/
MySQL學生成績管理系統(tǒng) 291
P7.1 配置ODBC數(shù)據(jù)源 291
P7.1.1 準備MySQL數(shù)據(jù)庫 291
P7.1.2 創(chuàng)建數(shù)據(jù)源 291
P7.2 MFC程序開發(fā) 293
P7.2.1 創(chuàng)建項目 293
P7.2.2 界面設(shè)計 294
P7.2.3 成績查詢功能(基于ODBC
數(shù)據(jù)源) 297
P7.2.4 錄入、刪除功能(基于MySQL
API) 302
P7.3 Visual C++程序使用WebService 306
P7.3.1 編譯SOAP客戶端 306
P7.3.2 程序調(diào)用WebService 307
第六部分 附錄
附錄A 學生成績數(shù)據(jù)庫(XSCJ)表結(jié)構(gòu)樣
本記錄 309