目 錄
前言
第一篇 數據庫安裝篇
第1章 Oracle 11g數據庫簡介 1
1.1 認識Oracle 11g 1
1.1.1 Oracle的成長歷程 1
1.1.2 了解Oracle 11g 2
1.1.3 Oracle與SQL Server 2
1.2 Oracle的產品版本 3
1.3 Oracle 11g的新特性 4
1.3.1 數據庫管理部分 4
1.3.2 PL/SQL部分 5
1.4 小結 6
1.5 習題 6
第2章 Oracle 11g的安裝與卸載 7
2.1 使用Oracle 11g的基本條件 7
2.1.1 硬件條件 7
2.1.2 軟件條件 7
2.2 在Windows 2003系統(tǒng)中安裝Oracle 11g 8
2.2.1 獲取Oracle 11g的安裝文件 8
2.2.2 安裝Oracle 11g 9
2.2.3 安裝中遇到的問題 17
2.3 移除Oracle 11g 18
2.3.1 停止服務 18
2.3.2 卸載Oracle產品 18
2.3.3 刪除注冊表項 19
2.3.4 刪除環(huán)境變量 20
2.3.5 刪除目錄并重啟計算機 20
2.4 小結 20
2.5 習題 21
第二篇 數據庫基礎篇
第3章 熟悉數據庫 23
3.1 什么是數據庫 23
3.1.1 了解數據管理的歷史 23
3.1.2 數據庫的模型 25
3.1.3 數據庫的三級模式和二級映像 27
3.1.4 數據庫相關術語 28
3.1.5 數據庫設計的完整性 30
3.2 范式——設計關系型數據庫的準則 30
3.2.1 第一范式——關系型數據庫的第一步 30
3.2.2 第二范式——關系型數據庫的第二步 31
3.2.3 第三范式——關系型數據庫設計的第三步 31
3.3 繪制E-R圖設計數據庫 32
3.3.1 繪制E-R圖的基本要素 32
3.3.2 E-R圖繪制實例 33
3.4 小結 34
3.5 習題 35
第4章 SQL基礎 36
4.1 SQL-數據庫溝通的語言標準 36
4.1.1 什么是SQL 36
4.1.2 了解SQL的種類 36
4.2 Oracle 11g中支持的數據類型 37
4.2.1 查看Oracle 11g中的數據類型 37
4.2.2 常用的數據類型 39
4.3 數據庫定義語言(DDL) 40
4.3.1 使用CREATE語句創(chuàng)建表 40
4.3.2 使用ALTER語句修改表 42
4.3.3 使用DROP語句刪除表 43
4.4 約束的使用 43
4.4.1 主鍵約束 43
4.4.2 外鍵約束 44
4.4.3 檢查約束 46
4.4.4 唯一約束 47
4.4.5 非空約束 48
4.5 數據操縱語言(DML)和數據查詢語言(DQL) 49
4.5.1 添加數據(INSERT) 49
4.5.2 修改數據(UPDATE) 51
4.5.3 刪除數據(DELETE) 52
4.5.4 查詢數據(SELECT) 53
4.5.5 其他數據操縱語句 54
4.6 數據控制語言(DCL) 56
4.7 小結 56
4.8 習題 57
第5章 利用SELECT檢索數據 58
5.1 查詢數據必備SELECT 58
5.1.1 SELECT語句概述 58
5.1.2 獲取指定字段的數據 59
5.1.3 獲取所有字段的數據 60
5.1.4 使用別名替代表中的字段名 60
5.1.5 使用表達式操作查詢的字段 61
5.1.6 使用函數操作查詢的字段 62
5.1.7 去除檢索數據中的重復記錄 62
5.2 對檢索出來的數據排序 63
5.2.1 排序的語法 63
5.2.2 使用升序和降序來處理數據 64
5.2.3 排序時對NULL值的處理 65
5.2.4 使用別名作為排序字段 66
5.2.5 使用表達式作為排序字段 66
5.2.6 使用字段的位置作為排序字段 67
5.2.7 使用多個字段排序 67
5.3 WHERE子句 68
5.3.1 查詢中使用單一條件限制 69
5.3.2 查詢中使用多個條件限制 70
5.3.3 模糊查詢數據 71
5.3.4 查詢條件限制在某個列表(list)范圍之內 72
5.3.5 專門針對NULL值的查詢 73
5.4 GROUP BY和HAVING子句 73
5.4.1 GROUP BY子句的使用 73
5.4.2 HAVING子句的使用 75
5.5 子查詢 76
5.5.1 子查詢返回單行數據 76
5.5.2 子查詢返回多行數據 77
5.6 連接查詢 79
5.6.1 最簡單的連接查詢 79
5.6.2 內連接 80
5.6.3 自連接 81
5.6.4 外連接 82
5.7 小結 85
5.8 習題 85
第6章 Oracle內置函數 86
6.1 數值型函數 86
6.1.1 絕對值、取余、判斷數值正負函數 86
6.1.2 三角函數 87
6.1.3 返回以指定數值為準整數的函數 88
6.1.4 指數、對數函數 88
6.1.5 截取函數 89
6.2 字符型函數 90
6.2.1 ASCII碼與字符轉換函數 90
6.2.2 獲取字符串長度的函數(LENGTH函數) 91
6.2.3 字符串截取函數 91
6.2.4 字符串連接函數 92
6.2.5 字符串搜索函數 92
6.2.6 字母大小寫轉換函數 93
6.2.7 帶排序參數的字母大小寫轉換函數 93
6.2.8 為指定參數排序的函數 95
6.2.9 替換字符串函數 95
6.2.10 字符串填充函數 96
6.2.11 刪除字符串首尾指定字符的函數 97
6.2.12 字符集名稱和ID互換的函數 98
6.3 日期型函數 98
6.3.1 系統(tǒng)日期、時間函數 98
6.3.2 得到數據庫時區(qū)的函數 99
6.3.3 為日期加上指定月份的函數 99
6.3.4 返回指定月份最后一天的函數 100
6.3.5 返回指定日期下一周的日期的函數 100
6.3.6 返回會話所在時區(qū)當前日期的函數 101
6.3.7 提取指定日期特定部分的函數 101
6.3.8 得到兩個日期之間的月份數的函數 102
6.3.9 時區(qū)時間轉換函數 102
6.3.10 日期截取函數 103
6.4 轉換函數 103
6.4.1 字符串轉ASCII類型字符串函數 104
6.4.2 二/十進制轉換函數 104
6.4.3 數據類型轉換函數 104
6.4.4 字符串和ROWID相互轉換的函數 105
6.4.5 字符串在字符集間轉換的函數 106
6.4.6 十六進制字符串與RAW類型相互轉換的函數 106
6.4.7 數值轉換成字符型數據的函數 107
6.4.8 字符轉日期型數據的函數 108
6.4.9 字符串轉數字的函數 108
6.4.10 全角轉半角的函數 109
6.5 NULL函數 109
6.5.1 返回表達式為NULL的函數 109
6.5.2 排除指定條件的函數 110
6.5.3 替換NULL值的函數 110
6.6 集合函數 111
6.6.1 平均值函數 111
6.6.2 計數函數 112
6.6.3 最大最小值函數 112
6.6.4 求和函數 113
6.7 其他函數 113
6.7.1 返回登錄名函數 113
6.7.2 返回會話以及上下文信息的函數 114
6.7.3 表達式匹配函數 114
6.8 小結 115
6.9 習題 115
第7章 PL/SQL基礎 116
7.1 什么是PL/SQL 116
7.1.1 認識PL/SQL 116
7.1.2 PL/SQL的優(yōu)勢 117
7.1.3 PL/SQL的結構 118
7.1.4 PL/SQL的基本規(guī)則 120
7.1.5 PL/SQL中的注釋 121
7.2 PL/SQL變量的使用 122
7.2.1 變量、常量的類型及使用語法 123
7.2.2 標量類型的變量 124
7.2.3 復合類型的變量 126
7.3 表達式 133
7.3.1 數值表達式 133
7.3.2 關系表達式和邏輯表達式 134
7.4 PL/SQL結構控制 135
7.4.1 IF條件控制語句 135
7.4.2 CASE條件控制語句 141
7.4.3 LOOP循環(huán)控制語句 144
7.5 PL/SQL中使用DML和DDL語言 149
7.5.1 DML語句的使用 149
7.5.2 DDL語句的使用 151
7.6 PL/SQL中的異常 152
7.6.1 什么是異常 152
7.6.2 處理異常的語法 153
7.6.3 預定義異常 154
7.6.4 非預定義異常 155
7.6.5 自定義異常 156
7.7 PL/SQL函數 158
7.7.1 函數的組成 158
7.7.2 函數的語法 158
7.7.3 查看函數 161
7.7.4 使用PLSQL Developer創(chuàng)建函數 162
7.7.5 函數的修改、刪除 164
7.8 小結 165
7.9 習題 165
第8章 游標——數據的緩存區(qū) 166
8.1 什么是游標 166
8.1.1 游標的概念 166
8.1.2 游標的種類 166
8.2 顯式游標 167
8.2.1 游標語法 167
8.2.2 游標的使用步驟 167
8.2.3 游標中的LOOP語句 170
8.2.4 使用BULK COLLECT和FOR語句的游標 171
8.2.5 使用CURSOR FOR LOOP 172
8.2.6 顯式游標的屬性 172
8.2.7 帶參數的游標 176
8.3 隱式游標 177
8.3.1 隱式游標的特點 177
8.3.2 游標中的異常處理 178
8.3.3 隱式游標的屬性 179
8.4 有關游標的案例 182
8.5 小結 186
8.6 習題 186
第9章 視圖——數據庫中虛擬的表 187
9.1 什么是視圖 187
9.1.1 認識視圖 187
9.1.2 視圖的作用 187
9.1.3 視圖的語法 188
9.2 創(chuàng)建的視圖 188
9.2.1 創(chuàng)建單表視圖 188
9.2.2 創(chuàng)建多表視圖 190
9.2.3 創(chuàng)建視圖的視圖 192
9.2.4 創(chuàng)建沒有源表的視圖 193
9.2.5 使用PL/SQL工具創(chuàng)建視圖 193
9.2.6 創(chuàng)建帶約束的視圖 196
9.2.7 有關視圖的案例 197
9.3 操作視圖數據的限制 199
9.3.1 視圖的READ ONLY屬性設置 199
9.3.2 視圖的CHECK OPTION屬性設置 199
9.3.3 視圖創(chuàng)建語句對視圖操作的影響 201
9.4 視圖的修改 201
9.4.1 視圖結構的修改 201
9.4.2 視圖約束的修改 203
9.5 視圖的刪除 204
9.6 小結 205
9.7 習題 205
第10章 存儲過程——提高程序執(zhí)行的效率 206
10.1 什么是存儲過程 206
10.1.1 認識存儲過程 206
10.1.2 存儲過程的作用 206
10.1.3 存儲過程的語法 207
10.2 在SQL*Plus中創(chuàng)建存儲過程 207
10.2.1 創(chuàng)建第一個存儲過程 208
10.2.2 查看存儲過程 209
10.2.3 顯示存儲過程的錯誤 209
10.2.4 無參存儲過程 210
10.2.5 在存儲過程中使用游標 211
10.2.6 存儲過程中的DDL語句 213
10.2.7 有參存儲過程 217
10.3 使用PL/SQL工具創(chuàng)建存儲過程 224
10.3.1 在PL/SQL Developer中創(chuàng)建存儲過程 224
10.3.2 調試存儲過程 228
10.4 修改、刪除存儲過程 229
10.4.1 修改存儲過程 229
10.4.2 刪除存儲過程 230
10.5 小結 231
10.6 習題 231
第11章 觸發(fā)器——保證數據的正確性 232
11.1 什么是觸發(fā)器 232
11.1.1 認識觸發(fā)器 232
11.1.2 觸發(fā)器的作用 233
11.1.3 觸發(fā)器的類型 233
11.1.4 觸發(fā)器的語法 234
11.2 使用SQL*Plus操作觸發(fā)器 237
11.2.1 利用SQL*Plus創(chuàng)建觸發(fā)器 237
11.2.2 查看觸發(fā)器 238
11.2.3 DML類型觸發(fā)器 238
11.2.4 觸發(fā)器執(zhí)行順序 248
11.2.5 復合型觸發(fā)器 250
11.2.6 INSTEAD OF類型觸發(fā)器 252
11.2.7 DDL類型觸發(fā)器 253
11.2.8 用戶和系統(tǒng)事件觸發(fā)器 255
11.3 使用PL/SQL工具操作觸發(fā)器 256
11.3.1 使用PL/SQL Developer創(chuàng)建觸發(fā)器 256
11.3.2 設置觸發(fā)器是否可用 258
11.4 修改、刪除觸發(fā)器 259
11.4.1 修改觸發(fā)器 259
11.4.2 刪除觸發(fā)器 259
11.5 小結 260
11.6 習題 260
第12章 事務和鎖——確保數據安全 261
12.1 什么是事務 261
12.1.1 認識事務 261
12.1.2 事務的類型 262
12.1.3 事務的保存點 264
12.1.4 事務的ACID特性 265
12.2 鎖 265
12.2.1 認識鎖 266
12.2.2 鎖的分類 266
12.2.3 鎖的類型 266
12.2.4 鎖等待與死鎖 268
12.3 小結 272
12.4 習題 272
第三篇 數據庫管理篇
第13章 使用Oracle 11g Enterprise Manager 273
13.1 Oracle 11g Enterprise Manager 273
13.1.1 Oracle 11g Enterprise Manager概述 273
13.1.2 啟動OEM 274
13.2 使用OEM管理Oracle 275
13.2.1 OEM中的性能菜單 275
13.2.2 OEM中的可用性菜單 275
13.2.3 OEM中的服務器菜單 276
13.2.4 OEM中的方案菜單 286
13.2.5 OEM中的數據移動菜單 295
13.2.6 OEM中的軟件和支持菜單 295
13.3 小結 296
13.4 習題 296
第14章 常用工具介紹 297
14.1 什么是SQL*Plus 297
14.1.1 SQL*Plus簡介 297
14.1.2 啟動SQL*Plus 297
14.2 使用SQL*Plus 298
14.2.1 使用SQL*Plus編輯命令 298
14.2.2 使用SQL*Plus保存命令 302
14.2.3 使用SQL*Plus運行命令 303
14.2.4 使用SQL*Plus格式化查詢結果 304
14.2.5 在SQL*Plus中為語句添加注釋 311
14.3 使用PL/SQL Developer 312
14.3.1 PL/SQL Developer的安裝 312
14.3.2 PL/SQL Developer的布局 313
14.4 小結 314
14.5 習題 314
第15章 控制文件和日志文件 315
15.1 控制文件與日志文件 315
15.1.1 控制文件 315
15.1.2 日志文件 316
15.2 初識控制文件 317
15.2.1 控制文件的內容 317
15.2.2 更新控制文件 318
15.3 控制文件的多路復用 319
15.3.1 使用init.ora多路復用控制文件 319
15.3.2 使用SPFILE多路復用控制文件 319
15.4 創(chuàng)建控制文件 321
15.5 日志文件的管理 323
15.5.1 新建日志文件組 323
15.5.2 添加日志文件到日志文件組 325
15.5.3 刪除日志文件組及日志文件 326
15.5.4 查詢日志文件組和日志文件 327
15.6 小結 328
15.7 習題 328
第16章 表空間的管理 329
16.1 表空間的概述 329
16.1.1 表空間的相關概念 329
16.1.2 默認表空間 329
16.2 表空間的管理 331
16.2.1 創(chuàng)建表空間 331
16.2.2 重命名表空間 333
16.2.3 設置表空間的讀寫狀態(tài) 334
16.2.4 設置表空間的可用狀態(tài) 335
16.2.5 建立大文件表空間 336
16.2.6 刪除表空間 336
16.3 臨時表空間的管理 337
16.3.1 建立臨時表空間 338
16.3.2 查詢臨時表空間 339
16.3.3 創(chuàng)建臨時表空間組 339
16.3.4 查詢臨時表空間組 341
16.3.5 刪除臨時表空間組 342
16.4 數據文件的管理 343
16.4.1 移動數據文件 343
16.4.2 刪除數據文件 343
16.5 小結 345
16.6 習題 345
第17章 與數據庫安全性有關的對象 346
17.1 用戶管理 346
17.1.1 什么是用戶管理 346
17.1.2 創(chuàng)建用戶 346
17.1.3 修改用戶信息 350
17.1.4 刪除用戶 351
17.2 權限管理 351
17.2.1 什么是權限管理 352
17.2.2 授予權限 352
17.2.3 撤銷權限 355
17.2.4 查詢用戶的權限 356
17.3 角色管理 357
17.3.1 什么是角色 357
17.3.2 創(chuàng)建角色 358
17.3.3 設置角色 360
17.3.4 修改角色 360
17.3.5 刪除角色 360
17.3.6 查詢角色 361
17.4 概要文件PROFILE 361
17.4.1 什么是PROFILE 361
17.4.2 創(chuàng)建PROFILE 362
17.4.3 修改PROFILE 363
17.4.4 刪除PROFILE 364
17.4.5 查詢PROFILE 365
17.5 小結 365
17.6 習題 365
第18章 備份與恢復 366
18.1 數據庫的備份與恢復 366
18.1.1 數據庫備份 366
18.1.2 數據庫恢復 366
18.2 物理備份和恢復數據庫 366
18.2.1 對數據庫進行脫機備份 367
18.2.2 對數據庫進行聯機備份 367
18.3 邏輯備份和恢復數據庫 370
18.3.1 邏輯導出數據 370
18.3.2 邏輯導入數據 373
18.4 小結 374
18.5 習題 374
第19章 使用RMAN工具 375
19.1 RMAN的概述 375
19.1.1 RMAN的特點 375
19.1.2 與RMAN有關的概念 375
19.2 使用恢復目錄 376
19.2.1 創(chuàng)建恢復目錄 376
19.2.2 使用RMAN連接 379
19.2.3 在恢復目錄中注冊數據庫 380
19.2.4 使用企業(yè)管理器創(chuàng)建恢復目錄 381
19.3 通道分配 383
19.3.1 什么是通道分配 383
19.3.2 手動通道分配 383
19.3.3 自動通道分配 385
19.4 備份集 386
19.4.1 什么是備份集 387
19.4.2 BACKUP命令的使用 387
19.5 從備份中恢復 388
19.5.1 使用RESTORE命令還原 388
19.5.2 使用RECOVER命令恢復 388
19.6 小結 389
19.7 習題 389
第四篇 數據庫應用篇
第20章 在線考試系統(tǒng)數據庫設計 391
20.1 在線考試系統(tǒng)需求分析 391
20.2 模塊設計 392
20.2.1 模塊分類 392
20.2.2 數據庫總體結構 393
20.2.3 數據庫表結構 394
20.2.4 建表腳本 398
20.3 小結 401
20.4 習題 401
第21章 在.NET中連接Oracle 402
21.1 什么是ADO.NET 402
21.1.1 ADO.NET概述 402
21.1.2 ADO.NET中的對象 402
21.2 使用綁定的方式連接Oracle 403
21.2.1 數據控件概述 403
21.2.2 使用DataGridView控件綁定Oracle數據庫 403
21.3 使用寫代碼的方式連接Oracle 408
21.3.1 使用Command對象操作Oracle數據庫 408
21.3.2 使用DataSet對象存儲查詢結果 410
21.3.3 商品信息存儲實例 411
21.4 小結 415
21.5 習題 415
第22章 在Java中連接Oracle 416
22.1 JDBC與ODBC簡介 416
22.1.1 什么是JDBC 416
22.1.2 什么是ODBC 417
22.2 使用Thin方式連接Oracle 418
22.3 使用JDBC-ODBC橋連接Oracle 426
22.3.1 配置ODBC數據源 426
22.3.2 使用JDBC-ODBC橋連接Oracle 428
22.4 小結 428
22.5 習題 428