目 錄
第一篇 關係數據庫設計
第1章 數據庫設計概述 2
1.1 數據庫概述 2
1.1.1 關係數據庫管理係統 2
1.1.2 關係數據庫 3
1.1.3 結構化查詢語言SQL 4
1.2 數據庫設計的相關知識 5
1.2.1 商業知識和溝通技能 5
1.2.2 數據庫設計輔助工具 6
1.2.3 “選課係統”概述 7
1.2.4 定義問題域 8
1.2.5 編碼規範 8
1.3 E-R圖 9
1.3.1 實體和屬性 10
1.3.2 關係 10
1.3.3 E-R圖的設計原則 12
1.4 關係數據庫設計 15
1.4.1 為每個實體建立一張數據庫錶 15
1.4.2 為每張錶定義一個主鍵 16
1.4.3 增加外鍵錶示一對多關係 17
1.4.4 建立新錶錶示多對多關係 19
1.4.5 為字段選擇閤適的數據類型 20
1.4.6 定義約束(constraint)條件 20
1.4.7 評價數據庫錶設計的質量 22
1.4.8 使用規範化減少數據冗餘 22
1.4.9 避免數據經常發生變化 26
習題 28
第二篇 MySQL基礎
第2章 MySQL基礎知識 30
2.1 MySQL概述 30
2.1.1 MySQL的特點 30
2.1.2 MySQL服務的安裝 32
2.1.3 MySQL服務的配置 35
2.1.4 啓動與停止MySQL服務 40
2.1.5 MySQL配置文件 41
2.1.6 MySQL客戶機 42
2.1.7 連接MySQL服務器 43
2.2 字符集以及字符序設置 45
2.2.1 字符集及字符序概念 45
2.2.2 MySQL字符集與字符序 45
2.2.3 MySQL字符集的轉換過程 47
2.2.4 MySQL字符集的設置 48
2.2.5 SQL腳本文件 49
2.3 MySQL數據庫管理 50
2.3.1 創建數據庫 50
2.3.2 查看數據庫 51
2.3.3 顯示數據庫結構 52
2.3.4 選擇當前操作的數據庫 52
2.3.5 刪除數據庫 52
2.4 MySQL錶管理 53
2.4.1 MyISAM和InnoDB存儲引擎 53
2.4.2 設置默認的存儲引擎 54
2.4.3 創建數據庫錶 54
2.4.4 顯示錶結構 55
2.4.5 錶記錄的管理 56
2.4.6 InnoDB錶空間 59
2.4.7 刪除錶 61
2.5 係統變量 61
2.5.1 全局係統變量與會話係統變量 61
2.5.2 查看係統變量的值 62
2.5.3 設置係統變量的值 64
2.6 MySQL數據庫備份和恢復 65
習題 67
第3章 MySQL錶結構的管理 68
3.1 MySQL數據類型 68
3.1.1 MySQL整數類型 68
3.1.2 MySQL小數類型 69
3.1.3 MySQL字符串類型 70
3.1.4 MySQL日期類型 71
3.1.5 MySQL復閤類型 73
3.1.6 MySQL二進製類型 75
3.1.7 選擇閤適的數據類型 75
3.2 創建錶 76
3.2.1 設置約束 77
3.2.2 設置自增型字段 81
3.2.3 其他選項的設置 81
3.2.4 創建“選課係統”數據庫錶 82
3.2.5 復製一個錶結構 83
3.3 修改錶結構 84
3.3.1 修改字段相關信息 84
3.3.2 修改約束條件 85
3.3.3 修改錶的其他選項 87
3.3.4 修改錶名 87
3.4 刪除錶 87
3.5 索引 88
3.5.1 理解索引 88
3.5.2 索引關鍵字的選取原則 91
3.5.3 索引與約束 92
3.5.4 創建索引 93
3.5.5 刪除索引 94
習題 95
第4章 錶記錄的更新操作 96
4.1 錶記錄的插入 96
4.1.1 使用insert語句插入新記錄 96
4.1.2 更新操作與字符集 99
4.1.3 關於自增型字段 100
4.1.4 批量插入多條記錄 100
4.1.5 使用insert…select插入結果集 101
4.1.6 使用replace插入新記錄 102
4.2 錶記錄的修改 103
4.3 錶記錄的刪除 103
4.3.1 使用delete刪除錶記錄 103
4.3.2 使用truncate清空錶記錄 104
4.4 MySQL特殊字符序列 106
習題 108
第5章 錶記錄的檢索 109
5.1 select語句概述 109
5.1.1 使用select子句指定字段列錶 110
5.1.2 使用謂詞過濾記錄 111
5.1.3 使用from子句指定數據源 112
5.1.4 多錶連接 115
5.2 使用where子句過濾結果集 116
5.2.1 使用單一的條件過濾結果集 116
5.2.2 is NULL運算符 117
5.2.3 select語句與字符集 118
5.2.4 使用邏輯運算符 119
5.2.5 使用like進行模糊查詢 121
5.3 使用order by子句對結果集排序 122
5.4 使用聚閤函數匯總結果集 123
5.5 使用group by子句對記錄分組統計 125
5.5.1 group by子句與聚閤函數 125
5.5.2 group by子句與having子句 126
5.5.3 group by子句與group_concat()函數 127
5.5.4 group by子句與with rollup選項 127
5.6 閤並結果集 128
5.7 子查詢 129
5.7.1 子查詢與比較運算符 129
5.7.2 子查詢與in運算符 131
5.7.3 子查詢與exists邏輯運算符 132
5.7.4 子查詢與any運算符 133
5.7.5 子查詢與all運算符 133
5.8 選課係統綜閤查詢 134
5.9 使用正則錶達式模糊查詢 138
5.10 全文檢索 139
5.10.1 全文檢索的簡單應用 140
5.10.2 全文檢索方式 144
5.10.3 布爾檢索模式的復雜應用 144
5.10.4 MySQL全文檢索的注意事項 146
5.10.5 InnoDB錶的全文檢索 146
習題 147
第三篇 MySQL編程
第6章 MySQL編程基礎 150
6.1 MySQL編程基礎知識 150
6.1.1 常量 150
6.1.2 用戶自定義變量 152
6.1.3 運算符與錶達式 157
6.1.4 begin-end語句塊 159
6.1.5 重置命令結束標記 160
6.2 自定義函數 160
6.2.1 創建自定義函數的語法格式 160
6.2.2 函數的創建與調用 161
6.2.3 函數的維護 163
6.2.4 條件控製語句 165
6.2.5 循環語句 167
6.3 係統函數 171
6.3.1 數學函數 171
6.3.2 字符串函數 173
6.3.3 數據類型轉換函數 180
6.3.4 條件控製函數 180
6.3.5 係統信息函數 182
6.3.6 日期和時間函數 183
6.3.7 其他常用的MySQL函數 189
6.4 中文全文檢索的模擬實現 191
習題 193
第7章 視圖與觸發器 195
7.1 視圖 195
7.1.1 創建視圖 195
7.1.2 查看視圖的定義 196
7.1.3 視圖在“選課係統”中的應用 197
7.1.4 視圖的作用 198
7.1.5 刪除視圖 199
7.1.6 檢查視圖 199
7.1.7 local與cascade檢查視圖 200
7.2 觸發器 201
7.2.1 準備工作 202
7.2.2 使用觸發器實現檢查約束 203
7.2.3 使用觸發器維護冗餘數據 204
7.2.4 使用觸發器模擬外鍵級聯選項 205
7.2.5 查看觸發器的定義 206
7.2.6 刪除觸發器 207
7.2.7 使用觸發器的注意事項 207
7.3 臨時錶 208
7.3.1 臨時錶概述 208
7.3.2 臨時錶的創建、查看與刪除 208
7.3.3 “選課係統”中臨時錶的使用 209
7.3.4 使用臨時錶的注意事項 210
7.4 派生錶(derived table) 211
7.5 子查詢、視圖、臨時錶、派生錶 211
習題 213
第8章 存儲過程與遊標 214
8.1 存儲過程 214
8.1.1 創建存儲過程的語法格式 214
8.1.2 存儲過程的調用 215
8.1.3 “選課係統”的存儲過程 216
8.1.4 查看存儲過程的定義 220
8.1.5 刪除存儲過程 221
8.1.6 存儲過程與函數的比較 222
8.2 錯誤觸發條件和錯誤處理 223
8.2.1 自定義錯誤處理程序 223
8.2.2 自定義錯誤觸發條件 225
8.2.3 自定義錯誤處理程序說明 226
8.3 遊標 226
8.3.1 使用遊標 226
8.3.2 遊標在“選課係統”中的使用 227
8.4 預處理SQL語句 229
8.4.1 預處理SQL語句使用步驟 229
8.4.2 “選課係統”中預處理SQL語句的使用 230
8.4.3 預處理SQL語句的復雜應用 231
8.4.4 靜態SQL語句與預處理SQL語句 233
8.5 存儲程序的說明 234
習題 234
第9章 事務機製與鎖機製 235
9.1 事務機製 235
9.1.1 事務機製的必要性 235
9.1.2 關閉MySQL自動提交 237
9.1.3 迴滾 237
9.1.4 提交 239
9.1.5 事務 240
9.1.6 保存點 241
9.1.7 “選課係統”中的事務 243
9.2 鎖機製 246
9.2.1 鎖機製的必要性 246
9.2.2 MySQL鎖機製的基礎知識 248
9.2.3 MyISAM錶的錶級鎖 250
9.2.4 InnoDB錶的行級鎖 253
9.2.5 “選課係統”中的行級鎖 255
9.2.6 InnoDB錶的意嚮鎖 257
9.2.7 InnoDB行級鎖與索引之間的關係 258
9.2.8 間隙鎖與死鎖 261
9.2.9 死鎖與鎖等待 262
9.3 事務的ACID特性 264
9.3.1 事務的ACID特性 264
9.3.2 事務的隔離級彆與並發問題 265
9.3.3 設置事務的隔離級彆 266
9.3.4 使用間隙鎖避免幻讀現象 271
9.4 事務與鎖機製注意事項 272
習題 273
第四篇 綜閤實訓
第10章 網上選課係統的開發 276
10.1 PHP預備知識 276
10.1.1 為何選用B/S結構以及PHP腳本語言 276
10.1.2 PHP腳本語言概述 277
10.1.3 PHP腳本程序的工作流程 278
10.1.4 Web服務器的部署 280
10.1.5 注意事項 282
10.2 軟件開發生命周期SDLC 283
10.3 網上選課係統的係統規劃 283
10.3.1 網上選課係統的目標 284
10.3.2 網上選課係統的可行性分析 284
10.3.3 網上選課係統的項目進度錶 284
10.3.4 網上選課係統的人員分工 285
10.4 網上選課係統的係統分析 286
10.4.1 網上選課係統的功能需求分析 286
10.4.2 網上選課係統的非功能需求分析 288
10.5 網上選課係統的係統設計 288
10.6 網上選課係統的係統實施 290
10.6.1 準備工作 290
10.6.2 製作PHP連接MySQL服務器函數 291
10.6.3 製作PHP權限係統函數 293
10.6.4 首頁index.php的開發 294
10.6.5 教師注冊模塊的開發 295
10.6.6 登錄模塊的開發 298
10.6.7 注銷模塊的開發 300
10.6.8 添加班級模塊的開發 300
10.6.9 學生注冊模塊的開發 301
10.6.10 密碼重置模塊 303
10.6.11 申報課程模塊 304
10.6.12 課程列錶顯示模塊 305
10.6.13 審核申報課程 307
10.6.14 取消已審核課程 308
10.6.15 瀏覽自己申報的課程 309
10.6.16 刪除課程 310
10.6.17 學生選修或者調換已經審核的課程 310
10.6.18 查看自己選修的課程 311
10.6.19 取消選修課程 312
10.6.20 查看課程的學生信息列錶 313
10.6.21 查看選修人數少於30人的課程信息 314
10.7 界麵設計與MVC模式 315
10.8 網上選課係統的測試 317
習題 318
參考文獻 319
· · · · · · (
收起)