內容簡介
本書以Oracle 11g for Window XP為平台,深入淺出、循序漸進地介紹了Oracle 11g的基本語法和基本操作。全書內容包括Oracle安裝配置、Oracle常用開發工具、SQL*Plus、數據表、視圖、約束、函式與存儲過程、觸發器、序列、索引、用戶與角色、內置函式、控制語句、狼和SQL查詢及更新語句、SQL語句最佳化、資料庫的備份與恢復、數據的傳輸與載入等,最後還介紹了一個綜合案例——ATM取款機系統。
本書可以作為Oracle資料庫基礎入門學習書籍,也可以幫助中級讀者提高使用數據的技能,適合大專院校在校學生、程式開發人員以及編程愛好者學習和參考。
圖書目錄
第1章 Oracle 11g關係資料庫 1
1.1 關係數據模型 1
1.1.1 數據結構 1
1.1.2 關係的完整性約束 3
1.1.3 關係數據模型的特點 4
1.2 關係資料庫的範式理論 5
1.2.1 第一範式 5
1.2.2 第二範式 6
1.2.3 第三範式 6
1.3 實體-關係模頸婆奔型 7
1.3.1 E-R模型的概念 7
1.3.2 E-R圖的繪製 8
1.3.3 將E-R模型轉化為關係
模少喇重型 9
1.4 Oracle 11g的下載和安裝 11
1.4.1 下載和安裝Oracle 11g 11
1.4.2 Oracle服務管理 13
1.5 創建資料庫 14
1.6 Oracle默認用戶 18
1.7 使用OEM 19
1.8 擴展練習 21
第2章 Oracle資料庫的體系結構 22
2.1 物理存儲結構 22
2.1.1 數據檔案 22
2.1.2 控制檔案 24
2.1.3 重做日誌檔案 25
2.1.4 其他檔案 25
2.2 邏輯存儲結構 26
2.2.1 表空間 27
2.2.2 段 27
2.2.3 區 29
2.2.4 塊 29
2.3 Oracle資料庫的實例結構 31
2.3.1 Oracle進程結構 31
2.3.2 Oracle記憶體結構 36
2.4 數據字典 40
2.4.1 Oracle數據字典介紹 40
2.4.2 常用數據字典 41
2.5 擴展練習 44
第3章 使用SQL﹡Plus工具 46
3.1 SQL﹡Plus概述 46
3.1.1 SQL﹡Plus的主要功能 46
3.1.2 SQL﹡Plus連線與斷開
資料庫 47
3.2 使用SQL﹡Plus命令 49
3.2.1 使用DESCRIBE命令查看
表結構 49
3.2.2 執行SQL腳本 50
3.2.3 使用SAVE命令保存緩衝
區內容到文才雄匪件 51
3.2.4 使用GET命令讀取腳本檔案
到緩衝區 52
3.2.5 使用EDIT命令編輯緩衝
區內容或檔案 52
3.2.6 使用SPOOL命令複製輸
出結果到檔案 53
3.3 變數 54
3.3.1 臨時變數 54
3.3.2 定義變數 55
3.4 練習3-1:使用多個變數動態獲取
部門信息 57
3.5 格式化查詢結果 58
3.5.1 格式化列 58
3.5.2 設定每頁顯示的數據行 59
3.5.3 設定每行顯示的字元數 60
3.6 創建簡單報表 61
3.6.1 報表的標題設計 61
3.6.2 統計數據 63
3.7 練習3-2:使用報表統計辯嫌境各部門的
最高工資 64
3.8 擴展練習 65
第檔堡邀剃4章 管理表空間 66
4.1 基本表空間 66
4.1.1 創建Oracle基本表空間 66
4.1.2 使用表空間 69
4.1.3 管理表空間 70
4.2 練習4-1:創建並修改表空間
tablespace 76
4.3 臨時表空間 77
4.3.1 創建臨時表空間 77
4.3.2 修改臨時表空間 78
4.3.3 臨時表空間組 79
4.4 大檔案表空間 81
4.5 非標準數據塊表空間 82
4.6 撤銷表空間 83
4.6.1 管理撤銷表空間的方式 84
4.6.2 創建與管理撤銷表空間 85
4.7 練習4-2:管理撤銷表空間 89
4.8 擴展練習 90
第5章 表 91
5.1 創建表 91
5.1.1 數據類型 91
5.1.2 創建Oracle數據表 93
5.1.3 指定表空間 94
5.1.4 指定存儲參數 95
5.2.1 指定重做日誌 96
5.2 練習5-1:創建圖書信息表 97
5.3 修改數據表 97
5.3.1 增加和刪除列 98
5.3.2 更新列 99
5.3.3 重命名表 100
5.3.4 改變表的存儲表空陵櫃騙牛間和存儲
參數 101
5.3.5 刪除表定義 102
5.4 練習5-2:修改會員信息表 102
5.5 表的完整性約束 103
5.5.1 約束的分類和定義 103
5.5.2 NOT NULL約束 104
5.5.3 PRIMARY KEY約束 106
5.5.4 UNIQUE約束 107
5.5.5 CHECK約束 109
5.5.6 FOREIGN KEY約束 110
5.5.7 DISABLE和ENABLE
約束 113
5.6 練習5-3:創建學生信息表和
班級表 114
5.7 擴展練習 115
第6章 控制檔案與日誌檔案的
管理 116
6.1 管理控制檔案 116
6.1.1 控制檔案概述 116
6.1.2 創建控制檔案 117
6.1.3 備份控制檔案 121
6.1.4 恢復控制檔案 122
6.1.5 控制檔案的移動與刪除 123
6.1.6 查看控制檔案信息 125
6.2 管理重做日誌檔案 126
6.2.1 日誌檔案概述 126
6.2.2 創建日誌檔案組及其成員 127
6.2.3 重新定義日誌檔案成員 129
6.2.4 刪除日誌檔案組及其
成員 131
6.2.5 切換日誌檔案組 132
6.2.6 清空日誌檔案組 132
6.2.7 查看日誌檔案信息 134
6.3 管理歸檔日誌 135
6.3.1 日誌操作模式 135
6.3.2 歸檔日誌概述 136
6.3.3 設定資料庫模式 137
6.3.4 設定歸檔目標 139
6.3.5 歸檔檔案格式 140
6.3.6 設定歸檔進程的跟蹤級別 142
6.3.7 查看歸檔日誌信息 143
6.4 練習6-1:恢復非歸檔模式下的
控制檔案和日誌檔案 145
6.5 練習6-2:恢復單個控制檔案 147
6.6 擴展練習 147
第7章 SQL基礎 149
7.1 基本查詢 149
7.1.1 查詢語句——SELECT 149
7.1.2 指定過濾條件——WHERE
子句 151
7.1.3 獲取唯一記錄——
DISTINCT 154
7.1.4 分組——GROUP BY
子句 154
7.1.5 過濾分組——HAVING
子句 156
7.1.6 排序——ORDER BY
子句 156
7.2 其他DML語句 158
7.2.1 插入數據——INSERT
操作 158
7.2.2 更新數據——UPDATE
操作 160
7.2.3 刪除數據——DELETE
操作 161
7.2.4 合併數據——MERGE
操作 161
7.3 基本函式 163
7.3.1 字元串函式 163
7.3.2 數值函式 167
7.3.3 日期函式 170
7.3.4 聚合函式 172
7.4 數據一致性與事務管理 174
7.4.1 Oracle中的數據一致性與
事務 174
7.4.2 Oracle中的事務處理 174
7.4.3 事務處理原則 176
7.5 練習7-1:學生信息表的合併 178
7.6 練習7-2:統計各個部門最近一個
月的入職人數 179
7.7 練習7-3:列印各個部門的員工
工資詳情 179
7.8 練習7-4:統計各個部門員工的最
高工資 180
7.9 擴展練習 180
第8章 子查詢與高級查詢 182
8.1 子查詢 182
8.1.1 子查詢類型 182
8.1.2 實現單行子查詢 183
8.1.3 實現多列子查詢 185
8.1.4 實現多行子查詢 187
8.1.5 實現關聯子查詢 189
8.1.6 實現嵌套子查詢 191
8.2 連線查詢 192
8.2.1 使用等號(=)實現多個表
的簡單連線查詢 193
8.2.2 使用INNER JOIN實現多
個表的內連線 193
8.2.3 使用OUTER JOIN實現多
個表的外連線 194
8.3 使用集合操作符 196
8.3.1 求並集(記錄唯一)——
UNION運算 197
8.3.2 求並集——UNION ALL
運算 198
8.3.3 求交集——INTERSECT
運算 198
8.3.4 求差集——MINUS
運算 199
8.4 練習8-1:統計工資最高的第6到
第10位之間的員工 199
8.5 練習8-2:統計不同工資範圍內的
員工人數 201
8.6 練習8-3:獲取平均工資最高的
部門信息 201
8.7 練習8-4:獲取部門編號為100的
所有員工信息 202
8.8 擴展練習 202
第9章 PL/SQL基礎 204
9.1 PL/SQL概述 204
9.1.1 PL/SQL語言特點 204
9.1.2 PL/SQL代碼編寫規則 205
9.2 PL/SQL編程結構 206
9.2.1 PL/SQL程式塊的基本
結構 206
9.2.2 PL/SQL數據類型 207
9.2.3 變數和常量 208
9.2.4 複合數據類型 209
9.2.5 運算符與表達式 211
9.2.6 PL/SQL注釋 212
9.3 條件選擇語句 213
9.3.1 IF條件選擇語句 213
9.3.2 CASE表達式 215
9.4 循環語句 219
9.4.1 LOOP循環語句 219
9.4.2 WHILE循環語句 221
9.4.3 FOR循環語句 222
9.5 練習9-1:列印九九乘法口訣表 223
9.6 游標 224
9.6.1 聲明游標 224
9.6.2 打開游標 225
9.6.3 檢索游標 226
9.6.4 關閉游標 226
9.6.5 游標屬性 226
9.6.6 簡單游標循環 228
9.6.7 游標FOR循環 228
9.6.8 使用游標更新或刪除數據 229
9.7 異常 231
9.7.1 異常處理 231
9.7.2 預定義異常 231
9.7.3 非預定義異常 232
9.7.4 自定義異常 234
9.8 練習9-2:更新員工工資 235
9.9 練習9-3:獲取指定部門下的所有
員工信息 236
9.10 擴展練習 237
第10章 PL/SQL高級套用 239
10.1 存儲過程 239
10.1.1 創建與調用存儲過程 239
10.1.2 存儲過程的參數 241
10.1.3 修改與刪除存儲過程 244
10.1.4 查看存儲過程的定義
信息 245
10.2 練習10-1:添加學生 245
10.3 函式 246
10.3.1 函式的基本操作 246
10.3.2 函式的參數 248
10.4 練習10-2:計算指定部門編號的
員工平均工資 250
10.5 觸發器 252
10.5.1 觸發器的類型 252
10.5.2 創建觸發器 252
10.5.3 DML觸發器 253
10.5.4 INSTEAD OF觸發器 257
10.5.5 資料庫事件觸發器 259
10.5.6 DDL觸發器 262
10.5.7 觸發器的基本操作 263
10.6 練習10-3:使用觸發器自動為
主鍵列賦值 264
10.7 程式包 265
10.7.1 程式包的優點 266
10.7.2 程式包的定義 267
10.7.3 調用程式包中的元素 268
10.7.4 刪除程式包 269
10.8 練習10-4:管理員工工資 269
10.9 擴展練習 271
第11章 其他模式對象 272
11.1 索引 272
11.1.1 索引的類型 272
11.1.2 指定索引選項 275
11.1.3 創建B樹索引 276
11.1.4 創建點陣圖索引 277
11.1.5 創建反向鍵索引 278
11.1.6 創建基於函式的索引 278
11.1.7 管理索引 279
11.2 練習11-1:為產品表創建索引並
管理 281
11.3 臨時表 282
11.3.1 臨時表的特點 282
11.3.2 創建與使用臨時表 283
11.4 視圖 285
11.4.1 創建視圖 285
11.4.2 可更新的視圖 286
11.4.3 刪除視圖 287
11.5 練習11-2:為customer表創建
視圖並修改 288
11.6 序列 289
11.6.1 創建序列 289
11.6.2 修改序列 290
11.6.3 刪除序列 291
11.7 練習11-3:為用戶註冊表創建
序列 291
11.8 同義詞 292
11.9 擴展練習 293
第12章 用戶角色、許可權與安全 295
12.1 用戶和模式 295
12.1.1 用戶 295
12.1.2 模式 296
12.2 管理用戶 298
12.2.1 創建用戶 298
12.2.2 修改用戶 300
12.2.3 刪除用戶 301
12.2.4 管理用戶會話 302
12.3 用戶配置檔案 303
12.3.1 創建用戶配置檔案 303
12.3.2 使用配置檔案 305
12.3.3 查看配置檔案信息 306
12.3.4 修改與刪除配置檔案 306
12.4 許可權 307
12.4.1 系統許可權 307
12.4.2 對象許可權 311
12.5 角色 315
12.5.1 角色概述 315
12.5.2 系統預定義角色 316
12.5.3 創建角色 318
12.5.4 為角色授予許可權 319
12.5.5 修改用戶的默認角色 319
12.5.6 管理角色 320
12.5.7 查看角色信息 322
12.6 練習12-1:創建用戶並修改
密碼 324
12.7 練習12-2:為新用戶newuser
創建配置檔案 324
12.8 練習12-3:為新用戶newuser
創建對象許可權 324
12.9 擴展練習 325
第13章 SQL語句最佳化 326
13.1 一般的SQL語句最佳化技巧 326
13.1.1 SELECT語句中避免使
用“*” 326
13.1.2 WHERE條件的合理
使用 327
13.1.3 使用TRUNCATE替代
DELETE 329
13.1.4 在確保完整性的情況下
多用COMMIT語句 330
13.1.5 儘量減少表的查詢次數 330
13.1.6 使用EXISTS替代IN 331
13.1.7 使用EXISTS替代
DISTINCT 332
13.1.8 使用“<=”替代“<” 334
13.1.9 使用完全限定的列引用 334
13.2 合理連線表 335
13.2.1 選擇最有效率的表名順序 336
13.2.2 WHERE子句的條件順序 337
13.3 有效使用索引 338
13.3.1 使用索引來提高效率 338
13.3.2 使用索引的基本原則 339
13.3.3 避免對索引列使用NOT
關鍵字 339
13.3.4 避免對唯一索引列使用IS
NULL或IS NOT NULL 340
13.3.5 選擇複合索引主列 342
13.3.6 監視索引是否被使用 343
13.4 擴展練習 343
第14章 數據載入與傳輸 345
14.1 Data Pump工具 345
14.1.1 Data Pump工具概述 345
14.1.2 與數據泵相關的數據字典
視圖 346
14.1.3 使用Data Pump工具前的
準備 346
14.2 Data Pump Export工具 347
14.2.1 Data Pump Export選項 348
14.2.2 使用Data Pump Export 351
14.3 練習14-1:導出產品價格表 356
14.4 Data Pump Import工具 357
14.4.1 Data Pump Import選項 357
14.4.2 使用Data Pump Import 360
14.5 SQL*Loader 363
14.5.1 SQL*Loader概述 363
14.5.2 數據載入示例 365
14.6 練習14-2:導入用戶信息到user
表中 368
14.7 擴展練習 369
第15章 使用RMAN工具備份與
恢復 370
15.1 RMAN簡介 370
15.1.1 RMAN的特點 370
15.1.2 RMAN組件 371
15.1.3 保存RMAN資料檔案庫 374
15.1.4 配置RMAN 376
15.2 RMAN的基本操作 380
15.2.1 RMAN命令 380
15.2.2 連線到目標資料庫 381
15.2.3 取消註冊資料庫 383
15.3 使用RMAN備份資料庫 384
15.3.1 RMAN備份類型 384
15.3.2 BACKUP命令 387
15.3.3 備份資料庫 388
15.3.4 多重備份 393
15.3.5 鏡像複製 393
15.4 練習15-1:備份整個資料庫 394
15.5 RMAN恢復 395
15.5.1 RMAN恢復機制 395
15.5.2 資料庫非歸檔恢復 397
15.5.3 資料庫歸檔恢復 399
15.5.4 移動數據檔案到新的位置 401
15.6 練習15-2:備份和恢復userinfo
表空間 402
15.7 擴展練習 403
第16章 ATM自動取款機系統資料庫
設計 404
16.1 系統分析 404
16.2 資料庫設計 405
16.3 創建系統數據表 407
16.3.1 創建表空間和用戶 407
16.3.2 創建用戶信息表 408
16.3.3 創建銀行卡信息表 409
16.3.4 創建交易信息表 411
16.4 模擬常規業務操作和創建視圖 412
16.4.1 模擬常規業務操作 412
16.4.2 創建視圖 415
16.5 業務辦理 419
16.5.1 更新賬號 419
16.5.2 實現簡單的交易操作 420
16.5.3 用戶開戶 422
16.5.4 修改密碼 424
16.5.5 賬號掛失 425
16.5.6 辦理存取款業務 426
16.5.7 餘額查詢 428
16.5.8 辦理轉賬業務 429
16.5.9 統計銀行的資金流通余
額和盈利結算 431
16.5.10 撤戶 431
??
??
??
??"
12.8 練習12-3:為新用戶newuser
創建對象許可權 324
12.9 擴展練習 325
第13章 SQL語句最佳化 326
13.1 一般的SQL語句最佳化技巧 326
13.1.1 SELECT語句中避免使
用“*” 326
13.1.2 WHERE條件的合理
使用 327
13.1.3 使用TRUNCATE替代
DELETE 329
13.1.4 在確保完整性的情況下
多用COMMIT語句 330
13.1.5 儘量減少表的查詢次數 330
13.1.6 使用EXISTS替代IN 331
13.1.7 使用EXISTS替代
DISTINCT 332
13.1.8 使用“<=”替代“<” 334
13.1.9 使用完全限定的列引用 334
13.2 合理連線表 335
13.2.1 選擇最有效率的表名順序 336
13.2.2 WHERE子句的條件順序 337
13.3 有效使用索引 338
13.3.1 使用索引來提高效率 338
13.3.2 使用索引的基本原則 339
13.3.3 避免對索引列使用NOT
關鍵字 339
13.3.4 避免對唯一索引列使用IS
NULL或IS NOT NULL 340
13.3.5 選擇複合索引主列 342
13.3.6 監視索引是否被使用 343
13.4 擴展練習 343
第14章 數據載入與傳輸 345
14.1 Data Pump工具 345
14.1.1 Data Pump工具概述 345
14.1.2 與數據泵相關的數據字典
視圖 346
14.1.3 使用Data Pump工具前的
準備 346
14.2 Data Pump Export工具 347
14.2.1 Data Pump Export選項 348
14.2.2 使用Data Pump Export 351
14.3 練習14-1:導出產品價格表 356
14.4 Data Pump Import工具 357
14.4.1 Data Pump Import選項 357
14.4.2 使用Data Pump Import 360
14.5 SQL*Loader 363
14.5.1 SQL*Loader概述 363
14.5.2 數據載入示例 365
14.6 練習14-2:導入用戶信息到user
表中 368
14.7 擴展練習 369
第15章 使用RMAN工具備份與
恢復 370
15.1 RMAN簡介 370
15.1.1 RMAN的特點 370
15.1.2 RMAN組件 371
15.1.3 保存RMAN資料檔案庫 374
15.1.4 配置RMAN 376
15.2 RMAN的基本操作 380
15.2.1 RMAN命令 380
15.2.2 連線到目標資料庫 381
15.2.3 取消註冊資料庫 383
15.3 使用RMAN備份資料庫 384
15.3.1 RMAN備份類型 384
15.3.2 BACKUP命令 387
15.3.3 備份資料庫 388
15.3.4 多重備份 393
15.3.5 鏡像複製 393
15.4 練習15-1:備份整個資料庫 394
15.5 RMAN恢復 395
15.5.1 RMAN恢復機制 395
15.5.2 資料庫非歸檔恢復 397
15.5.3 資料庫歸檔恢復 399
15.5.4 移動數據檔案到新的位置 401
15.6 練習15-2:備份和恢復userinfo
表空間 402
15.7 擴展練習 403
第16章 ATM自動取款機系統資料庫
設計 404
16.1 系統分析 404
16.2 資料庫設計 405
16.3 創建系統數據表 407
16.3.1 創建表空間和用戶 407
16.3.2 創建用戶信息表 408
16.3.3 創建銀行卡信息表 409
16.3.4 創建交易信息表 411
16.4 模擬常規業務操作和創建視圖 412
16.4.1 模擬常規業務操作 412
16.4.2 創建視圖 415
16.5 業務辦理 419
16.5.1 更新賬號 419
16.5.2 實現簡單的交易操作 420
16.5.3 用戶開戶 422
16.5.4 修改密碼 424
16.5.5 賬號掛失 425
16.5.6 辦理存取款業務 426
16.5.7 餘額查詢 428
16.5.8 辦理轉賬業務 429
16.5.9 統計銀行的資金流通余
額和盈利結算 431
16.5.10 撤戶 431
??
??
??
??"