關(guān)于我們
書單推薦
新書推薦
|
Oracle PL/SQL從入門到精通 讀者對象:適合于使用pl/sql進行應(yīng)用程序開發(fā)的人員、對軟件開發(fā)有興趣的學(xué)生及愛好者; 對數(shù)據(jù)庫管理員、企業(yè)it運維人員也具有很強的指導(dǎo)作用
《Oracle PL/SQL從入門到精通》以面向應(yīng)用為原則,深入淺出的介紹了oracle平臺上使用pl/sql語言進行數(shù)據(jù)庫開發(fā)的技術(shù)。通過大量的示例,詳細介紹了pl/sql的語言特性、使用技巧,同時配以2個在實際工作中的示例來深入的剖析了pl/sql進行oracle開發(fā)的方方面面。
《Oracle PL/SQL從入門到精通》附帶1張dvd光盤,內(nèi)容為作者為《Oracle PL/SQL從入門到精通》錄制的全程語音教學(xué)視頻及本書所涉及的源代碼。 《Oracle PL/SQL從入門到精通》共分為20章,分為5大篇。涵蓋的內(nèi)容主要有pl/sql語言基礎(chǔ)、開發(fā)環(huán)境、變量與類型、控制語句、數(shù)據(jù)表的管理和查詢、數(shù)據(jù)表的操縱、使用pl/sql的記錄與集合、各種內(nèi)置函數(shù)、游標(biāo)、事務(wù)處理、異常處理、子程序、包、面向?qū)ο蟮拈_發(fā)等等技術(shù)點。通過示例性的代碼,由淺入深,詳細介紹了每一個技術(shù)要點在實際工作中的應(yīng)用,對于各種技術(shù)要點的應(yīng)用場合進行了細致的分析。 《Oracle PL/SQL從入門到精通》適合于使用pl/sql進行應(yīng)用程序開發(fā)的人員、對軟件開發(fā)有興趣的學(xué)生及愛好者;對數(shù)據(jù)庫管理員、企業(yè)it運維人員也具有很強的指導(dǎo)作用。 超值DVD光盤 《Oracle PL/SQL從入門到精通》配套教學(xué)視頻 《Oracle PL/SQL從入門到精通》源代碼 15.5小時Oracle入門教學(xué)視頻
涵蓋PL/SQL的各種技術(shù)細節(jié),提供系統(tǒng)化的學(xué)習(xí)方案
對PL/SQL開發(fā)用到的各種技術(shù)做了原理分析和實戰(zhàn)體驗 7.8小時教學(xué)視頻,300個經(jīng)典實例,2個項目案例 真正做到了從程序員的視角剖析PL/SQL的應(yīng)用 深入淺出地介紹PL/SQL在實際開發(fā)中的要點 提供各種實際應(yīng)用場景,將知識點快速應(yīng)用于實際開發(fā) 代碼精煉,注釋豐富,通過研讀代碼,便可獲得大量經(jīng)驗
為什么要寫這本書
隨著計算機信息技術(shù)的飛速發(fā)展,數(shù)據(jù)存儲已經(jīng)成為很多公司越來越重視的問題。Oracle公司的數(shù)據(jù)庫管理軟件以其穩(wěn)定、高效和靈活性,一直是各大企事業(yè)單位后臺存儲的首選。Oracle系統(tǒng)本身的復(fù)雜性,使得很多剛?cè)腴T的開發(fā)人員不知從何入手,盡管Oracle公司提供了大量的文檔,但是這些文檔大多為英文版本,每個文檔都偏重于某一技術(shù)細節(jié),沒有提供系統(tǒng)的、適合我國程序員思維的學(xué)習(xí)材料。 目前在市面上關(guān)于PL/SQL的圖書并不是很多,特別是由國內(nèi)程序員經(jīng)驗總結(jié)的圖書更是寥寥無幾。本書作者站在一線開發(fā)人員的視角,通過簡潔輕松的文字,簡短精練的示例代碼,以力求讓不同層次的開發(fā)人員盡快掌握Oracle數(shù)據(jù)庫開發(fā)為主旨編寫了本書,同時在本書最后還提供了兩個實戰(zhàn)項目,讓開發(fā)人員能夠通過項目學(xué)習(xí)PL/SQL開發(fā),提高實際開發(fā)水平和項目實戰(zhàn)能力。 本書有何特色 1.附帶多媒體語音教學(xué)視頻,提高學(xué)習(xí)效率 為了便于讀者理解本書內(nèi)容,提高學(xué)習(xí)效率,作者專門為每一章內(nèi)容都錄制了大量的多媒體語音教學(xué)視頻。這些視頻和本書涉及的源代碼一起收錄于配書光盤中。 2.涵蓋PL/SQL語言的各種技術(shù)細節(jié),提供系統(tǒng)化的學(xué)習(xí)思路 本書涵蓋了PL/SQL語言在實際項目中需要重點掌握的所有方面,包含語言基礎(chǔ)、開發(fā)環(huán)境、常量和變量的定義、基本的控制結(jié)構(gòu)、基本的SQL操作知識(比如查詢、插入、修改和刪除)、記錄和集合、游標(biāo)、SQL的內(nèi)置函數(shù)、事務(wù)處理、異常處理機制、子程序、包、觸發(fā)器、面向?qū)ο蟮拈_發(fā)及動態(tài)SQL語句等知識點。 3.對PL/SQL開發(fā)的各種技術(shù)做了原理分析和實戰(zhàn)體驗 全書使用簡潔質(zhì)樸的文字,配以大量的插圖,將一些難以理解的原理部分進行了重點剖析,讓讀者不僅知曉實現(xiàn)的原理,通過圖形化的展現(xiàn)方式,更能加強對原理的理解,同時配以大量的示例對技術(shù)要點在實際工作中的應(yīng)用進行了詳解,讓讀者能盡快上手。 4.應(yīng)用驅(qū)動,實用性強 對于每段示例代碼,都進行了仔細的錘煉,提供了各種實際應(yīng)用的場景,力求讓應(yīng)用開發(fā)人員將這些知識點盡快應(yīng)用到實際的開發(fā)過程中。 5.項目案例典型,實戰(zhàn)性強,有較高的應(yīng)用價值 本書最后一篇提供了兩個項目實戰(zhàn)案例。這些案例來源于作者所開發(fā)的實際項目,具有很高的應(yīng)用價值和參考性。而且這些案例分別使用不同的PL/SQL技術(shù)實現(xiàn),便于讀者融會貫通地理解本書中所介紹的技術(shù)。這些案例稍加修改,便可用于實際項目開發(fā)中。 6.提供完善的技術(shù)支持和售后服務(wù) 讀者在閱讀本書過程中有任何疑問都可以通過該郵箱獲得幫助。 本書內(nèi)容及知識體系 第1篇PL/SQL開發(fā)入門(第1~4章) 本篇介紹了Oracle的組成架構(gòu)和PL/SQL開發(fā)的基礎(chǔ)知識。主要包括Oracle體系結(jié)構(gòu)、PL/SQL開發(fā)環(huán)境、PL/SQL的總體概覽、常量和變量的定義,以及基本的PL/SQL控制結(jié)構(gòu)。 第2篇PL/SQL開發(fā)基礎(chǔ)(第5~12章) 本篇是PL/SQL進行實際開發(fā)時必備的基礎(chǔ)知識,包含使用OracleSQL語句對數(shù)據(jù)表的查詢、操縱;各種Oracle數(shù)據(jù)庫對象的管理,比如同義詞和序列等;同時對PL/SQL的記錄與集合、各種SQL內(nèi)置函數(shù)、游標(biāo)、事務(wù)處理、鎖定以及PL/SQL異常處理機制進行了詳細的介紹。 第3篇PL/SQL進階編程(第13~16章) 本篇討論了PL/SQL模塊化編程相關(guān)的子程序、包、觸發(fā)器的使用,這部分是實際工作中需要努力鞏固的知識點,同時介紹了本地動態(tài)SQL技術(shù)的使用。這一篇的知識點是每個PL/SQL程序員必備的技能,在介紹形式上通過輔以大量與實際場景相結(jié)合的代碼,提升開發(fā)人員的實戰(zhàn)經(jīng)驗。 第4篇PL/SQL高級編程(第17~18章) 本篇的內(nèi)容針對已經(jīng)熟練掌握了前面幾篇的內(nèi)容的開發(fā)人員,在具有了一定的PL/SQL開發(fā)經(jīng)驗后,可以通過本篇的內(nèi)容學(xué)習(xí)使用面向?qū)ο蟮乃季S來開發(fā)PL/SQL應(yīng)用程序,同時對于PL/SQL開發(fā)過程中的一些性能優(yōu)化的注意事項進行了示例詳解(提升開發(fā)人員的實戰(zhàn)經(jīng)驗)。 第5篇PL/SQL案例實戰(zhàn)(第19~20章) 本篇通過兩個實際的項目案例,從需求分析、數(shù)據(jù)庫表的設(shè)計、系統(tǒng)的總體規(guī)劃開始,到包規(guī)范的定義、包體的具體實現(xiàn),詳細剖析一個PL/SQL的實現(xiàn)生命周期,通過對這兩個案例的一步一步深入體驗,能讓開發(fā)人員立即上手開始進行PL/SQL項目的開發(fā)。同時對這兩個案例稍加修改,就能應(yīng)用到實際的項目開發(fā)中。 配書光盤內(nèi)容介紹 為了方便讀者閱讀本書,本書附帶1張DVD光盤,內(nèi)容如下。 *本書所有實例的源代碼; *本書每章內(nèi)容的多媒體語音教學(xué)視頻; *免費贈送的Oracle入門教學(xué)視頻。 適合閱讀本書的讀者 *需要全面學(xué)習(xí)OraclePL/SQL開發(fā)技術(shù)的人員; *數(shù)據(jù)庫開發(fā)程序員; *應(yīng)用程序開發(fā)人員; *Oracle數(shù)據(jù)庫管理人員; *希望提高項目開發(fā)水平的人員; *專業(yè)培訓(xùn)機構(gòu)的學(xué)員; *軟件開發(fā)項目經(jīng)理; *需要一本PL/SQL案頭必備查詢手冊的人員。 閱讀本書的建議 *沒有OraclePL/SQL基礎(chǔ)的讀者,建議從第1章順次閱讀并演練每一個示例。 *有一定OraclePL/SQL基礎(chǔ)的讀者,可以根據(jù)實際情況有重點地選擇閱讀各個技術(shù)要點。 *對于每一個知識點和項目案例,先通讀一遍有個大概印象,然后對于每個知識點的示例代碼都在開發(fā)環(huán)境中操作一遍,加深對知識點的印象。 *結(jié)合光盤中提供的多媒體教學(xué)視頻再理解一遍,這樣理解起來就更加容易,也會更加深刻。 筆者寫作本書雖然耗費了大量精力,力爭消滅錯誤,但恐百密難免一疏。 編著者
丁士鋒,2001年畢業(yè)于國防科技大學(xué)計算機學(xué)院。有多年的數(shù)據(jù)庫軟件開發(fā)與設(shè)計經(jīng)驗,深入理解數(shù)據(jù)庫系統(tǒng)在企業(yè)信息化進程中的應(yīng)用。多次主導(dǎo)與架構(gòu)基于Oracle、SQL Server及IBM DB2等大型數(shù)據(jù)庫系統(tǒng)的集團式信息管理系統(tǒng)建設(shè)。多次參與數(shù)據(jù)庫平臺的搭建與各種核心數(shù)據(jù)庫程序代碼的實現(xiàn)。著有《Oracle PL/SQL從入門到精通》、《《精通C# 5.0與.NET 4.5高級編程:LINQ、WCF、WPF和WF》、《網(wǎng)頁制作與網(wǎng)站建設(shè)實戰(zhàn)大全》等多本廣受讀者好評的計算機暢銷圖書。
第1篇 pl/sql開發(fā)入門
第1章 oracle 11g數(shù)據(jù)庫系統(tǒng) 1.1 關(guān)系型數(shù)據(jù)庫系統(tǒng)介紹 1.1.1 什么是關(guān)系型數(shù)據(jù)模型 1.1.2 數(shù)據(jù)庫系統(tǒng)范式 1.1.3 關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 1.1.4 使用sql語句與數(shù)據(jù)庫管理系統(tǒng)通信 1.2 初識oracle 11g 1.2.1 oracle 11g簡介 1.2.2 oracle 11g體系結(jié)構(gòu) 1.2.3 如何創(chuàng)建數(shù)據(jù)庫 1.2.4 比較oracle數(shù)據(jù)庫與sql server數(shù)據(jù)庫 1.3 什么是pl/sql 1.3.1 pl/sql是一種語言 1.3.2 pl/sql的執(zhí)行環(huán)境 1.4 搭建pl/sql開發(fā)環(huán)境 1.4.1 使用sql*plus 1.4.2 使用oracle sql developer 1.4.3 pl/sql developer開發(fā)pl/sql 1.4.4 quest toad開發(fā)pl/sql 1.4.5 使用oracle文檔庫 1.5 小結(jié) 第2章 pl/sql基本概念 2.1 功能特點 2.1.1 結(jié)構(gòu)化程序設(shè)計 2.1.2 與sql語言整合 2.1.3 面向?qū)ο箝_發(fā) 2.1.4 模塊化應(yīng)用程序開發(fā) 2.1.5 提高應(yīng)用程序性能 2.2 語言特性 2.2.1 pl/sql塊結(jié)構(gòu) 2.2.2 變量和類型 2.2.3 程序控制語句 2.2.4 過程、函數(shù)與包 2.2.5 觸發(fā)器 2.2.6 結(jié)構(gòu)化異常處理 2.2.7 集合與記錄 2.2.8 游標(biāo) 2.2.9 動態(tài)sql 2.3 編碼風(fēng)格 2.3.1 pl/sql詞法單位 2.3.2 縮進 2.3.3 標(biāo)識符命名規(guī)則 2.3.4 大小寫風(fēng)格 2.3.5 使用工具格式化代碼 2.4 小結(jié) 第3章 變量和類型 3.1 變量 3.1.1 變量的聲明 3.1.2 變量的賦值 3.1.3 使用%type 3.1.4 使用%rowtype 3.1.5 變量的作用域和可見性 3.1.6 常量的定義 3.2 數(shù)據(jù)類型 3.2.1 字符類型 3.2.2 數(shù)字類型 3.2.3 日期和時間類型 3.2.4 布爾類型 3.2.5 lob對象類型 3.2.6 引用類型 3.2.7 復(fù)合類型 3.2.8 用戶自定義子類型 3.2.9 數(shù)據(jù)類型轉(zhuǎn)換 3.3 運算符和表達式 3.3.1 運算符類型 3.3.2 運算符的優(yōu)先級 3.3.3 表達式類型 3.4 小結(jié) 第4章 pl/sql控制語句 4.1 分支控制語句 4.1.1 if-then-else語句 4.1.2 if-then-elsif語句 4.1.3 case語句 4.1.4 搜索case語句 4.2 循環(huán)控制語句 4.2.1 loop循環(huán) 4.2.2 使用exit退出循環(huán) 4.2.3 使用exit-when退出循環(huán) 4.2.4 使用continue繼續(xù)執(zhí)行循環(huán) 4.2.5 while-loop循環(huán) 4.2.6 for-loop循環(huán) 4.2.7 循環(huán)語句使用建議 4.3 順序控制語句 4.3.1 goto語句和標(biāo)簽 4.3.2 null語句 4.4 小結(jié) 第2篇 pl/sql開發(fā)基礎(chǔ) 第5章 管理數(shù)據(jù)表 5.1 創(chuàng)建表 5.1.1 數(shù)據(jù)定義語言ddl 5.1.2 create table語句 5.1.3 在設(shè)計器中創(chuàng)建表 5.1.4 創(chuàng)建表副本 5.2 創(chuàng)建約束 5.2.1 創(chuàng)建主鍵約束 5.2.2 創(chuàng)建外鍵約束 5.2.3 創(chuàng)建檢查約束 5.2.4 查看表約束 5.3 修改表 5.3.1 修改表列 5.3.2 修改約束 5.3.3 移除數(shù)據(jù)表 5.3.4 在設(shè)計器中修改表 5.4 索引 5.4.1 索引簡介 5.4.2 索引原理 5.4.3 創(chuàng)建索引 5.4.4 修改索引 5.4.5 刪除索引 5.5 使用視圖 5.5.1 視圖簡介 5.5.2 創(chuàng)建視圖 5.5.3 修改視圖 5.5.4 刪除視圖 5.6 小結(jié) 第6章 查詢數(shù)據(jù)表 6.1 簡單查詢 6.1.1 查詢表數(shù)據(jù) 6.1.2 指定查詢條件 6.1.3 排序 6.1.4 使用函數(shù) 6.1.5 統(tǒng)計函數(shù) 6.1.6 分組統(tǒng)計 6.1.7 having子句 6.1.8 使用dual表 6.1.9 rownum偽列 6.1.10 rowid偽列 6.2 復(fù)雜查詢 6.2.1 多表連接查詢 6.2.2 使用子查詢 6.2.3 表集合操作 6.2.4 層次化查詢 6.3 小結(jié) 第7章 操縱數(shù)據(jù)表 7.1 插入記錄 7.1.1 數(shù)據(jù)操縱語言dml 7.1.2 插入單行記錄 7.1.3 插入默認值和null值 7.1.4 使用子查詢插入多行數(shù)據(jù) 7.1.5 使用insert插入多表數(shù)據(jù) 7.2 更新記錄 7.2.1 更新單行記錄 7.2.2 使用子查詢更新記錄 7.2.3 使用merge合并表行 7.3 刪除記錄 7.3.1 刪除單行記錄 7.3.2 使用子查詢刪除記錄 7.3.3 使用truncate清除表數(shù)據(jù) 7.4 提交和回滾記錄 7.4.1 提交更改 7.4.2 回滾更改 7.5 使用序列 7.5.1 序列簡介 7.5.2 創(chuàng)建數(shù)據(jù)序列 7.5.3 nextval和currval偽列 7.5.4 使用數(shù)據(jù)序列 7.5.5 修改序列 7.5.6 刪除序列 7.6 同義詞 7.6.1 同義詞簡介 7.6.2 創(chuàng)建和使用同義詞 7.7 小結(jié) 第8章 記錄與集合 8.1 記錄類型 8.1.1 記錄類型簡介 8.1.2 定義記錄類型 8.1.3 記錄類型賦值 8.1.4 操縱記錄類型 8.1.5 使用嵌套記錄 8.2 理解集合類型 8.2.1 集合簡介 8.2.2 定義索引表 8.2.3 操縱索引表 8.2.4 定義嵌套表 8.2.5 操縱嵌套表 8.2.6 數(shù)據(jù)庫中的嵌套表 8.2.7 定義變長數(shù)組 8.2.8 操縱變長數(shù)組 8.2.9 數(shù)據(jù)庫中的變長數(shù)組 8.2.10 選擇集合類型 8.3 使用集合方法 8.3.1 使用exists方法 8.3.2 使用count方法 8.3.3 使用limit方法 8.3.4 first和last方法 8.3.5 prior和next方法 8.3.6 extend方法 8.3.7 trim方法 8.3.8 delete方法 8.3.9 集合的異常處理 8.3.10 使用批量綁定 8.3.11 使用bulk collect 8.4 小結(jié) 第9章 sql內(nèi)置函數(shù) 9.1 基本函數(shù) 9.1.1 字符型函數(shù) 9.1.2 數(shù)字型函數(shù) 9.1.3 日期時間函數(shù) 9.1.4 類型轉(zhuǎn)換函數(shù) 9.1.5 分組函數(shù) 9.1.6 其他函數(shù) 9.2 oracle分析函數(shù) 9.2.1 什么是分析函數(shù) 9.2.2 基本語法 9.2.3 分析函數(shù)結(jié)構(gòu) 9.2.4 分析函數(shù)列表 9.3 分析函數(shù)使用示例 9.3.1 記錄排名 9.3.2 首尾記錄查詢 9.3.3 前后排名查詢 9.3.4 層次查詢 9.3.5 范圍統(tǒng)計查詢 9.3.6 相鄰記錄比較 9.3.7 抑制重復(fù) 9.3.8 行列轉(zhuǎn)換查詢 9.3.9 在pl/sql中使用分析函數(shù) 9.4 小結(jié) 第10章 使用游標(biāo) 10.1 游標(biāo)基本結(jié)構(gòu) 10.1.1 游標(biāo)簡介 10.1.2 游標(biāo)分類 10.1.3 定義游標(biāo)類型 10.1.4 打開游標(biāo) 10.1.5 使用游標(biāo)屬性 10.1.6 提取游標(biāo)數(shù)據(jù) 10.1.7 批量提取游標(biāo)數(shù)據(jù) 10.1.7 關(guān)閉游標(biāo) 10.2 操縱游標(biāo)數(shù)據(jù) 10.2.1 loop循環(huán) 10.2.2 while循環(huán) 10.2.3 游標(biāo)for循環(huán) 10.2.4 修改游標(biāo)數(shù)據(jù) 10.3 游標(biāo)變量 10.3.1 游標(biāo)變量簡介 10.3.2 聲明游標(biāo)變量類型 10.3.3 定義游標(biāo)變量 10.3.4 打開游標(biāo)變量 10.3.5 控制游標(biāo)變量 10.3.7 處理游標(biāo)變量異常 10.3.8 在包中使用游標(biāo)變量 10.3.9 游標(biāo)變量的限制 10.4 小結(jié) 第11章 事務(wù)處理和鎖定 11.1 事務(wù)處理簡介 11.1.1 什么是事務(wù)處理 11.1.2 使用commit提交事務(wù) 11.1.3 使用rollback回滾事務(wù) 11.1.4 使用savepoint保存點 11.1.5 使用set transaction設(shè)置事務(wù)屬性 11.2 使用鎖定 11.2.1 理解鎖定 11.2.2 記錄鎖定 11.2.3 表鎖定 11.2.4 使用lock table 11.3 小結(jié) 第12章 異常處理機制 12.1 理解異常處理 12.1.1 異常處理簡介 12.1.2 異常處理語法 12.1.3 預(yù)定義異常 12.2 自定義異常 12.2.1 聲明異常 12.2.2 作用域范圍 12.2.3 使用exception_init 12.2.4 使用raise_application_error 12.2.5 拋出異常 12.2.6 處理異常 12.2.7 使用sqlcode和sqlerrm 12.3 異常的傳遞 12.3.1 執(zhí)行時異常傳遞 12.3.2 聲明時異常傳遞 12.3.3 異常處理器中的異常 12.3.4 重新拋出異常 12.3.5 異常處理準則 12.4 小結(jié) 第3篇 pl/sql進階編程 第13章 pl/sql子程序 13.1 子程序結(jié)構(gòu) 13.1.1 子程序簡介 13.1.2 子程序的優(yōu)點 13.1.3 創(chuàng)建過程 13.1.4 創(chuàng)建函數(shù) 13.1.5 return語句 13.1.6 查看和刪除子程序 13.2 子程序參數(shù) 13.2.1 形參與實參 13.2.2 參數(shù)模式 13.2.3 形式參數(shù)的約束 13.2.4 參數(shù)傳遞方式 13.2.5 參數(shù)默認值 13.2.6 使用nocopy編譯提示 13.3 子程序進階技術(shù) 13.3.1 在sql中調(diào)用子程序 13.3.2 嵌套子程序 13.3.3 子程序的前向聲明 13.3.4 重載子程序 13.3.5 子程序自治事務(wù) 13.3.6 遞歸調(diào)用子程序 13.3.7 理解子程序依賴性 13.3.8 子程序權(quán)限管理 13.4 小結(jié) 第14章 包 14.1 理解pl/sql包 14.1.1 什么是包 14.1.2 包的優(yōu)點 14.1.3 定義包規(guī)范 14.1.4 定義包體 14.1.5 調(diào)用包組件 14.1.6 編譯和調(diào)試包 14.1.7 查看包的源代碼 14.2 包的進階技術(shù) 14.2.1 包重載 14.2.2 包初始化 14.2.3 包的純度級別 14.2.4 包權(quán)限設(shè)置 14.2.5 在包中使用游標(biāo) 14.3 管理數(shù)據(jù)庫中的包 14.3.1 查看和刪除包 14.3.2 檢查包的依賴性 14.4 使用系統(tǒng)包 14.4.1 使用dbms_output包 14.4.2 使用dbms_pipe包 14.4.3 使用dbms_alter包 14.4.4 使用dbms_job包 14.5 小結(jié) 第15章 觸發(fā)器 15.1 理解觸發(fā)器 15.1.1 觸發(fā)器簡介 15.1.2 定義觸發(fā)器 15.1.3 觸發(fā)器的分類 15.2 dml觸發(fā)器 15.2.1 觸發(fā)器的執(zhí)行順序 15.2.2 定義dml觸發(fā)器 15.2.3 調(diào)試觸發(fā)器 15.2.4 使用語句觸發(fā)器 15.2.5 使用old和new謂詞 15.2.6 使用referencing子句 15.2.7 使用when子句 15.2.8 使用條件謂詞 15.2.9 控制觸發(fā)順序 15.2.10 觸發(fā)器限制 15.2.11 使用自治事務(wù) 15.3 替代觸發(fā)器 15.3.1 替代觸發(fā)器的作用 15.3.2 定義替代觸發(fā)器 15.3.3 update與delete替代觸發(fā)器 15.3.4 嵌套表替代觸發(fā)器 15.4 系統(tǒng)事件觸發(fā)器 15.4.1 定義系統(tǒng)觸發(fā)器 15.4.2 觸發(fā)器事件列表 15.4.3 觸發(fā)器屬性列表 15.4.4 屬性函數(shù)使用示例 15.4.5 定義servererror觸發(fā)器 15.4.6 觸發(fā)器的事務(wù)與約束 15.5 觸發(fā)器的管理 15.5.1 查看觸發(fā)器源代碼 15.5.2 刪除和禁用觸發(fā)器 15.5.3 名稱與權(quán)限的管理 15.6 小結(jié) 第16章 動態(tài)sql語句 16.1 理解動態(tài)sql語句 16.1.1 動態(tài)sql基礎(chǔ) 16.1.2 動態(tài)sql使用時機 16.1.3 本地動態(tài)sql 16.2 使用execute immediate 16.2.1 execute immediate語法 16.2.2 執(zhí)行sql語句和pl/sql語句塊 16.2.3 使用綁定變量 16.2.4 使用returnning into子句 16.2.5 執(zhí)行單行查詢 16.2.6 指定參數(shù)模式 16.3 多行查詢語句 16.3.1 使用open-for語句 16.3.2 使用fetch語句 16.3.3 關(guān)閉游標(biāo)變量 16.4 使用批量綁定 16.4.1 批量execute immediate語法 16.4.2 使用批量fetch語句 16.4.3 使用批量forall語句 16.5 動態(tài)sql的使用建議 16.5.1 用綁定變量改善性能 16.5.2 使用重復(fù)占位符 16.5.3 使用調(diào)用者權(quán)限 16.5.4 傳遞null參數(shù) 16.5.5 動態(tài)sql異常處理 16.6 小結(jié) 第4篇 pl/sql高級編程 第17章 面向?qū)ο缶幊?br /> 17.1 對象基礎(chǔ) 17.1.1 面向?qū)ο蠛喗?br /> 17.1.2 什么是對象類型 17.1.3 pl/sql中對象的組成結(jié)構(gòu) 17.2 定義對象類型 17.2.1 定義對象類型 17.2.2 定義對象體 17.2.3 定義屬性 17.2.4 定義方法 17.2.5 使用self關(guān)鍵字 17.2.6 定義構(gòu)造函數(shù) 17.2.7 定義map和order方法 17.2.8 使用對象類型 17.2.9 使用嵌套對象類型 17.2.10 對象繼承 17.2.11 方法重載 17.3 管理對象表 17.3.1 定義對象表 17.3.2 插入對象表 17.3.3 檢索對象表 17.3.4 更新對象表 17.3.5 刪除對象表 17.3.6 創(chuàng)建對象列 17.3.7 使用對象視圖 17.4 管理對象類型 17.4.1 查看對象類型 17.4.2 修改對象類型 17.5 小結(jié) 第18章 pl/sql性能優(yōu)化建議 18.1 了解pl/sql程序性能 18.1.1 影響性能常見原因 18.1.2 使用dbms_profiler包 18.1.3 使用dbms_trace包 18.2 pl/sql性能優(yōu)化技巧 18.2.1 理解查詢執(zhí)行計劃 18.2.2 聯(lián)接查詢的表順序 18.2.3 指定where條件順序 18.2.4 避免使用*符號 18.2.5 使用decode函數(shù) 18.2.6 使用where而非having 18.2.7 使用union 而非or 18.2.8 使用exists而非in 18.2.9 避免低效的pl/sql流程控制語句 18.2.10 避免隱式類型的轉(zhuǎn)換 18.3 小結(jié) 第5篇 pl/sql案例實戰(zhàn) 第19章 企業(yè)ic芯片欠料計算程序 19.1 系統(tǒng)設(shè)計 19.1.1 程序需求簡介 19.1.2 數(shù)據(jù)表er關(guān)系圖 19.1.3 系統(tǒng)總體流程 19.1.4 示例環(huán)境的搭建 19.2 系統(tǒng)編碼實現(xiàn) 19.2.1 創(chuàng)建包規(guī)范 19.2.2 初始化數(shù)據(jù) 19.2.3 獲取ic需求量 19.2.4 ic物料檢查函數(shù) 19.2.5 獲取已走貨ic數(shù)量 19.2.6 獲取銷售訂單數(shù)量 19.2.7 計算企業(yè)ic需求量 19.2.8 預(yù)備下次計算數(shù)據(jù) 19.2.9 定義調(diào)用主程序 19.3 調(diào)試和部署應(yīng)用程序 19.3.1 編譯應(yīng)用程序 19.3.2 調(diào)試應(yīng)用程序 19.3.3 查看程序結(jié)果 19.3.4 部署到生產(chǎn)服務(wù)器 19.4 小結(jié) 第20章 pl/sql郵件發(fā)送程序 20.1 系統(tǒng)設(shè)計 20.1.1 程序需求簡介 20.1.2 使用utl_ smtp發(fā)送電子郵件 20.1.3 系統(tǒng)總體流程 20.1.4 示例環(huán)境的搭建 20.2 系統(tǒng)編碼實現(xiàn) 20.2.1 認識mime類型 20.2.2 實現(xiàn)mime類型郵件發(fā)送 20.2.3 定義包規(guī)范 20.2.4 郵件初始化函數(shù)xm_init 20.2.5 發(fā)送并關(guān)閉連接xm_close 20.2.6 發(fā)送html郵件 20.2.7 發(fā)送郵件附件 20.2.8 發(fā)送excel附件內(nèi)容 20.2.9 寫入工作薄wb_header 20.2.10 寫入工作表xm_worksheet 20.2.11 寫入表格行xm_ws_row 20.2.12 寫入工作表尾信息 20.2.13 執(zhí)行sql語句寫入工作表 20.3 編譯和部署應(yīng)用程序 20.3.1 編譯與調(diào)試應(yīng)用程序 20.3.2 驗證測試結(jié)果 20.3.3 部署到生產(chǎn)服務(wù)器 20.4 小結(jié)
第1章Oracle11g數(shù)據(jù)庫系統(tǒng)
Oracle數(shù)據(jù)庫系統(tǒng)是世界領(lǐng)先的數(shù)據(jù)庫管理系統(tǒng),Oracle數(shù)據(jù)庫以其功能強大和配置靈活而著稱,同時也因有一定的操作難度,讓很多初學(xué)者望而卻步。本書將由淺入深,以簡單易懂的示例帶領(lǐng)讀者撥開Oracle的神秘面紗。 目前在Oracle世界主要有兩類人員:一類是Oracle數(shù)據(jù)庫管理人員,簡稱DBA;一類是Oracle開發(fā)人員。OracleDBA主要的工作是負責(zé)日常的數(shù)據(jù)庫維護和性能優(yōu)化管理。由于Oracle系統(tǒng)較龐大、復(fù)雜,要成為一名合格的DBA,需要掌握的知識較多,比如要掌握Oracle體系結(jié)構(gòu)和性能優(yōu)化等方面的知識,相對其他數(shù)據(jù)庫而言入門門檻較高,但是薪酬一般也較豐厚。Oracle開發(fā)人員的主要工作是使用Oracle提供的SQL語言和PL/SQL結(jié)構(gòu)化程序設(shè)計語言操作數(shù)據(jù)庫,主要職責(zé)是操縱Oracle數(shù)據(jù)庫對象,不需要對Oracle系統(tǒng)結(jié)構(gòu)有深入了解,入門較容易。當(dāng)Oracle開發(fā)人員積累了一定的開發(fā)知識后,可以通過學(xué)習(xí)OracleDBA方面的知識向數(shù)據(jù)庫管理員轉(zhuǎn)型。 1.1關(guān)系型數(shù)據(jù)庫系統(tǒng)介紹 1970年6月,IBM公司的研究員E.F.Codd博士(中文名:埃德加·弗蘭克·科德),發(fā)表了名為“大型共享數(shù)據(jù)庫的關(guān)系模型”的論文,受到了學(xué)術(shù)界和產(chǎn)業(yè)界的高度重視和廣泛響應(yīng),使得關(guān)系型數(shù)據(jù)庫系統(tǒng)很快成為數(shù)據(jù)庫市場的主流。E.F.Codd博士被譽為“關(guān)系數(shù)據(jù)庫之父”,其照片如圖1.1所示。 圖1.1關(guān)系數(shù)據(jù)庫之父埃德加·弗蘭克·科德 1.1.1什么是關(guān)系型數(shù)據(jù)模型 關(guān)系型數(shù)據(jù)庫簡而言之就是使用關(guān)系或二維表存儲信息。以公司的人員信息管理為例,為了存儲公司內(nèi)部的員工信息,人事部門一般會建一份列表,在公司未引入信息化管理系統(tǒng)時,大多數(shù)人事職員會使用Excel來保存員工信息,例如圖1.2是一份簡單的人員信息列表的Excel文件。 這種Excel存儲數(shù)據(jù)的方式,將人員的所有信息都包含在一張表中,隨著Excel中的欄位和記錄數(shù)越來越多,這份人員信息表會變得越來越繁雜,這種存儲數(shù)據(jù)的方式稱為平面文件數(shù)據(jù)模型。 為了簡化修改與維護的復(fù)雜性,關(guān)系型數(shù)據(jù)庫設(shè)計人員通過使用實體關(guān)系模型進行數(shù)據(jù)庫建模,例如人員信息表可以分為員工表和部門表,通過部門編號進行關(guān)聯(lián),ER模型如圖1.3所示。 圖1.2Excel人員信息列表圖1.3人員信息表ER關(guān)系模型 由圖1.3中可以看到,通過將員工和部門分別存儲在不同的二維表格中,使用主鍵(PK)和外鍵(FK)進行關(guān)聯(lián),使得獲取和維護數(shù)據(jù)變得更容易,這就是關(guān)系型數(shù)據(jù)模型。上述ER圖的3個關(guān)鍵組件分別如下所示。 *實體:需要了解的信息,比如部門和員工信息。 *屬性:一般也稱為列或字段,描述實體必須或可選的信息,比如員工表中的工號和姓名等。 *關(guān)系:實體之間指定的關(guān)聯(lián),比如員工的部門編號關(guān)聯(lián)到了部門表的編號屬性。 關(guān)系型數(shù)據(jù)模型還涉及一些較復(fù)雜的組成元素,涉及較多的數(shù)學(xué)知識,有興趣的讀者可以參考一些理論性的讀物。 1.1.2數(shù)據(jù)庫系統(tǒng)范式 為了規(guī)范化關(guān)系型數(shù)據(jù)模型,關(guān)系型數(shù)據(jù)庫系統(tǒng)在設(shè)計時必須遵循一定的規(guī)則,這種規(guī)則稱為關(guān)系型數(shù)據(jù)庫系統(tǒng)范式。了解范式是每個數(shù)據(jù)庫設(shè)計或開發(fā)人員必須具備的基本功,范式的主要目的是降低數(shù)據(jù)冗余,設(shè)計結(jié)構(gòu)合理的數(shù)據(jù)庫。目前較常用的范式有如下3種。 1.第一范式(1NF):字段必須具有單一屬性特性,不可再拆分 如果字段中的值已經(jīng)是無法再分割的值,則符合第一范式,即1NF。例如,在員工表中,姓名字段一般僅包含員工的正式姓名,這是符合第一范式的,但是如果要在姓名字段中包含中文名、英文名、昵稱、別名等信息,就意味著姓名字段是可再拆分的。因此員工名的設(shè)計可以如圖1.4所示。 圖1.4修改后的員工表以匹配1NF范式 2.第二范式(2NF):表要具有唯一性的主鍵列 第二范式(2NF)要求數(shù)據(jù)庫表中的每個實例或行必須可以被唯一地區(qū)分,為實現(xiàn)區(qū)分通常需要為表加上一個列,以存儲各個實例的唯一標(biāo)識。第二范式是在第一范式的基礎(chǔ)上的進一步增強,在數(shù)據(jù)庫設(shè)計時一般使用唯一性主鍵來唯一地標(biāo)識行。比如在員工表中定義了以工號作為主鍵,因為公司員工的工號通常用來識別某個員工個體,不能進行重復(fù);在部門表中通過部門編號作為主鍵,來唯一地區(qū)分一個部門。 3.第三范式(3NF):表中的字段不能包含在其他表中已出現(xiàn)的非主鍵字段 第三范式(3NF)是在前兩個范式的基礎(chǔ)上的進一步增強,主要用來降低數(shù)據(jù)的冗余。比如,員工表中包含了部門編號,它引用到部門表中的部門編號這個主鍵,符合第三范式。如果在員工表中又包含一個部門名稱,那么表中的字段就包含了其他表中已出現(xiàn)的非主鍵字段,造成了數(shù)據(jù)的冗余,不符合第三范式。 范式主要用來規(guī)范數(shù)據(jù)庫的設(shè)計,使得設(shè)計出來的數(shù)據(jù)庫結(jié)構(gòu)清晰,簡潔易懂,避免了數(shù)據(jù)冗余和操作的異常。在設(shè)計數(shù)據(jù)庫模型時,靈活地應(yīng)用范式是創(chuàng)建一個優(yōu)秀的數(shù)據(jù)庫系統(tǒng)的基石。 1.1.3關(guān)系型數(shù)據(jù)庫管理系統(tǒng) 關(guān)系型數(shù)據(jù)庫管理系統(tǒng),簡稱DBMS,是基于關(guān)系型數(shù)據(jù)庫理論而開發(fā)的軟件系統(tǒng)。目前比較熱門的關(guān)系型數(shù)據(jù)管理系統(tǒng)有:Oracle、MicrosoftSQLServer、Access、MySQL及PostgreSQL等。數(shù)據(jù)庫管理系統(tǒng)是用于建立、使用和維護數(shù)據(jù)庫,對數(shù)據(jù)庫進行統(tǒng)一的管理和控制,保證數(shù)據(jù)庫的安全性和完整性的一套大型的電腦程序。數(shù)據(jù)庫管理系統(tǒng)功能結(jié)構(gòu)示意圖如圖1.5所示。 圖1.5數(shù)據(jù)庫管理系統(tǒng)功能結(jié)構(gòu)示意圖 如圖1.5所示,一個數(shù)據(jù)庫管理系統(tǒng)通常要提供如下所示的幾項功能。 *定義數(shù)據(jù)庫結(jié)構(gòu):DBMS提供數(shù)據(jù)定義語言來定義(DDL)數(shù)據(jù)庫結(jié)構(gòu),用來搭建數(shù)據(jù)庫框架,并被保存在數(shù)據(jù)字典中。 *存取數(shù)據(jù)庫內(nèi)容:DBMS提供數(shù)據(jù)操縱語言(DML),實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的基本存取操作,即檢索、插入、修改和刪除等。 *數(shù)據(jù)庫的運行管理:DBMS提供數(shù)據(jù)控制功能,即數(shù)據(jù)的安全性、完整性和并發(fā)控制等,對數(shù)據(jù)庫運行進行有效的控制和管理,以確保數(shù)據(jù)正確有效。 *數(shù)據(jù)庫的建立和維護:包括數(shù)據(jù)庫初始數(shù)據(jù)的裝入,數(shù)據(jù)庫的轉(zhuǎn)儲、恢復(fù)、重組織,系統(tǒng)性能監(jiān)視、分析等功能。 *數(shù)據(jù)庫的傳輸:DBMS提供處理數(shù)據(jù)的傳輸,實現(xiàn)用戶程序與DBMS之間的通信,通常與操作系統(tǒng)協(xié)調(diào)完成。 有了關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)人員就可以在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、存取數(shù)據(jù)庫內(nèi)容、對數(shù)據(jù)庫進行備份和管理,只需要理解常用的系統(tǒng)相關(guān)的操作,而不用去研究關(guān)系型數(shù)據(jù)庫系統(tǒng)內(nèi)部深奧難懂的數(shù)據(jù)方面的理論知識。 1.1.4使用SQL語句與數(shù)據(jù)庫管理系統(tǒng)通信 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)提供了SQL語言,允許用戶操縱數(shù)據(jù)庫。SQL語言的全稱是結(jié)構(gòu)化查詢語言(StructuredQueryLanguage),它是高級的非過程化編程語言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解其具體的數(shù)據(jù)存放方式,其操作示意圖如圖1.6所示。 盡管SQL語言已經(jīng)被ISO組織定義了具有國際標(biāo)準的SQL規(guī)范,但是各種數(shù)據(jù)庫系統(tǒng)廠商在其數(shù)據(jù)庫管理系統(tǒng)中都對SQL規(guī)范做了某些編改和擴充。所以,實際上不同數(shù)據(jù)庫系統(tǒng)之間的SQL不能完全相互通用,目前比較流行的兩大類SQL語言分別是微軟的T-SQL和Oracle的PL/SQL,這兩類SQL既有相似之處又有不同之處。 圖1.6使用SQL操作數(shù)據(jù)庫管理系統(tǒng) SQL語言主要又分為如下兩大類。 *DML數(shù)據(jù)操縱語言,主要是完成數(shù)據(jù)的增、刪、改和查詢的操作。 *DDL數(shù)據(jù)定義語言,主要用來創(chuàng)建或修改表、視圖、存儲過程及用戶等。 除此之外,還包含稱為DCL的數(shù)據(jù)控制語言。數(shù)據(jù)庫管理員,即DBA,通常使用DDL來管理數(shù)據(jù)庫的對象,而數(shù)據(jù)操縱語言DML則主要由數(shù)據(jù)庫開發(fā)人員使用來操縱數(shù)據(jù)。 舉個例子,如果想要在數(shù)據(jù)庫中創(chuàng)建如圖1.4所示的關(guān)系模型,可以使用代碼1.1的DDL語句來實現(xiàn)。 代碼1.1使用DDL語句創(chuàng)建列和鍵 --創(chuàng)建員工表 CREATETABLE員工表 (--定義員工表列 工號INTNOTNULL, 中文姓名NVARCHAR2(20)NOTNULL, 英文姓名VARCHAR2(20)NULL, 別名VARCHAR2(20)NULL, 年齡INTDEFAULT18, 入職日期DATENULL, 部門編號INTNULL, --定義員工表主鍵 CONSTRAINTPK_員工表PRIMARYKEY(工號) ……
你還可能感興趣
我要評論
|