Oracle數據庫實用教程(第二版)
-
【作 者】唐遠新 曲衛平 李曉峰 等編著
【I S B N 】978-7-5084-6571-0
【責任編輯】李 炎
【適用讀者群】本科
【出版時間】2010-07-19
【開 本】16開
【裝幀信息】平裝(光膜)
【版 次】第1版第1次印刷
【頁 數】320
【千字數】488
【印 張】20
【定 價】¥32
【叢 書】21世紀高等學校精品規劃教材
【備注信息】
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
本書第一版于2005年出版,第二版根據Oracle數據庫技術的發展,結合作者多年實際工程研發與教學經驗,并考慮到讀者的反饋信息,對各章節內容、結構等進行了修訂、調整、完善和補充。全書共11章,主要內容包括Oracle 10g體系結構、Oracle數據庫常用工具、網絡連接配置與系統安全、Oracle數據庫創建與表空間維護、表、索引與視圖、其他常用方案對象、Oracle支持的SQL、PL/SQL、數據管理、數據庫管理等,并在附錄中給出了Oracle 10g在不同環境下的安裝配置與卸載過程。
本書內容兼顧Windows和Linux平臺,對有差異處分開撰寫。本書帶有大量的例題和習題,通過對例題與習題的剖析能快速提高讀者對Oracle數據庫各項技術的運用能力。
本書可作為高等院校教材,也可供Oracle數據庫管理員、數據庫系統設計和開發人員參考。
1.涵蓋Oracle主要開發技術,知識深度合理,適合作為Oracle數據庫課程教材
2.按照工程項目開發需要的知識順序編排,專注于工程實踐中必須掌握的Oracle技術
3.注重技術應用,例題體系化,深入實用,循序分析,真實項目習題貫穿全書
4.兼顧Windows和Linux平臺,對有差異部分分開撰寫
提供豐富相關資源(電子教案、例題程序完整源代碼等)
本書第一版于2005年出版,第二版根據Oracle數據庫技術的發展,結合作者多年實際工程研發與教學經驗,并考慮到讀者的反饋信息,對各章節內容、結構等進行了修訂、調整、完善和補充。主要修訂思路及內容如下:專注于Oracle數據庫應用技術、強化SQL與PL/SQL開發內容,兼顧Windows與Linux平臺,突出原理指導下的實例分析與應用,按照工程項目開發需要的知識順序編排內容。一句話概括,就是涵蓋主要開發技術,強化技術應用。
本書默認的主機字符串為orcl。安裝Oracle數據庫時,系統默認的數據庫名稱即為orcl,在安裝結束后會在服務器計算機上自動創建一個名為orcl的主機字符串。如果是以客戶端計算機連接到Oracle數據庫,請參照3.1.3節“Oracle Net客戶端配置”在客戶機配置名為orcl的主機字符串。
在Oracle數據庫的學習過程中,要使用到不同賬戶連接數據庫,主要有系統管理員賬戶SYS和SYSTEM,示例數據庫中的人力資源賬戶HR和SCOTT。為便于說明問題,本書將SYS和SYSTEM的口令分別設置為syspwd、systempwd,在SQL*Plus中執行如下命令:
CONN /@orcl AS SYSDBA
ALTER USER SYS IDENTIFIED BY syspwd;
ALTER USER SYSTEM IDENTIFIED BY systempwd;
解鎖賬戶SCOTT和HR,并修改它們的口令分別為tiger和hrpwd,執行如下命令:
ALTER USER SCOTT ACCOUNT UNLOCK;
ALTER USER HR ACCOUNT UNLOCK;
ALTER USER SCOTT IDENTIFIED BY tiger;
ALTER USER HR IDENTIFIED BY hrpwd;
SCOTT賬戶是本書,也是大部分從應用開發角度介紹Oracle數據庫的書籍中采用的示例賬戶,這個用戶下有幾個結構簡單、數據量較少的表,包括雇員、部門、工資等級等。HR賬戶下也有幾個與人力資源相關的表,不過表結構更復雜,關鍵是數據經過了精心設計,數據量更大,在講解SQL高級編程、PL/SQL編程時用得比較多。
因在例子中可能修改表中數據、修改表的結構,甚至將表刪除,應在數據庫安裝完成后建立系統示例方案原始數據的備份,如以下語句所示(SQL>為命令提示符,不要輸入):
SQL> CONN scott/tiger@orcl
SQL> CREATE TABLE emp_bak AS SELECT * FROM emp;
SQL> CREATE TABLE dept_bak AS SELECT * FROM dept;
限于篇幅,不是所有例子都有執行結果的屏幕截圖。本書中大部分例子代碼都以“CONN 用戶名/口令@主機字符串”開始,明確地告訴讀者后面的語句是在哪個用戶賬號下執行的。有經驗的讀者一看表名就知道這條語句該在哪個用戶下執行,但對初學者而言,例子中的SQL語句到底該在哪個用戶下執行有時是件很困惑的事情(關鍵在初學時不熟悉語句中的表屬于哪個用戶方案)。
本書的大部分例子都比較長,需要讀者耐心的讀完。之所以設計了代碼較長的例子,主要的考慮是應該反映主要語法現象和應用注意點,從而接近工程實際應用,給初學者一個可以參考的代碼框架。
在本書中,很多例子在創建數據庫方案對象時,前面都有一條刪除這個對象的DROP語句。這主要是基于兩方面考慮,一是這個對象可能前面創建過,通過新的語法形式創建之前應該先刪除該對象,否則系統會返回一個錯誤(ORA-00955:名稱已由現有對象使用);二是強化一個用法。在實際工程中,除了建立正常的創建方案對象的SQL腳本外,常常還要創建刪除系統中相關方案對象的SQL腳本,比如刪除相關表、刪除視圖、刪除數據的腳本等,這些腳本文件一般在系統重建或初始化時運行以成批地刪除數據或方案對象,為完成重建或初始化的SQL語句能順利執行創造條件。還有,信息系統一般都會有一段試運行,試運行完成后要刪除測試數據(重建表)以正式建立系統,都會經歷先DELETE(DROP)然后INSERT(CREATE)這樣的操作過程。
在每章的最后,都給出了開放式的真實問題,沒有給出具體的求解方法和程序代碼,讀者可以在書中文字描述的基礎上結合一個ERP軟件系統應具備的功能和行為,試著去深入、全面地思考和解決給出的問題。筆者的初衷是通過它提高初學者思考問題、解決問題的實際應用能力。限于篇幅,不可能對問題描述很細,但對于讀者理解該問題已經足夠。對于沒有提到的約束和相關材料,讀者可以自己創設約束條件,只要符合邏輯和接近真實應用即可。
關于SELECT語句,初學者往往覺得有點不得要領,因為子查詢特別是相關子查詢就夠讓初學者頭疼的了,Oracle還針對特定的應用場合和需要設計了分區與子分區查詢、集合運算、內嵌視圖、層次樹型查詢、分步運算與存儲的with子句、數據聚集的ROLLUP與CUBE、閃回數據查詢和閃回版本查詢、記錄加鎖的FOR UPDATE子句等。所謂萬變不離其宗,只要讀者抓住兩點,一是SELECT語句的根本作用是檢索數據,只要在FROM子句中出現的是一個關系(可以是表、視圖或臨時數據集,如內嵌視圖),在語法上和理論上就是正確的,該語句就沒有語法錯誤,可以執行;二是在工程實踐中存在各方面復雜的問題,需要對標準SQL的SELECT語法進行擴展,以解決實際問題。讀者只要注意到這些不同形式的SELECT語句是專門用于解決某個特定問題的,就能撥云見日,理出個頭緒而不會把它們放到一起把自己頭腦搞亂。對于其他SQL語句的復雜多樣的語法形態,也可以這么去認識和理解。從這個角度,讀者也就明白為什么企業級的信息系統建設,大部分都選用Oracle數據庫作為開發和運行的數據平臺。
關于內容取舍,本書將DBA及應用開發人員所需的Oracle SQL、PL/SQL知識做了較全面的介紹,通過大量示例及注釋說明了各知識點的應用,因此本書滿足大部分讀者作為學習Oracle數據庫入門及開發中小規模數據庫應用系統的需要。Oracle公司有系列的產品,可用“博大精深”來形容Oracle在數據庫和ERP領域的技術優勢和產品優勢,它在每個應用需要的方面都有復雜完善的專業產品,每個產品都有值得用大部頭一寫的內容,此時需要讀者去查閱相關文檔做進一步的深入學習。即便如此,本書仍然力求做到給讀者深入學習和應用打下一個堅實的基礎。
本書只涉及Oracle數據庫產品,未對J2EE或.Net架構下的應用開發做任何介紹,在這些方面,有各種專業書籍供讀者選擇。但是本書對初學者感到棘手的在Linux環境下安裝配置Oracle及在該環境下的數據庫創建等相關內容做了說明。一旦將運行環境構建起來,SQL及PL/SQL的開發在Windows和Linux環境下將不再有大的差別。
本教材由哈爾濱理工大學計算機科學與技術學院唐遠新編寫大綱并進行所有章節內容的總篡工作,首都師范大學信息工程學院周麗娟、安徽理工大學計算機科學與工程學院曲衛平、哈爾濱工業大學華德學院李曉峰、哈爾濱理工大學計算機科學與技術學院尹芳和任相花、哈爾濱理工大學軟件學院苗世迪等老師(排名不分先后)參加了各章內容的編撰工作。各章主要執筆編撰分工如下:第1章由唐遠新、苗世迪編寫,第2章由李曉峰、苗世迪編寫,第3章由周麗娟、李曉峰編寫,第4章由任相花編寫,第5章由尹芳編寫,第6章由苗世迪編寫,第7章由周麗娟編寫,第8章由唐遠新、任相花編寫,第9章由曲衛平編寫,第10章由李曉峰編寫,第11章由李曉峰、周麗娟編寫,附錄由唐遠新、尹芳編寫。孫亞靜、程健、姚麗華參加了本書的校稿和部分代碼測試工作。在本書的編寫過程中,得到了中國水利水電出版社北京萬水電子信息有限公司有關領導和編輯的大力支持和幫助,在此表示衷心的感謝!
由于筆者水平有限,再加上Oracle數據庫產品及技術的快速發展,書中難免有不當之處,敬請各位同仁和廣大讀者批評指正,聯系郵箱為oracle_java@sina.com。
編 者
2009年4月
第1章 Oracle 10g體系結構 1
1.1 Oracle 10g體系結構概述 1
1.2 Oracle服務器的內存結構 3
1.2.1 系統全局區 3
1.2.2 程序全局區 4
1.3 Oracle服務器的進程結構 5
1.3.1 服務器端后臺進程 5
1.3.2 服務器進程結構 7
1.4 Oracle數據庫的物理結構 8
1.4.1 數據文件 8
1.4.2 重做日志文件 9
1.4.3 控制文件 9
1.4.4 其他文件 10
1.5 Oracle數據庫的邏輯結構 11
1.5.1 表空間 11
1.5.2 段 14
1.5.3 區間 15
1.5.4 數據塊 15
1.6 Oracle 10g網格基礎架構 15
1.7 數據字典 16
1.7.1 數據字典 16
1.7.2 動態性能監視視圖 16
1.7.3 常用數據字典 17
本章小結 19
綜合應用與習題一 20
第2章 Oracle數據庫常用工具 21
2.1 SQL*Plus 21
2.1.1 SQL*Plus的作用 21
2.1.2 SQL*Plus的啟動和退出 21
2.1.3 SQL*Plus常用命令 22
2.2 iSQL*PLUS 28
2.3 企業管理器 30
2.3.1 企業管理器 30
2.3.2 Oracle企業管理器 32
本章小結 33
綜合應用與習題二 33
第3章 網絡連接配置與系統安全 35
3.1 Oracle Net 35
3.1.1 Oracle Net概述 35
3.1.2 服務器監聽程序配置 36
3.1.3 Oracle Net客戶端配置 37
3.2 系統與對象權限管理 39
3.2.1 數據庫系統特權 40
3.2.2 對象權限 41
3.2.3 數據庫系統特權的授予與回收 42
3.2.4 對象權限的授予與回收 43
3.3 用戶與角色 45
3.3.1 配置身份驗證 45
3.3.2 創建與管理用戶 47
3.3.3 角色管理 49
3.4 概要文件 51
3.4.1 創建概要文件 51
3.4.2 分配概要文件 55
3.5 同義詞 56
3.6 建立安全策略 57
本章小結 58
綜合應用與習題三 58
第4章 Oracle數據庫創建與表空間維護 62
4.1 創建Oracle數據庫 62
4.1.1 創建Oracle數據庫概述 62
4.1.2 OFA與OMF 63
4.1.3 使用數據庫配置助手(DBCA)
創建數據庫 65
4.1.4 手工創建Oracle數據庫 67
4.1.5 數據庫創建失敗后的處理 72
4.2 管理表空間 72
4.2.1 表空間管理概述 72
4.2.2 表空間的創建與刪除 74
4.2.3 表空間維護 76
4.2.4 回退段的創建與刪除 78
本章小結 79
綜合應用與習題四 79
第5章 表 81
5.1 Oracle數據庫方案對象與數據類型 81
5.1.1 Oracle數據庫方案對象 81
5.1.2 Oracle數據類型 82
5.2 創建表的語法 83
5.2.1 基本規則 83
5.2.2 創建表的語法圖 83
5.3 基本關系表 85
5.3.1 最簡單的表創建語法 85
5.3.2 利用查詢創建表 86
5.3.3 存儲參數 87
5.3.4 完整性約束 88
5.4 按索引組織的表 92
5.5 簇表 93
5.5.1 創建簇表 93
5.5.2 創建簇索引 94
5.5.3 刪除簇 94
5.6 分區表 95
5.6.1 范圍分區表 95
5.6.2 散列分區表 97
5.6.3 列表分區表 100
5.6.4 組合分區表 101
5.7 外部表 102
5.8 對象表 105
5.9 嵌套表 107
5.10 管理表 108
5.10.1 存儲參數 109
5.10.2 表結構維護 110
5.10.3 數據完整性約束維護 112
5.10.4 表的刪除與截斷 114
本章小結 114
綜合應用與習題五 115
第6章 索引與視圖 117
6.1 管理索引 117
6.1.1 索引概述 117
6.1.2 創建唯一索引 120
6.1.3 創建位圖索引 120
6.1.4 創建基于函數的索引 121
6.1.5 設置與約束相關的索引 122
6.1.6 創建簇索引 123
6.1.7 對索引創建分區 123
6.1.8 索引的刪除與重建 125
6.1.9 索引的維護 125
6.1.10 索引使用的標識 127
6.2 視圖的創建與使用 127
6.2.1 創建與刪除視圖 127
6.2.2 對視圖執行DML操作的限制 129
6.2.3 內嵌視圖 130
本章小結 131
綜合應用與習題六 131
第7章 其他常用方案對象 132
7.1 序列 132
7.1.1 序列創建與刪除語法 132
7.1.2 序列的使用 133
7.2 數據庫鏈接 135
7.3 實體化視圖日志 136
7.4 實體化視圖 137
本章小結 140
綜合應用與習題七 140
第8章 Oracle支持的SQL 142
8.1 Oracle的數據操縱語言 142
8.1.1 INSERT語句 142
8.1.2 UPDATE語句 144
8.1.3 DELETE語句 146
8.1.4 MERGE語句 147
8.1.5 事務控制命令 148
8.2 Oracle支持的查詢 149
8.2.1 SELECT語句 149
8.2.2 虛表與偽列 152
8.2.3 表的連接 152
8.2.4 子查詢 154
8.2.5 集合運算 158
8.2.6 層次樹型查詢 162
8.2.7 With子句 163
8.3 Oracle支持的SQL函數 164
8.3.1 單行函數 164
8.3.2 分組函數 168
8.3.3 DateTime函數 169
8.3.4 OLAP函數 172
8.4 用于數據分析的SQL 173
8.4.1 多表插入與旋轉插入 173
8.4.2 Top-n查詢 175
8.4.3 ROLLUP與CUBE 176
本章小結 180
綜合應用與習題八 180
第9章 PL/SQL 183
9.1 PL/SQL基礎 183
9.1.1 PL/SQL程序塊的結構 183
9.1.2 PL/SQL基本語法規則 184
9.1.3 復合數據類型 189
9.1.4 PL/SQL程序的用途 193
9.2 PL/SQL中的SELECT語句 193
9.3 流程控制語句 196
9.3.1 分支語句 196
9.3.2 循環控制語句 197
9.3.3 跳轉控制語句 198
9.4 游標 199
9.4.1 游標的概念 199
9.4.2 游標的定義和使用 199
9.4.3 游標的屬性 201
9.4.4 用于游標的FOR循環 202
9.4.5 用于游標的SELECT和
UPDATE語句 202
9.5 例外 203
9.5.1 例外的分類與捕獲 203
9.5.2 Oracle預定義例外 204
9.5.3 處理非預定義例外 206
9.5.4 用戶自定義例外 207
9.5.5 RAISE_APPLICATION_ERROR
過程 208
9.6 存儲過程和函數 209
9.6.1 存儲過程/函數的作用 209
9.6.2 存儲過程 209
9.6.3 函數 211
9.6.4 參數的傳遞形式 213
9.6.5 局部子程序 213
9.6.6 子程序嵌套調用時的例外處理 214
9.6.7 子程序的管理 214
9.7 包 216
9.7.1 包概述 216
9.7.2 包的創建與刪除 217
9.7.3 包內元素的引用 219
9.7.4 無體包 219
9.7.5 重載 220
9.7.6 向前引用聲明 221
9.7.7 一次(One-Time-only)過程 222
9.7.8 常用內置程序包 222
9.8 數據庫觸發器 227
9.8.1 數據庫觸發器概述 227
9.8.2 觸發器設計指南 228
9.8.3 DML觸發器 228
9.8.4 DDL觸發器 232
9.8.5 系統事件觸發器 233
9.8.6 對觸發器主體過程的調用 234
9.8.7 防止從變異(Mutating)的表中
讀取數據 235
9.8.8 觸發器的運用場合 236
9.8.9 管理數據庫觸發器 240
9.9 大對象類型(LOB) 241
9.9.1 大對象類型基礎 241
9.9.2 DBMS_LOB程序包 242
9.9.3 BFILE列的使用 245
9.9.4 從LONG向LOB遷移數據 246
9.9.5 臨時LOB對象 246
9.10 數據對象參照依賴與子程序重新編譯 247
9.11 虛擬專用數據庫 249
9.11.1 虛擬專用數據庫的引入 249
9.11.2 創建應用上下文環境 249
9.11.3 創建安全策略函數 251
9.11.4 應用安全策略 253
9.11.5 安全策略的運行模式與管理 255
本章小結 256
綜合應用與習題九 257
第10章 數據管理 260
10.1 SQL*Loader 260
10.1.1 基本概念 260
10.1.2 SQL*Loader的語法及參數 261
10.1.3 控制文件 263
10.2 傳統數據導入/導出工具 265
10.2.1 EXP 265
10.2.2 IMP 267
10.3 數據泵 269
10.3.1 EXPDP 269
10.3.2 IMPDP 271
10.4 閃回技術 273
本章小結 278
綜合應用與習題十 278
第11章 數據庫管理 279
11.1 初始化參數和系統性能調整 279
11.1.1 初始化參數概述 279
11.1.2 初始化參數文件 280
11.1.3 影響Oracle數據庫系統
性能的參數 282
11.2 啟動與停止數據庫 283
11.2.1 數據庫的啟動過程 283
11.2.2 使用SQL*Plus啟動數據庫 284
11.2.3 關閉Oracle數據庫 284
11.2.4 改變數據庫的可用性 286
11.3 控制文件管理 287
11.3.1 什么是控制文件 287
11.3.2 控制文件的內容 288
11.3.3 在SPFILE中使用多個控制文件 288
11.3.4 在PFILE中使用多個控制文件 288
11.3.5 獲取控制文件的相關信息 288
11.4 重做日志管理 289
11.4.1 數據庫運行模式 289
11.4.2 重做日志的寫入 290
11.4.3 日志歸檔與維護聯機重做日志 291
11.4.4 獲取聯機重做日志的相關信息 293
本章小結 293
綜合應用與習題十一 293
附錄 Oracle 10g的安裝與卸載 295
參考文獻 308
- Oracle 12c從入門到精通(第二版) [閆紅巖 金松河 編著]
- Oracle數據庫應用與開發案例教程 [王紅]
- Oracle11g從入門到精通 [錢慎一 張素智 主編]
- 涂抹Oracle——三思筆記之一步一步學Oracle [李丙洋 著]
- Oracle課程設計案例精編 [趙京 主編]
- Oracle 9i關系數據庫實用教程 [蔡立軍 瞿亮 編著]
- Oracle9i數據庫應用技術 [張浦生 編著]
- Oracle 10g管理及應用 [王路群 主編 謝日昌 副主編]
- Oracle數據庫開發實用教程 [劉竹林 主編]
- Oracle 11g SQL和PL/SQL從入門到精通 [王海鳳 等編著]
- Oracle9i關系數據庫實用教程(第二版) [蔡立軍 等編著]
- 數據庫系統原理與應用--Oracle版 [劉淳 方俊 主編]