目錄
第一篇關繫數據庫設計
第1章數據庫設計概述2
1.1數據庫概述2
1.1.1關繫數據庫管理繫統2
1.1.2關繫數據庫3
1.1.3結構化查詢語言SQL4
1.2數據庫設計的相關知識5
1.2.1商業知識和溝通技能5
1.2.2數據庫設計輔助工具6
1.2.3“選課繫統”概述7
1.2.4定義問題域8
1.2.5編碼規範8
1.3E-R圖9
1.3.1實體和屬性10
1.3.2關繫10
1.3.3E-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.1MySQL概述30
2.1.1MySQL的特點30
2.1.2MySQL服務的安裝32
2.1.3MySQL服務的配置35
2.1.4啟動與停止MySQL服務40
2.1.5MySQL配置文件41
2.1.6MySQL客戶機42
2.1.7連接MySQL服務器43
2.2字符集以及字符序設置45
2.2.1字符集及字符序概念45
2.2.2MySQL字符集與字符序45
2.2.3MySQL字符集的轉換過程47
2.2.4MySQL字符集的設置48
2.2.5SQL腳本文件49
2.3MySQL數據庫管理50
2.3.1創建數據庫50
2.3.2查看數據庫51
2.3.3顯示數據庫結構52
2.3.4選擇當前操作的數據庫52
2.3.5刪除數據庫52
2.4MySQL表管理53
2.4.1MyISAM和InnoDB存儲引擎53
2.4.2設置默認的存儲引擎54
2.4.3創建數據庫表54
2.4.4顯示表結構55
2.4.5表記錄的管理56
2.4.6InnoDB表空間59
2.4.7刪除表61
2.5繫統變量61
2.5.1全局繫統變量與會話繫統變量61
2.5.2查看繫統變量的值62
2.5.3設置繫統變量的值64
2.6MySQL數據庫備份和恢復65
習題67
第3章MySQL表結構的管理68
3.1MySQL數據類型68
3.1.1MySQL整數類型68
3.1.2MySQL小數類型69
3.1.3MySQL字符串類型70
3.1.4MySQL日期類型71
3.1.5MySQL復合類型73
3.1.6MySQL二進制類型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.4MySQL特殊字符序列106
習題108
第5章表記錄的檢索109
5.1select語句概述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.2is NULL運算符117
5.2.3select語句與字符集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.1group by子句與聚合函數125
5.5.2group by子句與having子句126
5.5.3group by子句與group_concat()函數127
5.5.4group 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.4MySQL全文檢索的注意事項146
5.10.5InnoDB表的全文檢索146
習題147
第三篇MySQL編程
第6章MySQL編程基礎150
6.1MySQL編程基礎知識150
6.1.1常量150
6.1.2用戶自定義變量152
6.1.3運算符與表達式157
6.1.4begin-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.7local與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.2MySQL鎖機制的基礎知識248
9.2.3MyISAM表的表級鎖250
9.2.4InnoDB表的行級鎖253
9.2.5“選課繫統”中的行級鎖255
9.2.6InnoDB表的意向鎖257
9.2.7InnoDB行級鎖與索引之間的關繫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.1PHP預備知識276
10.1.1為何選用B/S結構以及PHP腳本語言276
10.1.2PHP腳本語言概述277
10.1.3PHP腳本程序的工作流程278
10.1.4Web服務器的部署280
10.1.5注意事項282
10.2軟件開發生命周期SDLC283
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