《21世紀高等教育計算機規劃教材:Oracle數據庫實用教程》以最新版本Oracle 11g為藍本,從實際出發,系統地介紹了Oracle數據庫系統的管理和使用。對深奧的理論不做過多的討論,重點突出實用性,每章中都提供了許多實用的例子,力求讓讀者更好地掌握和使用Oracle數據庫。全書分為3個部分。第一部分介紹了Oracle的使用基礎(第1~4章),第二部分介紹了數據庫開發的SQL和PL/SQL語言(第5~10章),第三部分介紹了Oracle數據庫管理的各個方面(第11~15章)。《21世紀高等教育計算機規劃教材:Oracle數據庫實用教程》為教師提供配套的教學資源,可以作為高等院校數據庫及相關課程的教材,也可以作為培訓中心的數據庫技術培訓教材及數據庫愛好者自學用書。
《21世紀高等教育計算機規劃教材:Oracle數據庫實用教程》中Oracle 11g是一個大型的、復雜的數據庫系統,在學習的時候,可以先學習基本概念、系統的安裝,然后創建數據庫實例,接著學習SQL和PL/SQL。接下來學習數據庫的管理、備份與恢復以及企業管理器的使用。現在的企業應用系統越來越復雜,涉及的技術眾多。要想學習好Oracle,還應該掌握1~2種Linux/LINIX操作系統知識,掌握網絡、Java/C語言以及一些存儲方面的知識。《21世紀高等教育計算機規劃教材:Oracle數據庫實用教程》結合作者十多年從事數據庫教學、數據庫管理、數據庫開發的經驗,從實際出發,以實用的例子,系統地介紹了Oracle數據庫的管理和使用。在內容的選擇、深度的把握上充分考慮初學者的特點,內容安排上力求循序漸進,不僅可以作為大專院校教學用書,也可作為Oracle 11g的各類培訓教材和Oracle數據庫愛好者自學用書。
第1章 Oracle簡介
1.1 Oracle發展歷史
1.2 Oracle系統概述
1.2.1 網格計算的概念
1.2.2 Oracle 11g版本介紹
1.2.3 Oracle 11g企業版的選件
1.3 Oracle體系概述
1.3.1 數據庫與實例
1.3.2 Oracle數據庫服務器結構
1.4 數據庫結構
1.4.1 物理結構
1.4.2 邏輯結構
1.5 實例結構
1.5.1 內存結構
1.5.2 進程結構
1.6 連接數據庫
1.6.1 連接與會話
1.6.2 連接模式
1.7 Oracle工具簡介
1.7.1 Oracle管理工具
1.7.2 Oracle開發工具
第2章 Oracle的安裝
2.1 安裝前的準備
2.1.1 下載Oracle軟件
2.1.2 查看硬件信息
2.1.3 查看軟件信息
2.1.4 配置內核參數
2.1.5 建立安裝組和用戶
2.1.6 配置資源限制
2.1.7 安裝目錄設置
2.1.8 配置用戶環境變量
2.1.9 禁用SELinux
2.1.10 關閉Linux防火墻
2.2 安裝Oracle Database 11gR2
2.2.1 解壓安裝文件
2.2.2 允許圖型安裝界面
2.2.3 執行OUI
2.2.4 執行兩個腳本
2.3 查看、關閉和啟動監聽器
2.3.1 查看數據庫監聽器狀態
2.3.2 關閉數據庫監聽器
2.3.3 啟動數據庫監聽器
2.4 啟動和關閉數據庫實例
2.4.1 啟動數據庫實例
2.4.2 關閉數據庫實例
2.5 查看、停止和啟動Oracle數據庫控制臺服務
2.5.1 查看Oracle數據庫控制臺服務
2.5.2 停止Oracle數據庫控制臺服務
2.5.3 啟動Oracle數據庫控制臺服務
2.6 卸載Oracle 11g
2.6.1 卸載工具deinstall
2.6.2 卸載實例
第3章 SQL﹡Plus
3.1 啟動及退出SQL*Plus
3.1.1 啟動SQL*Plus
3.1.2 退出SQL*Plus
3.1.3 獲取幫助信息
3.1.4 獲取版本信息
3.2 使用SQL語言
3.3 使用SQL*Plus命令
3.3.1 編輯命令
3.3.2 調用操作系統編輯程序
3.3.3 文件操作
3.3.4 用HOST執行操作系統命令
3.3.5 運行命令
3.3.6 清除命令
3.3.7 數據庫相關命令
3.3.8 SPOOL命令
3.3.9 SET命令
3.3.10 SHOW命令
3.4 運行PL/SQL塊
3.4.1 創建存儲過程
3.4.2 執行存儲過程
第4章 SQL Developer
4.1 SQL Developer安裝
4.2 SQL Developer用戶界面
4.3 創建數據庫連接
4.4 創建新表
4.5 更改表
4.6 添加表約束
4.7 向表中添加數據
4.8 訪問表中數據
4.9 使用SQL工作表
4.10 創建并編譯PL/SQL過程
4.11 運行PL/SQL過程
第5章 SQL概述
5.1 SQL的發展及標準
5.2 SQL簡介
5.2.1 SQL的功能
5.2.2 SQL的特點
5.3 Oracle 11g的示例用戶與模式
5.3.1 SCOTT用戶
5.3.2 SCOTT模式
5.3.3 HR用戶和HR模式
5.4 Oracle 11g的數據類型
5.4.1 字母數據的數據類型
5.4.2 數字數據的數據類型
5.4.3 日期和時間的數據類型
5.4.4 大對象數據的數據類型
5.4.5 RAW和ROWID數據類型
5.4.6 查看數據類型
5.5 SQL的書寫規則
5.5.1 大寫字母或小寫字母
5.5.2 語句終止符
5.5.3 縮進排版與可讀性
第6章 SQL的數據定義語言(DDL)
6.1 表的DDL
6.1.1 使用列規范創建表
6.1.2 使用子查詢創建表
6.1.3 如何更改表的定義
6.1.4 表的刪除和截斷
6.2 索引的DDL
6.2.1 索引的概念
6.2.2 創建索引
6.2.3 修改和刪除索引
6.3 視圖的DDL
6.3.1 視圖的概念
6.3.2 視圖的建立
6.3.3 視圖的刪除
6.3.4 視圖的修改
6.4 同義詞的DDL
6.4.1 同義詞的概念
6.4.2 同義詞的分類
6.4.3 同義詞的創建
6.4.4 同義詞的刪除
6.4.5 同義詞的修改
6.5 序列的DDL
6.5.1 序列的概念
6.5.2 序列的創建
6.5.3 序列的使用
6.5.4 序列的修改
6.5.5 序列的刪除
第7章 SQL的數據查詢語言(DQL)
7.1 SELECT的語法
7.2 簡單查詢
7.2.1 查詢全部列
7.2.2 查詢指定列
7.2.3 DISTINCT關鍵字
7.2.4 查詢算術計算后的列
7.2.5 列的別名
7.2.6 字符連接運算
7.3 帶條件查詢
7.3.1 比較運算符
7.3.2 BETWEEN運算符
7.3.3 IN運算符
7.3.4 LIKE運算符
7.3.5 對空值的比較
7.3.6 邏輯運算符
7.3.7 運算符的優先順序
7.4 對結果進行排序
7.4.1 按列名排序
7.4.2 按位置排序
7.4.3 混合排序
7.5 單行函數
7.5.1 字符函數
7.5.2 數字函數
7.5.3 日期函數
7.5.4 轉換函數
7.6 分組函數
7.6.1 分組的概念
7.6.2 COUNT函數
7.6.3 SUM函數
7.6.4 AVG函數
7.6.5 MAX和MIN函數
7.6.6 GROUP BY子句
7.6.7 HAVING短語
7.7 連接查詢
7.7.1 等值與非等值連接查詢
7.7.2 自然連接查詢
7.7.3 自連接查詢
7.7.4 外連接查詢
7.8 子查詢與集合運算
7.8.1 帶比較操作的子查詢
7.8.2 帶IN的子查詢
7.8.3 集合運算
7.8.4 并集運算符
7.8.5 交集運算符
7.8.6 差集運算符
第8章 SQL的數據操縱語言(DML)與事務控制
8.1 INSERT語句
8.1.1 插入一條記錄
8.1.2 插入多條記錄
8.2 UPDATE語句
8.3 DELETE語句
8.4 MERGE語句
8.5 事務控制
8.5.1 事務的概念
8.5.2 事務的提交和回退
8.5.3 事務的開始和結束
8.5.4 保存點
8.5.5 事務的ACID特性
第9章 安全性與SQL的數據控制語言(DCL)
9.1 用戶管理
9.1.1 創建用戶
9.1.2 修改用戶密碼
9.1.3 設置用戶密碼失效
9.1.4 鎖定和解鎖用戶
9.1.5 刪除用戶
9.2 授予和收回權限
9.2.1 系統權限
9.2.2 授予系統權限
9.2.3 收回系統權限
9.2.4 使用系統權限
9.2.5 對象權限
9.2.6 授予對象權限
9.2.7 收回對象權限
9.2.8 使用對象權限
9.3 角色
9.3.1 系統預定義角色
9.3.2 創建角色
9.3.2 授予角色權限
9.3.3 將角色授予用戶
9.3.4 從用戶收回角色
9.3.5 刪除角色
9.4 審計
9.4.1 執行審計需要的特權
9.4.2 審計示例
第10章 PL/SQL
10.1 PL/SQL概述
10.1.1 SQL執行方式與PL/SQL執行方式的比較
10.1.2 PL/SQL結構
10.1.3 PL/SQL分類
10.2 PL/SQL聲明
10.2.1 聲明常量
10.2.2 聲明變量
10.2.3 聲明類型
10.2.4 PL/SQL注釋
10.3 PL/SQL執行
10.3.1 賦值語句
10.3.2 條件語句IF
10.3.3 CASE表達式
10.3.4 LOOP語句
10.3.5 WHILE語句
10.3.6 FOR語句
10.4 PL/SQL異常處理
10.4.1 預定義的異常
10.4.2 非預定義的異常
10.4.3 用戶自定義的異常
10.5 存儲過程
10.5.1 建立存儲過程
10.5.2 調用存儲過程
10.5.3 刪除存儲過程
10.6 函數
10.6.1 建立函數
10.6.2 調用函數
10.6.3 刪除函數
10.7 游標
10.7.1 隱式游標
10.7.2 顯式游標
10.8 程序包
10.8.1 系統預定義程序包
10.8.2 用戶自定義程序包
10.9 觸發器
10.9.1 觸發器類型及組成
10.9.2 建立觸發器
10.9.3 重編譯觸發器
10.9.4 刪除觸發器
10.9.5 使能觸發器
第11章 表空間和控制文件
11.1 表空間的結構
11.2 查看表空間
11.2.1 通過SQL語句查看
11.2.2 通過EM查看
11.3 查看數據文件
11.3.1 通過SQL語句查看
11.3.2 通過EM查看
11.4 本地管理表空間
11.4.1 本地管理表空間的創建
11.4.2 表空間的刪除
11.5 臨時表空間的管理
11.5.1 臨時表空間的創建
11.5.2 查看臨時表空間
11.5.3 臨時表空間的刪除
11.6 UNDO表空間的管理
11.6.1 UNDO表空間的創建
11.6.2 UNDO表空間的切換
11.6.3 UNDO表空間的刪除
11.7 控制文件概述
11.7.1 控制文件的存儲位置
11.7.2 控制文件的鏡像
11.8 控制文件的維護
11.8.1 控制文件的備份
11.8.2 控制文件的恢復
第12章 Oracle 11g RMAN備份與恢復
12.1 Oracle 11g RMAN簡介
12.2 RMAN的基本結構與概念
12.2.1 RMAN的基本結構
12.2.2 RMAN的概念
12.3 RMAN配置
12.3.1 設置目標數據庫為歸檔日志模式
12.3.2 設置恢復目錄
12.4 RMAN備份
12.4.1 備份整個數據庫
12.4.2 備份歸檔日志文件
12.4.3 備份控制文件
12.4.4 備份參數文件
12.4.5 查看備份集合
12.5 RMAN恢復
12.5.1 校驗備份文件
12.5.2 恢復數據文件
第13章 邏輯備份與恢復
13.1 邏輯備份與恢復概述
13.2 imp/exp
13.2.1 imp語法格式
13.2.2 exp語法格式
13.2.3 exp導出實例
13.2.4 imp導入實例
13.3 impdp/expdp
13.3.1 創建目錄對象
13.3.2 impdp語法格式
13.3.3 expdp語法格式
13.3.4 expdp實例
13.3.5 impdp實例
第14章 閃回技術
14.1 閃回技術概述
14.2 閃回恢復區
14.2.1 閃回恢復區功能
14.2.2 閃回恢復區設置
14.3 閃回數據庫
14.4 閃回表
14.4.1 閃回到時間戳
14.4.2 閃回到SCN
14.5 閃回刪除
14.5.1 使用ORIGINAL_NAME閃回刪除
14.5.2 使用OBJECT_NAME閃回刪除
14.6 閃回查詢
14.7 閃回版本查詢
第15章 Oracle 11g Enterprise Manager
15.1 Oracle 11g EM簡介
15.2 Oracle 11g EM配置
15.2.1 啟動Oracle 11g EM
15.2.2 訪問Oracle 11g EM
15.3 Oracle 11g EM管理數據庫系統
15.3.1 “服務器”選項卡
15.3.2 “方案”選項卡
15.3.3 “數據移動”選項卡
15.3.4 “性能”選項卡
附錄 實驗
實驗報告
參考文獻
10.5 存儲過程
前面介紹了PL/SQL塊的基本編寫方法。在SQL*Plus中編寫并執行PL/SQL塊,PL/SQL塊的代碼存放在SQL*Plus的緩沖區中。如果在SQL*Plus中執行其他SQL語句或者PL/SQL塊,SQL*Plus的緩沖區就會存放新的內容,原來的內容會被從緩沖區中清除出去。這種沒有名稱只是臨時存放在緩沖區中的PL/SQL塊稱為匿名塊。
如果希望PL/SQL塊能隨時被調用執行,并能與數據庫中的其他用戶共享,那就需要創建有名字的PL/SQL塊,并經過編譯與優化,存放在數據庫中,這就是存儲程序。
數據庫中的用戶只要擁有適當的權限,就可以調用存儲程序,將存儲程序編譯后的偽代碼裝載到系統全局區的共享池中執行,完成相應的程序功能。
存儲程序有存儲過程、存儲函數、觸發器、包等不同形式,本節將介紹存儲過程。
10.5.1 建立存儲過程
存儲過程用于執行特定的操作。建立存儲過程的語法如下:
CREATE(OR REPLACE)PROCEDURE<過程名稱>
((參數1({IN|OUT|INOUT})<數據類型>,
參數2({IN|OUT|INOUT})<數據類型>)
( AUTHID DEFINER | CURRENT_USER)
{IS|AS)
<聲明部分>
BEGIN
<執行部分>
EXCEPTION
<異常處理>
END;
下面解釋建立存儲過程的參數具體含義。
使用OR REPLAcE選項的功能是當已經存在同名稱的存儲過程時,首先將其刪除,再創建新的存儲過程。
存儲過程可以帶有一個或者多個參數。IN表示該參數接受存儲過程外部傳遞進來的值,是默認的參數傳遞模式。OuT表示該參數在存儲過程中被賦值,并向存儲過程外部傳遞出去。IN OUT表示該參數同時具備IN和OUT兩種參數傳遞模式的特性,既可以接受存儲過程外部傳遞進來的值,又能在存儲過程中被賦值,并向存儲過程外部傳遞出去。
AUTHID選項用來設定存儲過程被調用時的權限,可以在可選值DEFINER和CURRENT USER中選擇其中之一。在默認為DEFlNER,即存儲過程被調用時,將以創建者身份執行。如果選擇cuRRENT LJSER,那么存儲過程被調用時,將以當前登錄用戶的身份執行,因此選擇CURRENT_USER時,存儲過程的創建者往往要對當前登錄用戶進行額外的授權操作,包括執行該存儲過程的權限,以及該存儲過程中訪問的數據庫對象的相應權限,如視圖的SELECT、表的UPDATE等。
IS和AS作為存儲過程聲明部分的開始,AS一般用于獨立的存儲過程,IS一般用于放入程序包中的存儲過程。兩者的作用是等價的。
存儲過程的執行部分和異常處理與前面學習過的PL/SQL塊是完全相同的。
(例27)檢索某部門的工資總和,這個過程有一個參數,代表部門編號,并打印該信息。
CREATE OR REPLACE PROCEDURE p_deptincome(dept_no IN number)AUTHID DEFINER
AS
total_sal_number:=0;一定義變量total_sal存放工資總和,并賦初值0
BEGIN
SELECT sum(salary)INTo total_sal FROM EMPLOYEES
where DEPARTMENT_ID=dept_no;
dbms_output.put_line(‘部門編號’||to_ehar(dept_no)||‘的工資總和為:’
||to_char(total_sal));
END;
以上代碼的執行結果如下:
SQL>/
過程已創建。
……