Oracle 11g PL/SQL編程技術(shù)與開發(fā)實(shí)用教程對Oracle軟件的安裝、SQL函數(shù)、PL/SQL程序設(shè)計(jì)以及Oracle數(shù)據(jù)庫的體系結(jié)構(gòu)、服務(wù)器結(jié)構(gòu)、Oracle數(shù)據(jù)庫文件、后臺進(jìn)程進(jìn)行了全面的講解。在隨書附帶的網(wǎng)絡(luò)資源中,提供了本書范例程序的全部源代碼。本書適用于Oracle數(shù)據(jù)庫管理和開發(fā)的初學(xué)者,同時(shí)也適用于有一定基礎(chǔ)的管理和開發(fā)人員使用。凡是想學(xué)習(xí)SQL語句或利用PL/SQL提高Oracle數(shù)據(jù)庫管理和開發(fā)能力的人士,都可以從本書獲得借鑒。
前 言
Oracle公司是世界排名前列的國際大型企業(yè)。Oracle數(shù)據(jù)庫是世界領(lǐng)先、性能優(yōu)異的大型數(shù)據(jù)庫管理系統(tǒng),廣泛地應(yīng)用在金融、通信、航空等領(lǐng)域。當(dāng)前,雖然有多種數(shù)據(jù)庫管理系統(tǒng)可供用戶選擇,但Oracle數(shù)據(jù)庫以其處理的并發(fā)數(shù)據(jù)量極大,極高的可靠性、安全性和可擴(kuò)展性贏得了廣大高端用戶的青睞。早期Oracle數(shù)據(jù)庫主要應(yīng)用于UNIX操作系統(tǒng),影響了它的廣泛應(yīng)用。在Oracle公司提供了基于Windows平臺的版本以后,Oracle數(shù)據(jù)庫在國內(nèi)外占領(lǐng)了更為廣泛的應(yīng)用市場。近些年來,隨著國內(nèi)中小企業(yè)對數(shù)據(jù)庫可靠性、安全性要求的提高,基于Windows平臺的Oracle數(shù)據(jù)庫服務(wù)器獲得了廣泛關(guān)注。隨之而來,對Oracle數(shù)據(jù)庫管理和開發(fā)的人員的數(shù)量需求不斷增加,素質(zhì)要求不斷提高。本書適用于Oracle數(shù)據(jù)庫管理和開發(fā)的初學(xué)者,同時(shí)也適用于有一定基礎(chǔ)的管理和開發(fā)人員使用。凡是想學(xué)習(xí)SQL語句或利用PL/SQL提高Oracle數(shù)據(jù)庫管理和開發(fā)能力的人士,都可以從本書獲得借鑒。
本書共分為12章,各章主要內(nèi)容如下。
第 1 章 Oracle基礎(chǔ)介紹:初步認(rèn)識Oracle,介紹Oracle 11g數(shù)據(jù)庫的安裝、啟動(dòng)、關(guān)閉。
第2章 SQL語言、函數(shù)基本操作:介紹Oracle內(nèi)置的SQL函數(shù)。
第3章 SQL單表查詢:介紹SELECT語句在一個(gè)表中進(jìn)行數(shù)據(jù)檢索的使用方法。
第 4 章 SQL子查詢與集合操作:介紹使用子查詢與集合操作進(jìn)行復(fù)雜數(shù)據(jù)檢索的方法。
第5章 SQL連接查詢:介紹從連接查詢結(jié)果中篩選出其中一部分?jǐn)?shù)據(jù)的方法。
第 6 章 數(shù)據(jù)控制語言(DCL)與數(shù)據(jù)定義語言:介紹數(shù)據(jù)控制語言(DCL-Data Control Language)與數(shù)據(jù)定義語言(DDL-Data Definition
Language)。數(shù)據(jù)控制語言(DCL)完成授予和收回用戶對數(shù)據(jù)庫的使用權(quán)限。數(shù)據(jù)定義語言(DDL)完成建立、修改、刪除表、視圖、索引等功能。
第 7 章 數(shù)據(jù)操縱語言(DML)與事物處理:主要介紹對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的增、刪、改的功能的數(shù)據(jù)操縱(DML)語言。
第8章 SQL*Plus基礎(chǔ)簡介:介紹SQL*Plus系列產(chǎn)品的使用。
第9章 PL/SQL編程基礎(chǔ):介紹PL/SQL程序設(shè)計(jì)。
第10章 PL/SQL記錄集合應(yīng)用:介紹PL/SQL復(fù)合數(shù)據(jù)類型以及使用。
第 11 章 PL/SQL高級應(yīng)用:介紹PL/SQL的應(yīng)用程序結(jié)構(gòu),如子程序(過程和函數(shù))、包、觸發(fā)器等。
第 12 章
人力資源管理系統(tǒng):介紹系統(tǒng)軟件開發(fā)過程、講解設(shè)計(jì)方法,即需求分析、總體設(shè)計(jì)、功能模塊劃分、數(shù)據(jù)庫設(shè)計(jì)以及詳細(xì)設(shè)計(jì)的順序。
總之,本書對Oracle軟件的安裝、SQL函數(shù)、PL/SQL程序設(shè)計(jì)以及Oracle數(shù)據(jù)庫的體系結(jié)構(gòu)、服務(wù)器結(jié)構(gòu)、Oracle數(shù)據(jù)庫文件、后臺進(jìn)程進(jìn)行了全面的講解。在隨書附帶的網(wǎng)絡(luò)資源中,提供了本書范例程序的全部源代碼。
本書由章昊、高晶、楊靜、張玉環(huán)老師編寫,其中章昊編寫第1、3、8、9、10、11、12章,高晶編寫第2、4、5章,楊靜負(fù)責(zé)編寫第6、7章,張玉環(huán)負(fù)責(zé)整體統(tǒng)稿。另外,參與書稿編寫的還有陳穩(wěn)、陳娟濃、李玉光、杜宏巍、黃永生、呂莎莎。
由于編者水平有限,本書難免有不足之處,懇請廣大讀者批評指正!
編 者
第1章 Oracle基礎(chǔ)介紹.... 1
1.1 數(shù)據(jù)庫概述... 2
1.1.1 數(shù)據(jù)庫的組成... 2
1.1.2 數(shù)據(jù)庫實(shí)施... 3
1.2 Oracle 11g基本簡介... 3
1.2.1 Oracle版本號的含義... 4
1.2.2 Oracle 11g的新特性... 4
1.2.3 在Windows下安裝
Oracle 11g的配置要求... 5
上機(jī)實(shí)訓(xùn):在Windows環(huán)境下安裝
Oracle 11g. 5
本章小結(jié)... 8
習(xí)題... 9
第2章 SQL語言、函數(shù)基本操作.... 11
2.1 SQL簡介與Oracle 11g基本
數(shù)據(jù)類型... 12
2.1.1 SQL語言的編寫規(guī)則... 12
2.1.2 Oracle 11g基本數(shù)據(jù)類型... 13
2.2 數(shù)字函數(shù)... 15
2.2.1 數(shù)字函數(shù)概述... 15
2.2.2 數(shù)字函數(shù)示例... 16
2.3 字符函數(shù)... 22
2.3.1 字符函數(shù)概述... 22
2.3.2 字符函數(shù)示例... 23
2.4 日期時(shí)間函數(shù)... 27
2.4.1 日期時(shí)間函數(shù)概述... 27
2.4.2 日期時(shí)間函數(shù)示例... 27
2.5 轉(zhuǎn)換函數(shù)... 32
2.5.1 轉(zhuǎn)換函數(shù)概述... 32
2.5.2 轉(zhuǎn)換函數(shù)示例... 33
上機(jī)實(shí)訓(xùn):輸出字符串ASCII值和
字符... 36
本章小結(jié)... 37
習(xí)題... 37
第3章 SQL單表查詢.... 39
3.1 條件查詢... 40
3.1.1 單一條件查詢... 41
3.1.2 復(fù)合條件查詢... 45
3.2 記錄排序... 49
3.2.1 按單一列排序... 50
3.2.2 按多列排序... 52
3.3 分組查詢... 54
3.3.1 列函數(shù)及其應(yīng)用... 54
3.3.2 GROUP BY子句... 56
3.3.3 HAVING子句... 58
上機(jī)實(shí)訓(xùn):對PAY_TABLE表進(jìn)行
編輯操作... 58
本章小結(jié)... 60
習(xí)題... 60
第4章 SQL子查詢與集合操作.... 63
4.1 子查詢... 64
4.1.1 單行子查詢... 65
4.1.2 多行子查詢... 67
4.1.3 多列子查詢... 69
4.1.4 相關(guān)子查詢... 70
4.1.5 嵌套子查詢... 72
4.2 集合操作... 72
4.2.1 使用集合操作符... 73
4.2.2 復(fù)雜集合操作... 78
上機(jī)實(shí)訓(xùn):打印符合要求的記錄... 82
本章小結(jié)... 83
習(xí)題... 83
第5章 SQL連接查詢.... 85
5.1 內(nèi)連接查詢... 86
5.1.1 簡單內(nèi)連接... 87
5.1.2 復(fù)雜內(nèi)連接... 88
5.2 外連接查詢... 90
5.2.1 左外連接... 91
5.2.2 右外連接... 92
5.2.3 全外連接... 93
5.3 其他特殊連接... 95
5.3.1 交叉連接... 95
5.3.2 自然連接... 97
上機(jī)實(shí)訓(xùn):在生成的PROJECTS表中
追加記錄... 99
本章小結(jié)... 99
習(xí)題... 100
第6章 數(shù)據(jù)控制語言與數(shù)據(jù)定義
語言.... 101
6.1 數(shù)據(jù)控制語言... 102
6.1.1 數(shù)據(jù)庫權(quán)限... 102
6.1.2 權(quán)限控制... 105
6.2 表... 110
6.2.1 建立表... 110
6.2.2 獲得表的相關(guān)信息... 115
6.2.3 修改表定義... 116
6.2.4 修改表名... 123
6.2.5 刪除表... 123
6.3 索引... 124
6.3.1 各種類型索引的
比較和選擇... 124
6.3.2 建立索引... 125
6.3.3 獲得索引信息... 125
6.3.4 修改索引名字... 126
6.3.5 刪除索引... 127
6.3.6 監(jiān)視索引的空間使用... 127
6.3.7 查看索引信息... 127
6.4 視圖... 128
6.4.1 建立視圖... 129
6.4.2 使用視圖... 130
6.4.3 獲得視圖定義信息... 133
6.4.4 修改視圖... 135
6.4.5 刪除視圖... 135
6.5.6 替換視圖... 135
上機(jī)實(shí)訓(xùn):創(chuàng)建編輯my_emp數(shù)據(jù)表... 136
本章小結(jié)... 137
習(xí)題... 137
第7章 數(shù)據(jù)操縱語言與事務(wù)處理.... 139
7.1 數(shù)據(jù)操縱語言... 140
7.1.1 插入數(shù)據(jù)... 140
7.1.2 更新數(shù)據(jù)... 141
7.1.3 刪除數(shù)據(jù)... 143
7.1.4 數(shù)據(jù)庫完整性... 144
7.1.5 含有子查詢的DML語句... 146
7.2 數(shù)據(jù)事務(wù)處理... 148
7.2.1 顯式處理事務(wù)... 149
7.2.2 隱式處理事務(wù)... 151
7.2.3 特殊事務(wù)... 151
上機(jī)實(shí)訓(xùn):編寫在PAY_TABLE表中
插入記錄的過程... 152
本章小結(jié)... 153
習(xí)題... 153
第8章 SQL*Plus基礎(chǔ)簡介.... 155
8.1 SQL*Plus語言基礎(chǔ)... 156
8.1.1 SQL*Plus的功能與
編寫規(guī)則... 156
8.1.2 啟動(dòng)SQL*Plus連接
數(shù)據(jù)庫... 157
8.2 使用SQL*Plus的編輯功能... 159
8.2.1 編輯命令... 159
8.2.2 保存命令... 162
8.2.3 加入注釋... 163
8.2.4 運(yùn)行命令... 165
8.2.5 編寫交互命令... 166
8.2.6 使用綁定變量... 173
8.2.7 跟蹤語句... 177
上機(jī)實(shí)訓(xùn):打印出EMP表中各個(gè)
工資級別的人數(shù)... 182
本章小結(jié)... 182
習(xí)題... 183
第9章 PL/SQL編程基礎(chǔ).... 185
9.1 PL/SQL語言基礎(chǔ)... 186
9.1.1 PL/SQL塊... 186
9.1.2 PL/SQL基本語法要素... 189
9.1.3 PL/SQL的開發(fā)和
運(yùn)行環(huán)境... 192
9.1.4 運(yùn)行PL/SQL程序... 194
9.2 在PL/SQL中執(zhí)行SQL語句... 195
9.2.1 執(zhí)行SELECT語句... 195
9.2.2 執(zhí)行DML語句... 197
9.2.3 執(zhí)行事務(wù)處理語句... 203
9.3 PL/SQL程序控制結(jié)構(gòu)... 204
9.3.1 順序結(jié)構(gòu)... 204
9.3.2 分支結(jié)構(gòu)... 204
9.3.3 循環(huán)結(jié)構(gòu)... 210
9.3.4 GOTO語句與NULL語句... 213
上機(jī)實(shí)訓(xùn):實(shí)現(xiàn)數(shù)據(jù)交換... 215
本章小結(jié)... 215
習(xí)題... 216
第10章 PL/SQL記錄集合應(yīng)用.... 217
10.1 記錄類型... 218
10.1.1 定義記錄... 218
10.1.2 在SELECT語句中
使用記錄... 220
10.1.3 在DML中使用記錄... 223
10.2 記錄表類型... 227
10.2.1 定義記錄表... 227
10.2.2 使用記錄表... 228
10.3 聯(lián)合數(shù)組類型... 230
10.3.1 定義聯(lián)合數(shù)組... 231
10.3.2 使用聯(lián)合數(shù)組... 231
10.4 嵌套表類型... 233
10.4.1 定義嵌套表... 233
10.4.2 使用嵌套表... 234
10.5 變長數(shù)組類型... 237
10.5.1 定義變長數(shù)組... 238
10.5.2 使用變長數(shù)組類型... 238
10.6 集合操作... 241
10.6.1 集合屬性與方法... 242
10.6.2 使用集合操作符... 250
上機(jī)實(shí)訓(xùn):在myEMP表中修改
員工工資... 256
本章小結(jié)... 257
習(xí)題... 257
第11章 PL/SQL高級應(yīng)用.... 259
11.1 子程序... 260
11.1.1 過程... 260
11.1.2 函數(shù)... 262
11.2 包... 263
11.2.1 定義包... 264
11.2.2 包的管理... 268
11.2.3 調(diào)用包... 270
11.2.4 包中子程序的重載... 273
11.3 觸發(fā)器... 277
11.3.1 觸發(fā)器概述... 277
11.3.2 DML觸發(fā)器... 277
11.3.3 INSTEAD OF觸發(fā)器... 280
11.3.4 系統(tǒng)事件觸發(fā)器... 281
11.4 PL/SQL游標(biāo)... 283
11.4.1 游標(biāo)應(yīng)用基礎(chǔ)... 283
11.4.2 游標(biāo)FOR循環(huán)... 285
上機(jī)實(shí)訓(xùn):創(chuàng)建名為change_record的
觸發(fā)器... 287
本章小結(jié)... 288
習(xí)題... 288
第12章 項(xiàng)目實(shí)踐人力資源
管理系統(tǒng).... 291
12.1 系統(tǒng)設(shè)計(jì)... 292
12.1.1 需求分析... 292
12.1.2 總體設(shè)計(jì)... 292
12.1.3 功能模塊設(shè)計(jì)... 293
12.2 數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)... 294
12.2.1 數(shù)據(jù)庫需求設(shè)計(jì)... 294
12.2.2 數(shù)據(jù)邏輯結(jié)構(gòu)設(shè)計(jì)... 294
12.3 人力資源管理... 298
12.3.1 部門信息管理... 298
12.3.2 員工信息管理... 311
12.4 考勤管理... 325
12.4.1 考勤規(guī)則管理... 325
12.4.2 假別管理... 329
12.4.3 請假管理... 332
12.5 系統(tǒng)管理... 335
12.5.1 用戶注冊... 335
12.5.2 用戶詳細(xì)資料顯示... 336
12.5.3 用戶查詢... 339
12.5.4 用戶列表顯示... 341
12.5.5 數(shù)據(jù)庫操作類... 341
本章小結(jié)... 342
習(xí)題... 343
參考文獻(xiàn).... 344