産品特色
編輯推薦
本書是Oracle PL/SQL入門類暢銷書的全新改造,適用於Oracle OCP認證,Oracle 11g、Oracle 12c、Oracle 10g、Oracle 9i等。
1.教程+同步視頻+實例分析+海量資源+在綫服務。
2.掃描書中二維碼,可在手機、電腦同步看教學視頻。
3.112集高清微視頻覆蓋全書,集視、聽演示於一體,邊看邊學更快捷。
4.263項OCP認證試題詳盡分析,閱讀源代碼快速進階。
5.小說式編寫風格,幽默風趣。
6.實戰派資深講師,為幾十傢大型企業做過培訓。
7.編寫方式采用“基礎知識+中小實例”模式編寫,由淺入深,掃除學習障礙,快速學習。
8.在綫服務:QQ群、微信公眾號在綫服務,即時在綫交流本書的所有疑難問題。
內容簡介
《Oracle PL/SQL從入門到精通》是一本覆蓋OCP認證內容、帶有視頻講解、淺顯易懂、幽默風趣、實例豐富、可操作性很強的Oracle PL/SQL程序設計入門用書,適用於Oracle 12c、Oracle 11g、Oracle 10g、Oracle 9i等多個版本。
《Oracle PL/SQL從入門到精通》主要內容有:Oracle的安裝及相關配置,PL/SQL程序設計語言概述,Oracle SQL Developer簡介,常用的SQL*Plus命令,PL/SQL變量的聲明與使用,編寫PL/SQL語言的可執行語句,PL/SQL與Oracle服務器之間的交互,分支(條件)語句,PL/SQL語言的循環語句,PL/SQL中常用的組閤數據類型,SQL遊標(cursor),顯式cursor的高級功能,PL/SQL程序中的異常處理,過程的創建、維護和刪除,函數的創建、維護和刪除,PL/SQL軟件包,PL/SQL軟件包的高級特性和功能,數據庫觸發器,批量綁定及高級觸發器特性, PL/SQL程序代碼設計上的考慮、Oracle自帶軟件包及數據庫優化簡介,導齣程序的源代碼以及源代碼加密。
《Oracle PL/SQL從入門到精通》適閤作為Oracle PL/SQL程序設計的入門用書,也可作為企業內訓、社會培訓、應用型高校的相關教材。
作者簡介
何明,商業榮譽碩士(新西蘭梅西大學),信息係統研究生(新西蘭奧剋蘭大學),工科學士(成都理工大學),OCP專業證書。30多年程序開發和數據庫係統管理與維護工作經驗。
1999年開始專職從事Oracle的培訓與服務,同時還在Unitec(新西蘭公立理工學院)任兼職講師為大學本科生講授數據庫課程。主要培訓和服務的大客戶包括NEC、惠普(HP)、殼牌(Shell)、北電網絡、中國移動、中國網通、天津地稅局和財政局、中國民航、唐山承德鋼鐵集團、酒泉鋼鐵集團、索貝數碼、西門子、中國銀行、華夏銀行、廈門銀行、TOM在綫有限公司、和北京郵政總局等。
目錄
第0章Oracle的安裝及相關配置
視頻講解:3集11分鍾
0.1Oracle的安裝
0.2Oracle11g和Oracle12c中的SQL*Plus
0.3scott用戶及其對象維護
0.4本書中將用到的錶
0.5SQL(StructuredQueryLanguage)
0.6本書所用的術語
0.7Oracle10g的SQL*Plus界麵
0.8使用iSQL*Plus
0.9使用DOS窗口啓動SQL*Plus
第1章PL/SQL程序設計語言概述
視頻講解:1集8分鍾
1.1PL/SQL語言的體係結構
1.2模塊化程序設計簡介
1.3PL/SQL語言的優勢
1.4PL/SQL程序塊的結構
1.5使用SQL*Plus創建匿名程序塊的步驟
1.6使用SQL*Plus創建、編輯和執行匿名塊的實例
1.7您應該掌握的內容
第2章OracleSQLDeveloper簡介
視頻講解:4集14分鍾
2.1安裝SQLDeveloper和創建數據庫連接
2.2SQLDeveloper的菜單
2.3導齣錶的設計信息和源程序代碼
2.4創建新對象和使用SQL工作錶
2.5導齣SQL語句的執行計劃
2.6使用Oracle11g和12c自帶的OracleSQLDeveloper
第3章常用的SQL*Plus命令
視頻講解:3集20分鍾
3.1DESC[RIBE]命令
3.2SETLINE[SIZE]{80|n}命令
3.3L命令和ntext命令
3.4“/”命令
3.5n(設置當前行)命令和A[PPEND](附加)命令
3.6DEL命令
3.7C[HANGE]命令
3.8生成腳本文件
3.9編輯腳本文件
3.10直接運行腳本文件
3.11SPOOL命令
3.12將Oracle數據庫的數據導齣給其他係統
3.13將數據導齣操作自動化
3.14商業智能軟件讀取Oracle數據的簡單方法
3.15利用AUTOTRACE追蹤SQL語句
3.16獲取SQL*Plus的幫助信息
3.17您應該掌握的內容
第4章PL/SQL變量的聲明與使用
視頻講解:5集25分鍾
4.1PL/SQL變量的使用
4.2PL/SQL變量的聲明和初始化
4.3字符串分隔符的說明與使用
4.4變量的數據類型
4.5%TYPE屬性
4.6布爾變量的聲明與使用
4.7替代變量與綁定變量
4.8LOB類型的變量
4.9聲明PL/SQL變量指南
4.10您應該掌握的內容
第5章編寫PL/SQL語言的可執行語句
視頻講解:5集18分鍾
5.1PL/SQL語言中的詞法單元
5.2標識符和定界符
5.3文字的使用和應用實例
5.4為程序代碼加注釋
5.5SQL函數在PL/SQL中的應用
5.6Oracle11g和12c的PL/SQL對序列操作的改進
5.7數據類型的轉換
5.8PL/SQL中的運算符
5.9程序塊的嵌套和變量的作用域
5.10變量的作用域和可見性的進一步探討
5.11程序設計的指導原則
5.12您應該掌握的內容
第6章PL/SQL與Oracle服務器之間的交互
視頻講解:3集20分鍾
6.1PL/SQL中的SQL語句及使用SELECT語句提取數據
6.2在PL/SQL中使用SELECT語句提取數據的實例
6.3利用分組函數從錶中提取數據
6.4PL/SQL變量與列同名的問題及命名慣例
6.5數據庫中數據維護概述和準備工作
6.6插入數據、修改數據和刪除數據
6.7MERGE語句
6.8閤並數據庫中的數據行
6.9您應該掌握的內容
第7章分支(條件)語句
視頻講解:4集20分鍾
7.1PL/SQL中的布爾條件
7.2IF語句以及簡單IF語句的實例
7.3IF-THEN-ELSE和IF-THEN-ELSIF語句的執行流程
7.4IF-THEN-ELSE語句的實例
7.5IF-THEN-ELSIF語句的實例
7.6CASE錶達式
7.7CASE語句
7.8GOTO語句
7.9您應該掌握的內容
第8章PL/SQL語言的循環語句
視頻講解:7集22分鍾
8.1重復控製——循環語句及基本循環語句的語法
8.2基本循環語句的實例
8.3WHILE循環
8.4FOR循環
8.5反嚮FOR循環及使用循環的指導原則
8.6循環的嵌套和標號
8.7Oracle11g和Oracle12c引入的CONTINUE語句
8.8您應該掌握的內容
第9章PL/SQL中常用的組閤數據類型
視頻講解:10集32分鍾
9.1組閤數據類型概述
9.2PL/SQL記錄類型數據以及創建它的語法
9.3PL/SQL語言中的%ROWTYPE屬性
9.4使用%ROWTYPE屬性聲明記錄
9.5利用%ROWTYPE屬性插入和修改記錄
9.6INDEXBY錶或PL/SQL錶
9.7INDEXBY錶的應用實例
9.8INDEXBY錶的方法及使用實例
9.9INDEXBY記錄錶
9.10您應該掌握的內容
第10章SQL遊標(cursor)
視頻講解:6集27分鍾
10.1SQL隱式cursor的屬性及其應用實例
10.2顯式cursor概述
10.3控製顯式cursor
10.4聲明(顯式)cursor
10.5打開(顯式)cursor及從中提取數據
10.6關閉顯式cursor及使用它的屬性
10.7利用循環及屬性控製cursor的實例
10.8cursor與記錄
10.9您應該掌握的內容
第11章顯式cursor的高級功能
視頻講解:6集16分鍾
11.1cursor的FOR循環
11.2在cursor的FOR循環中使用子查詢
11.3在cursor定義中使用子查詢
11.4帶參數的cursor
11.5FORUPDATE子句
11.6WHERECURRENTOF子句
11.7您應該掌握的內容
第12章PL/SQL程序中的異常處理
視頻講解:7集25分鍾
12.1異常處理概述
12.2PL/SQL中的異常處理
12.3如何捕獲異常
12.4如何捕獲預定義的Oracle服務器錯誤
12.5如何捕獲非預定義的Oracle服務器錯誤
12.6捕獲異常的兩個函數
12.7捕獲用戶定義的異常
12.8在程序塊中異常的捕獲與傳播
12.9RAISE_APPLICATION_ERROR過程
12.10您應該掌握的內容
第13章過程的創建、維護和刪除
視頻講解:7集33分鍾
13.1模塊化與分層的子程序設計
13.2PL/SQL的子程序
13.3過程的定義及創建
13.4創建過程的語法
13.5過程的參數模式(方式)
13.6使用IN參數模式的實例
13.7使用OUT參數模式的實例
13.8使用INOUT參數模式的實例
13.9傳遞實參的錶示法
13.10在PL/SQL程序中調用一個過程
13.11在SQLDeveloper中調用過程
13.12在過程中聲明和調用另一個過程
13.13在過程中處理異常
13.14在過程中沒有處理異常
13.15過程的發現與刪除
13.16您應該掌握的內容
第14章函數的創建、維護和刪除
視頻講解:6集23分鍾
14.1函數的概述以及創建函數的語法
14.2使用SQL*Plus或SQLDeveloper創建函數
14.3創建和調用存儲函數的實例
14.4在SQLDeveloper中開發、調試和調用函數
14.5在SQL錶達式中使用用戶定義的函數
14.6從SQL錶達式中調用函數的限製
14.7從SQL中用名字錶示法或混閤錶示法調用函數
14.8函數的發現與刪除以及函數與過程的比較
14.9您應該掌握的內容
第15章PL/SQL軟件包
視頻講解:5集21分鍾
15.1PL/SQL軟件包概述
15.2PL/SQL軟件包的組件及可見性
15.3PL/SQL軟件包的開發方法
15.4創建PL/SQL軟件包的說明
15.5創建PL/SQL軟件包體
15.6創建和使用無體的PL/SQL軟件包
15.7軟件包的發現與刪除
15.8在SQLDeveloper中開發和編譯軟件包說明
15.9在SQLDeveloper中開發和編譯軟件包體
15.10在SQLDeveloper中運行軟件包
15.11您應該掌握的內容
第16章PL/SQL軟件包的高級特性和功能
視頻講解:9集32分鍾
16.1在PL/SQL中子程序的重載
16.2創建帶有重載過程的軟件包的實例
16.3STANDARD軟件包與子程序重載
16.4前嚮引用(ForwardReferences)所造成的問題
16.5前嚮聲明(ForwardDeclarations)
16.6軟件包的初始化
16.7在SQL中使用軟件包中的函數
16.8軟件包中變量的持續狀態
16.9軟件包變量持續狀態的實例
16.10軟件包中cursor的持續狀態
16.11在軟件包中使用PL/SQL記錄錶(記錄數組)
16.12您應該掌握的內容
第17章數據庫觸發器
視頻講解:6集48分鍾
17.1觸發器概述
17.2觸發器的應用範圍、設計原則以及分類
17.3DML觸發器的創建
17.4觸發器觸發的順序
17.5創建和測試語句觸發器的實例
17.6帶有條件謂詞的語句觸發器的實例
17.7創建和測試DML行觸發器
17.8在行觸發器中使用OLD和NEW限定符
17.9在行觸發器中使用OLD和NEW限定符的實例
17.10利用WHEN子句有條件觸發行觸發器
17.11觸發器執行模型概要及實現完整性約束的準備
17.12利用觸發器來實現完整性約束
17.13INSTEADOF觸發器及實例的準備工作
17.14創建INSTEADOF觸發器的實例
17.15INSTEADOF觸發器的測試實例
17.16觸發器的管理與維護及與過程的比較
17.17觸發器的管理與維護的實例
17.18您應該掌握的內容
第18章批量綁定及高級觸發器特性
視頻講解:7集40分鍾
18.1批量綁定概述及批量綁定的語法
18.2批量綁定FORALL的實例
18.3cursor屬性%BULK_ROWCOUNT的應用
18.4在查詢語句中使用BULKCOLLECTINTO子句
18.5在FETCH語句中使用BULKCOLLECTINTO子句
18.6帶有RETURNING和BULKCOLLECTINTO關鍵字的FORALL語句
18.7利用Index數組進行批量綁定
18.8利用RETURNING子句將DML語句的結果直接裝入變量
18.9變異錶及在變異錶上觸發器的限製
18.10復閤觸發器(compoundtrigger)概述
18.11利用復閤觸發器解決變異錶的錯誤
18.12創建基於DDL語句或基於係統事件的觸發器
18.13用戶登錄和退齣觸發器的創建和測試
18.14觸發器中的CALL語句
18.15數據庫事件觸發器的優點以及設計、管理和維護觸發器要注意的事項
18.16您應該掌握的內容
第19章PL/SQL程序代碼設計上的考慮、Oracle自帶軟件包及數據庫優化簡介
視頻講解:8集46分鍾
19.1常量和異常的標準化概述
19.2標準化異常和標準化異常處理
19.3標準化常量
19.4本地子程序的應用
19.5程序的定義者權限與調用者權限
19.6自治事物
19.7使用自治事物的實例
19.8Oracle提供(自帶)的軟件包簡介
19.9計算機內外存以及係統優化簡介
19.10將程序常駐內存
19.11將數據緩存在內存中
19.12將數據常駐內存
19.13將查詢的結果緩存在內存
19.14跨會話的PL/SQL函數結果緩存
19.15您應該掌握的內容
第20章導齣程序的源代碼以及源代碼加密
20.1以命令行方式獲取數據庫係統的設計
20.2導齣存儲程序的接口參數
20.3導齣存儲程序的源代碼
20.4導齣觸發器的類型、觸發事件、描述及源代碼
20.5PL/SQL源代碼加密及動態加密
20.6使用CREATE_WRAPPED過程加密PL/SQL源代碼
20.7使用CREATE_WRAPPED過程加密較長的代碼
20.8PL/SQL封裝實用程序簡介
20.9PL/SQL封裝實用程序應用實例
20.10加密的原則及DBMS_DDL與Wrap的比較
20.11您應該掌握的內容
結束語
參考文獻
深入理解 Oracle PL/SQL:構建高效數據庫應用 在現代信息技術飛速發展的浪潮中,數據已成為驅動各行各業的核心要素。而數據庫,作為管理和存儲這些寶貴數據的基石,其重要性不言而喻。在眾多數據庫係統中,Oracle以其強大的功能、卓越的性能和廣泛的應用領域,占據著舉足輕重的地位。而PL/SQL,作為Oracle數據庫的內置過程化語言,更是解鎖Oracle數據庫強大潛力的關鍵。它能夠讓開發者在數據庫內部編寫復雜的邏輯,實現高效的數據處理、業務規則的實現以及應用程序的定製化開發。 本書並非是傳統意義上枯燥的語法堆砌,而是旨在引領您踏上一段全麵而深入的Oracle PL/SQL學習之旅。我們將從最基礎的概念入手,逐步深入到PL/SQL的精髓,最終讓您能夠獨立設計和開發齣高性能、高可靠性的Oracle數據庫應用程序。我們強調的不是死記硬背,而是理解其背後的原理,掌握其靈活的應用技巧,最終將PL/SQL的強大能力融入您的實際開發工作中。 為何選擇PL/SQL? 在開始我們的旅程之前,讓我們先探討一下為什麼PL/SQL在Oracle開發中如此重要。簡單來說,PL/SQL將SQL的強大聲明式查詢能力與過程化編程的靈活性相結閤。這意味著您無需將所有數據通過網絡傳輸到應用程序服務器進行處理,然後將其寫迴數據庫。相反,您可以直接在數據庫服務器內部執行復雜的邏輯,這帶來瞭顯著的性能優勢: 減少網絡流量: 大量數據不必在客戶端和服務器之間傳輸,顯著提高瞭應用程序的響應速度,尤其是在處理大量數據時。 提高處理效率: 數據庫服務器是為數據處理而優化的,在數據庫內部執行邏輯通常比在應用程序層執行效率更高。 增強數據安全性: 將業務邏輯封裝在數據庫的存儲過程和函數中,可以更好地控製數據訪問和修改,提高數據的安全性。 實現代碼重用: PL/SQL的存儲過程、函數和包允許您創建可重用的代碼模塊,這使得開發和維護更加便捷高效。 更好地管理業務規則: 復雜的業務規則和約束可以直接在數據庫層麵實現,確保數據的一緻性和完整性。 本書的學習路綫圖 本書將以一種循序漸進、由淺入深的方式引導您掌握Oracle PL/SQL。我們將精心設計每一章的內容,確保理論知識與實踐操作緊密結閤,讓您在學習過程中能夠融會貫通,真正做到學以緻用。 第一部分:PL/SQL基礎入門 Oracle數據庫與SQL基礎迴顧: 在深入PL/SQL之前,我們有必要對Oracle數據庫的基本架構以及SQL語言的核心概念進行一個快速但全麵的迴顧。這包括理解數據庫對象(錶、視圖、索引等)、SQL的基本查詢(SELECT, INSERT, UPDATE, DELETE)、常用函數以及數據約束。這部分內容將為後續PL/SQL的學習打下堅實的基礎,確保所有讀者都擁有相同的起點。 PL/SQL的誕生與核心理念: 我們將介紹PL/SQL的曆史背景,以及它為何成為Oracle數據庫不可或缺的一部分。您將瞭解PL/SQL與標準SQL的區彆,理解其過程化語言的特性,並初步接觸PL/SQL塊(Block)的基本結構。 第一個PL/SQL程序: 理論結閤實踐,我們將引導您編寫第一個簡單的PL/SQL程序,例如打印“Hello, World!”。通過這個過程,您將熟悉PL/SQL的開發環境(如SQLPlus, SQL Developer),瞭解如何編寫、編譯和執行PL/SQL代碼,並學習如何處理基本輸齣。 PL/SQL變量與數據類型: 變量是任何編程語言中的基本構建塊。本章將詳細介紹PL/SQL中各種基本數據類型(如NUMBER, VARCHAR2, DATE, BOOLEAN等),以及如何聲明、初始化和使用變量。我們將深入講解不同數據類型的特性和適用場景,幫助您寫齣更精確、更高效的代碼。 PL/SQL中的流程控製結構: 掌握流程控製是編寫復雜邏輯的關鍵。我們將詳細講解PL/SQL中的條件語句(IF-THEN-ELSIF-ELSE, CASE語句)和循環語句(LOOP, WHILE LOOP, FOR LOOP)。通過大量的實例,您將學會如何根據不同的條件執行不同的代碼塊,以及如何重復執行某個任務直到滿足特定條件。 SQL與PL/SQL的融閤: PL/SQL最強大的地方在於能夠無縫地與SQL結閤。本章將深入講解如何在PL/SQL中執行SQL語句,包括使用`SELECT INTO`語句將查詢結果賦值給變量,以及如何進行數據修改(INSERT, UPDATE, DELETE)操作。您還將學習如何使用`BULK COLLECT INTO`進行批量數據檢索,大幅提升性能。 第二部分:PL/SQL的高級特性與應用 異常處理機製: 在實際開發中,錯誤是不可避免的。PL/SQL提供瞭強大的異常處理機製,能夠優雅地捕獲和處理運行時錯誤。我們將介紹預定義異常(如NO_DATA_FOUND, TOO_MANY_ROWS)和用戶自定義異常,以及如何使用`EXCEPTION`塊來處理異常,保證程序的健壯性。 遊標(Cursor)詳解: 遊標是PL/SQL中處理多行查詢結果的重要工具。我們將詳細講解顯式遊標和隱式遊標的概念,以及如何聲明、打開、讀取、關閉遊標,並演示如何使用遊標進行行數據的逐條處理。同時,我們也將介紹遊標的屬性(如%FOUND, %NOTFOUND, %ROWCOUNT, %ISOPEN)及其應用。 記錄(Record)與集閤(Collection): 記錄(Record)允許您將多個不同類型的數據項組閤成一個邏輯單元,類似於結構體;而集閤(Collection)則提供瞭在PL/SQL中處理數組、列錶等數據結構的能力。本章將詳細介紹PL/SQL中各種集閤類型(VARRAY, Nested Table, Associative Array),並演示如何創建、操作和使用它們,實現更靈活的數據管理。 觸發器(Trigger)的強大威力: 觸發器是一種特殊的存儲過程,它會在某個數據庫事件(如INSERT, UPDATE, DELETE)發生時自動執行。我們將深入講解觸發器的分類(行級觸發器、語句級觸發器)、觸發時機(BEFORE, AFTER)以及如何編寫和管理觸發器,以實現數據驗證、審計、級聯操作等高級功能。 存儲過程(Stored Procedure)與函數(Function): 存儲過程和函數是PL/SQL代碼重用和封裝的核心。本章將詳細講解它們的定義、參數傳遞(IN, OUT, IN OUT)、返迴值以及如何調用。我們將演示如何將復雜的業務邏輯封裝到存儲過程和函數中,提高代碼的可維護性和復用性。 包(Package)的組織與管理: 當項目規模增大時,將相關的存儲過程、函數、變量和類型組織在一個包中,可以極大地提高代碼的可維護性和可讀性。我們將講解包的規範(Package Specification)和包體(Package Body)的區彆,以及如何使用包來管理和暴露PL/SQL對象。 第三部分:PL/SQL性能優化與實戰技巧 PL/SQL性能優化的關鍵原則: 編寫高效的PL/SQL代碼是成功的關鍵。本章將探討影響PL/SQL性能的常見因素,並介紹一些基本的優化原則,例如減少上下文切換、避免不必要的SQL解析、閤理使用集閤等。 SQL與PL/SQL的交互優化: 如何高效地在SQL語句和PL/SQL代碼之間傳遞數據是性能優化的重點。我們將深入講解`BULK COLLECT`和`FORALL`語句,以及它們在批量數據處理中的巨大優勢,對比其與傳統逐行處理的性能差異。 PL/SQL中的動態SQL: 在某些情況下,SQL語句需要在運行時纔能確定。本章將介紹PL/SQL中的動態SQL技術,包括`EXECUTE IMMEDIATE`和`DBMS_SQL`包,並講解如何安全、有效地使用它們,同時強調其潛在的SQL注入風險和防範措施。 高級PL/SQL特性與調試技巧: 我們將進一步探討一些更高級的PL/SQL特性,例如自治事務、管道化錶函數等,並分享實用的調試技巧,例如使用`DBMS_OUTPUT`、SQLPlus的`SET SERVEROUTPUT ON`命令,以及SQL Developer等IDE的調試工具,幫助您快速定位和解決問題。 實際項目案例分析: 為瞭鞏固所學知識,我們將通過分析幾個典型的實際項目案例,例如訂單處理、報錶生成、數據同步等,來演示如何將PL/SQL的各項技術應用於實際開發中。通過這些案例,您將能夠更好地理解PL/SQL在解決實際業務問題中的強大作用。 本書的特色 清晰的邏輯結構: 內容從易到難,層層遞進,確保讀者能夠輕鬆掌握。 豐富的實例: 大量貼近實際應用的代碼示例,幫助讀者快速理解概念並上手實踐。 深入的原理講解: 不僅關注“怎麼做”,更關注“為什麼這樣做”,幫助讀者深入理解PL/SQL的底層機製。 實戰導嚮: 強調將理論知識應用於實際開發,通過案例分析加深理解。 注重性能優化: 貫穿全書的性能優化理念,讓讀者能夠寫齣更高效的PL/SQL代碼。 無論您是數據庫初學者,還是有一定SQL基礎但想深入掌握PL/SQL的開發者,亦或是希望提升Oracle數據庫應用開發能力的資深技術人員,本書都將是您不可或缺的學習夥伴。通過本書的學習,您將能夠自信地構建齣更加復雜、高效、可靠的Oracle數據庫應用程序,在數據驅動的時代脫穎而齣。讓我們一起開啓這段精彩的PL/SQL探索之旅吧!