具體描述
內容簡介
SQL(Structured Ouery Language)是關係數據庫的基本操作語言。它主要包括數據查詢,數據操縱、數據定義等功能,是應用程序與數據庫進行交互操作的接口。PL/SQL(Procedural Language/SQL)是Oracle特有的編程語言,它可以像其他高級編程語言一樣,編寫齣各種完整的數據庫操作功能的程序。由於PL/SQL由Oracle係統本身編譯執行,所以程序運行效率更高。《Oracle 10g SQL和PL/SQL編程指南》為Oracle數據庫應用開發人員提供瞭SQL使用指南和PL/SQL編程技術。通過學習《Oracle 10g SQL和PL/SQL編程指南》,讀者不僅可以掌握SQL和PL/SQL的基礎知識,而且還可以掌握Oracle 10g SQL和PL/SQL的許多高級特徵。
《Oracle 10g SQL和PL/SQL編程指南》可作為高等院校計算機相關專業的輔助教材,也可作為各類高級數據庫編程人員的參考書。《Oracle 10g SQL和PL/SQL編程指南》的編寫既考慮瞭SQL和PL/SQL的初學者,同時也兼顧到有經驗的PL/SQL編程人員。《Oracle 10g SQL和PL/SQL編程指南》還可以作為培訓五班的新材。
內頁插圖
目錄
第I部分 Oracle 10g概述
第1章 Oracle簡介
1.1 數據庫的産生與發展
1.1.1 數據管理技術的産生與發展
1.1.2 數據庫技術的發展
1.1.3 關係數據庫産品簡介
1.2 Oracle的産生與發展
1.3 Oracle 10g簡介
1.3.1 Oracle 10g係列産品
1.3.2 Oracle 10g 數據庫for Windows版本
第2章 數據庫的建立
2.1 數據庫邏輯設計
2.1.1 關係數據庫設計基礎
2.1.2 關係數據庫規範化
2.2 數據庫物理設計
2.3 數據庫實施
2.4 創建數據庫
2.4.1 數據庫創建前的準備
2.4.2 安裝數據庫服務器並創建數據庫
第3章 SQL與PL/SQL概述
3.1 SQL與PL/SQL簡介
3.1.1 SQL簡介
3.1.2 PL/SQL簡介
3.2 SQL*Plus 簡介
3.3 範例數據庫錶的建立
3.3.1 Oracle 10g基本數據類型
3.3.2 定義錶的結構
3.3.3 查看錶結構
3.3.4 刪除錶
3.3.5 添加數據
3.3.6 查看數據
3.3.7 刪除數據
第II部分 SQL操作
第4章 單錶查詢
4.1 簡單查詢
4.1.1 查詢指定列
4.1.2 改變輸齣
4.1.3 空值處理
4.2 條件查詢
4.2.1 單一條件查詢
4.2.2 復閤條件查詢
4.3 記錄排序
4.3.1 按單一列排序
4.3.2 按多列排序
4.4 分組查詢
4.4.1 列函數及其應用
4.4.2 GROUP BY子句
4.4.3 HAVING子句
第5章 子查詢與集閤操作
5.1 子查詢
5.1.1 單行子查詢
5.1.2 多行子查詢
5.1.3 多列子查詢
5.1.4 相關子查詢
5.1.5 嵌套子查詢
5.2 集閤操作
5.2.1 使用集閤操作符
5.2.2 集閤操作的進一步討論
第6章 連接查詢
6.1 內連接查詢
6.1.1 簡單內連接
6.1.2 復雜內連接
6.2 外連接查詢
6.2.1 左外連接
6.2.2 右外連接
6.2.3 全外連接
6.3 其他特殊連接
6.3.1 交叉連接
6.3.2 自連接
第7章 數據操縱語言與事務處理
7.1 數據操縱語言
7.1.1 插入數據(INSERT)
7.1.2 更新數據(UPDATE)
7.1.3 刪除數據(DELETE、TRUNCATE TABLE)
7.1.4 數據庫完整性
7.1.5 含有子查詢的DML語句
7.2 數據事務處理
7.2.1 顯式處理事務
7.2.2 隱式處理事務
7.2.3 特殊事務
第8章 SQL函數
8.1 數字函數
8.1.1 數字函數概述
8.1.2 數字函數示例
8.2 字符函數
8.2.1 字符函數概述
8.2.2 字符函數示例
8.3 日期時間函數
8.3.1 日期時間函數概述
8.3.2 日期時間函數示例
8.4 轉換函數
8.4.1 轉換函數概述
8.4.2 轉換函數示例
第9章 數據控製語言與數據定義語言
9.1 數據控製語言
9.1.1 數據庫權限
9.1.2 權限控製
9.2 錶
9.2.1 建立錶
9.2.2 獲得錶的相關信息
9.2.3 修改錶定義
9.2.4 修改錶名
9.2.5 刪除錶
9.3 索引
9.3.1 建立索引
9.3.2 獲得索引信息
9.3.3 修改索引名字
9.3.4 刪除索引
9.4 視圖
9.4.1 建立視圖
9.4.2 使用視圖
9.4.3 獲得視圖定義信息
9.4.4 修改視圖
9.4.5 刪除視圖
第III部分 PL/SQL編程指南
第10章 PL/SQL編程基礎
10.1 PL/SQL語言基礎
10.1.1 PL/SQL塊簡介
10.1.2 PL/SQL基本語法要素
10.1.3 變量及其數據類型
10.2 在PL/SQL中執行SQL語句
10.2.1 執行SELECT語句
10.2.2 執行DML語句
10.2.3 執行事務處理語句
10.3 PL/SQL程序控製結構
10.3.1 順序結構
10.3.2 分支結構
10.3.3 循環結構
10.3.4 GOTO語句與NULL語句
10.4 異常處理
10.4.1 異常的基本概念
10.4.2 係統異常處理
10.4.3 自定義異常處理
10.4.4 使用異常函數
10.5 遊標
10.5.1 遊標應用基礎
10.5.2 遊標應用
10.5.3 遊標FOR循環
10.5.4 遊標的復雜應用
第11章 復閤數據類型
11.1 記錄類型
11.1.1 定義記錄
11.1.2 在SELECT語句中使用記錄
11.1.3 在DML中使用記錄
11.2 記錄錶類型
11.2.1 定義記錄錶
11.2.2 使用記錄錶
11.3 聯閤數組類型
11.3.1 定義聯閤數組
11.3.2 使用聯閤數組
11.4 嵌套錶類型
11.4.1 定義嵌套錶
11.4.2 使用嵌套錶
11.5 變長數組類型
11.5.1 定義變長數組
11.5.2 使用變長數組類型
11.6 集閤操作
11.6.1 使用集閤屬性與方法
11.6.2 使用集閤操作符
第12章 應用程序結構
12.1 子程序
12.1.1 過程
12.1.2 函數
12.2 包
12.2.1 定義包
12.2.2 包的管理
12.2.3 調用包
12.2.4 包中子程序的重載
12.3 觸發器
12.3.1 概述
12.3.2 DML觸發器
12.3.3 INSTEAD OF觸發器
12.3.4 係統事件觸發器
附錄 SQL*Plus常用命令
精彩書摘
第1章 Oracle簡介
Oracle公司是目前世界第二大獨立軟件公司和世界領先的信息管理軟件供應商。0racle數據庫是著名的關係數據庫産品,其市場占有率名列前茅。在介紹0racle公司及其數據庫産品之前,先介紹數據庫的産生與發展。
1.1 數據庫的産生與發展
數據是人們對其活動的一種符號記錄。數據管理是指人們對數據進行收集、組織、存儲、加工、傳播和利用的一係列活動的總和。隨著社會的發展,數據量增大,數據的管理便成為人們日常生活的一種需求。在計算機産生以前,人們利用紙筆來記錄數據,利用常規的計算工具來進行數據計算,並主要是利用大腦來管理這些數據。研製計算機的最初目的是利用它進行數值計算,但隨著計算技術的進步與發展,計算機的應用已遠遠超齣瞭數值計算的範圍。在計算機硬件、軟件發展的基礎上,在應用需求的推動下,人們藉助計算機進行大規模的數據管理,使數據管理技術得到迅速發展。
1.1.1 數據管理技術的産生與發展
1946年,第一颱電子計算機問世。問世後的前十年,主要用於解決數值計算問題。到20世紀50年代後期,計算機開始應用於事務管理,用來解決非數值計算問題,如人事管理、工資管理、庫存管理、輔助教學等。20世紀70年代以後,計算機一方麵朝著高速(數億次/秒)、大容量和智能化的巨型計算機方嚮發展,另一方麵又朝著品種繁多、功能不斷增強的微型計算機係統方嚮發展。
隨著科學技術的發展,計算機技術作為信息管理的先進技術,其優越性越來越明顯。計算機能存儲大量數據並能長期保存,這是任何其他工具所無法比擬的,它處理數據的速度快,能夠及時地為人們提供大量他們所關心的信息。
前言/序言
Oracle公司是世界排名前列的大型國際企業。Oracle數據庫是世界領先、性能優異的大型數據庫管理係統之一。Oracle數據庫係統廣泛應用在金融、通信、航空等領域。有多種數據庫管理係統可供用戶選擇,Oracle數據庫係統以其處理的並發數據量極大,極高的可靠性、安全性和可擴展性贏得瞭廣大高端用戶的青睞。早期Oracle數據庫主要應用於UNIX操作係統,隨著Oracle公司提供瞭基於Windows平颱的Oracle版本以後,Oracle數據庫係統在國內外擁有瞭更為廣泛的應用市場。
《Oracle 10g SQL與PL/SQL編程指南》是一本專注於Oracle數據庫核心編程技術的權威參考書籍。本書深入淺齣地闡述瞭SQL(Structured Query Language)和PL/SQL(Procedural Language/SQL)在Oracle 10g環境下的應用,旨在幫助開發者、數據庫管理員以及任何希望精通Oracle數據庫編程的專業人士,掌握高效、 robust 的數據庫解決方案。 本書內容緊密圍繞Oracle 10g這一經典版本,雖然Oracle已迭代多個版本,但10g在許多企業級應用中仍占有重要地位,其SQL和PL/SQL的內核特性在後續版本中也得以繼承和發展。因此,理解10g的精髓,對於建立堅實的Oracle數據庫編程基礎至關重要。 SQL部分:數據的基石 SQL是與關係型數據庫進行交互的標準語言,也是本書的基石。在SQL部分,我們將首先從SQL的基礎語法開始,涵蓋數據查詢(SELECT)、數據操縱(INSERT, UPDATE, DELETE)以及數據定義(CREATE, ALTER, DROP)等核心命令。但本書絕不僅僅止步於此,而是將重點放在如何在Oracle 10g環境中實現更復雜、更高效的數據處理。 高級查詢技巧: 我們將深入探討各種復雜的查詢技術,包括但不限於: 子查詢(Subqueries): 詳細講解內嵌查詢、相關子查詢、關聯子查詢以及它們的性能優化策略。演示如何在WHERE子句、SELECT列錶、FROM子句以及HAVING子句中使用子查詢,解決實際問題。 連接(Joins): 全麵覆蓋內連接(INNER JOIN)、左外連接(LEFT OUTER JOIN)、右外連接(RIGHT OUTER JOIN)、全外連接(FULL OUTER JOIN)以及交叉連接(CROSS JOIN)。通過大量實例,展示如何根據業務需求選擇最閤適的連接方式,並分析不同連接的性能差異。 集閤運算符(Set Operators): 深入理解UNION, UNION ALL, INTERSECT, MINUS等運算符在閤並、比較和篩選數據集中的作用,並討論其適用場景和性能考量。 分組與聚閤(Grouping and Aggregation): 詳細講解GROUP BY子句和HAVING子句的使用,以及常用的聚閤函數(SUM, AVG, COUNT, MAX, MIN)。重點在於如何對分組後的數據進行二次過濾和分析。 窗口函數(Analytic Functions): 這是Oracle SQL的一大亮點,本書將投入大量篇幅介紹窗口函數的強大功能,如ROW_NUMBER(), RANK(), DENSE_RANK(), LEAD(), LAG(), NTILE(), PERCENT_RANK(), CUME_DIST(), FIRST_VALUE(), LAST_VALUE()等。通過豐富的案例,展示如何利用窗口函數進行排名、纍計求和、同比/環比分析、分組內首尾值獲取等復雜報錶和分析需求,避免瞭傳統的復雜自連接和遊標操作,極大地提高瞭效率和代碼簡潔性。 正則錶達式(Regular Expressions): 介紹Oracle 10g中強大的正則錶達式函數,如REGEXP_LIKE, REGEXP_SUBSTR, REGEXP_REPLACE, REGEXP_INSTR等,幫助讀者處理和匹配復雜的字符串模式。 層次查詢(Hierarchical Queries): 專注於Oracle特有的CONNECT BY PRIOR子句,演示如何處理樹狀結構(如組織架構、物料清單)的數據,並進行各種層級相關的查詢。 數據字典視圖: 講解如何利用Oracle數據字典(如DBA_TABLES, ALL_TAB_COLUMNS, V$SESSION等)來查詢數據庫的元數據信息,這對於數據庫的監控、管理和開發調試至關重要。 SQL性能優化: 性能是數據庫應用的核心。本書將係統地介紹SQL性能優化的方法和工具: 執行計劃(Execution Plans): 詳細解讀SQLPlus和SQL Developer中如何獲取執行計劃,並分析執行計劃中的關鍵信息,如訪問路徑、連接方式、成本估算等。 索引(Indexes): 全麵講解各種索引類型(B-tree, Bitmap, Function-based, Composite等)的原理、創建和使用時機。重點在於如何根據查詢模式選擇和設計閤適的索引,避免全錶掃描。 統計信息(Statistics): 闡述收集和維護數據庫統計信息的重要性,以及它們如何影響優化器的決策。講解DBMS_STATS包的使用。 SQL調優技巧: 提供實際的SQL重寫、避免低效寫法(如函數在WHERE條件中使用)等調優經驗。 PL/SQL部分:過程化控製與業務邏輯的實現 PL/SQL是Oracle特有的過程化擴展語言,它將SQL的強大數據處理能力與過程化編程的靈活性相結閤,是實現復雜業務邏輯、自動化任務和構建可維護數據庫應用程序的利器。 PL/SQL基礎: 從PL/SQL的基本語法結構開始,包括聲明部分、執行部分和異常處理部分。講解變量、常量、數據類型、運算符、順序結構、選擇結構(IF-THEN-ELSIF-ELSE, CASE)以及循環結構(LOOP, WHILE LOOP, FOR LOOP)。 過程與函數(Procedures and Functions): 深入講解如何創建、調用和管理存儲過程和函數。重點在於參數傳遞模式(IN, OUT, IN OUT),返迴值,以及它們在封裝業務邏輯、提高代碼重用性方麵的作用。 包(Packages): 介紹PL/SQL包的概念,如何將相關的過程、函數、變量和類型組織在一起,實現模塊化開發,並討論包的優點,如封裝性、性能提升(硬解析減少)和版本控製。 遊標(Cursors): 詳細講解顯式遊標和隱式遊標的使用。重點在於如何處理多行查詢結果,如何進行逐行處理,並討論遊標的性能影響和優化方法(如FOR循環代替顯式遊標, BULK COLLECT)。 異常處理(Exception Handling): 強調PL/SQL強大的異常處理機製,包括預定義異常、用戶自定義異常以及如何使用EXCEPTION塊來捕獲和處理運行時錯誤,保證程序的健壯性。 觸發器(Triggers): 深入講解各種類型的觸發器(ROW, STATEMENT, BEFORE, AFTER, INSTEAD OF)及其應用場景。重點在於如何在數據修改、數據庫事件發生時自動執行PL/SQL代碼,如數據校驗、審計、同步數據等。 記錄類型(RECORD Types)與集閤類型(Collection Types): 講解如何定義和使用PL/SQL的復閤數據類型,如記錄類型(類似於結構體)和集閤類型(VARRAY, Nested Tables, Associative Arrays),它們能極大地簡化復雜數據的處理。 高級PL/SQL特性: Autonomous Transactions(自治事務): 解釋自治事務的概念,如何利用PRAGMA AUTONOMOUS_TRANSACTION實現獨立的事務,例如在日誌記錄或審計中。 BULK COLLECT 和 FORALL: 詳細講解這些優化技術,它們能夠顯著提高處理大量數據集時PL/SQL的性能,通過減少上下文切換來大幅提升效率。 SQL/XML 和 SQL/JSON: 介紹Oracle 10g對XML和JSON數據的支持,以及如何使用PL/SQL與這些半結構化數據進行交互。 DBMS_OUTPUT 和 DBMS_DEBUG: 講解如何使用這些內置包進行程序調試和輸齣信息。 PL/SQL性能優化: 避免顯式遊標: 強調在可能的情況下使用BULK COLLECT和FORALL來替代顯式遊標處理。 減少上下文切換: 講解如何通過FORALL一次性執行多條SQL語句。 優化SQL語句: PL/SQL中的SQL語句同樣需要優化,本書將重申SQL優化的重要性。 閤理的錯誤處理: 確保異常處理機製能夠有效捕獲和報告錯誤,避免程序意外終止。 綜閤應用與實踐 除瞭對SQL和PL/SQL的深入講解,本書還強調理論與實踐的結閤。通過大量的實際案例,涵蓋從簡單的數據查詢到復雜的業務流程實現,讓讀者能夠將所學知識應用於實際工作。 案例分析: 包含從常見業務場景齣發的實際案例,例如: 構建復雜的報錶係統(如月度銷售統計、庫存預警)。 實現數據遷移和同步方案。 開發自定義的數據庫校驗和驗證規則。 設計和實現批處理作業。 構建基於觸發器的審計和日誌記錄係統。 開發工具: 可能會提及Oracle SQL Developer等常用開發工具的使用技巧,輔助讀者更高效地進行開發和調試。 最佳實踐: 總結在SQL和PL/SQL開發中的一些最佳實踐和注意事項,幫助讀者寫齣更清晰、更易於維護、性能更優的代碼。 通過閱讀《Oracle 10g SQL與PL/SQL編程指南》,讀者將能夠全麵掌握Oracle數據庫編程的核心技能,能夠獨立解決復雜的數據庫查詢和處理問題,開發齣高效、穩定、可維護的數據庫應用程序,並在Oracle 10g環境下遊刃有餘地進行開發和管理。本書是Oracle數據庫開發人員、DBA以及希望深入理解Oracle數據庫技術的專業人士不可多得的參考資料。