關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
Oracle PL/SQL從入門到精通 讀者對(duì)象:適合于使用pl/sql進(jìn)行應(yīng)用程序開(kāi)發(fā)的人員、對(duì)軟件開(kāi)發(fā)有興趣的學(xué)生及愛(ài)好者; 對(duì)數(shù)據(jù)庫(kù)管理員、企業(yè)it運(yùn)維人員也具有很強(qiáng)的指導(dǎo)作用
《Oracle PL/SQL從入門到精通》以面向應(yīng)用為原則,深入淺出的介紹了oracle平臺(tái)上使用pl/sql語(yǔ)言進(jìn)行數(shù)據(jù)庫(kù)開(kāi)發(fā)的技術(shù)。通過(guò)大量的示例,詳細(xì)介紹了pl/sql的語(yǔ)言特性、使用技巧,同時(shí)配以2個(gè)在實(shí)際工作中的示例來(lái)深入的剖析了pl/sql進(jìn)行oracle開(kāi)發(fā)的方方面面。
《Oracle PL/SQL從入門到精通》附帶1張dvd光盤,內(nèi)容為作者為《Oracle PL/SQL從入門到精通》錄制的全程語(yǔ)音教學(xué)視頻及本書(shū)所涉及的源代碼。 《Oracle PL/SQL從入門到精通》共分為20章,分為5大篇。涵蓋的內(nèi)容主要有pl/sql語(yǔ)言基礎(chǔ)、開(kāi)發(fā)環(huán)境、變量與類型、控制語(yǔ)句、數(shù)據(jù)表的管理和查詢、數(shù)據(jù)表的操縱、使用pl/sql的記錄與集合、各種內(nèi)置函數(shù)、游標(biāo)、事務(wù)處理、異常處理、子程序、包、面向?qū)ο蟮拈_(kāi)發(fā)等等技術(shù)點(diǎn)。通過(guò)示例性的代碼,由淺入深,詳細(xì)介紹了每一個(gè)技術(shù)要點(diǎn)在實(shí)際工作中的應(yīng)用,對(duì)于各種技術(shù)要點(diǎn)的應(yīng)用場(chǎng)合進(jìn)行了細(xì)致的分析。 《Oracle PL/SQL從入門到精通》適合于使用pl/sql進(jìn)行應(yīng)用程序開(kāi)發(fā)的人員、對(duì)軟件開(kāi)發(fā)有興趣的學(xué)生及愛(ài)好者;對(duì)數(shù)據(jù)庫(kù)管理員、企業(yè)it運(yùn)維人員也具有很強(qiáng)的指導(dǎo)作用。 超值DVD光盤 《Oracle PL/SQL從入門到精通》配套教學(xué)視頻 《Oracle PL/SQL從入門到精通》源代碼 15.5小時(shí)Oracle入門教學(xué)視頻
涵蓋PL/SQL的各種技術(shù)細(xì)節(jié),提供系統(tǒng)化的學(xué)習(xí)方案
對(duì)PL/SQL開(kāi)發(fā)用到的各種技術(shù)做了原理分析和實(shí)戰(zhàn)體驗(yàn) 7.8小時(shí)教學(xué)視頻,300個(gè)經(jīng)典實(shí)例,2個(gè)項(xiàng)目案例 真正做到了從程序員的視角剖析PL/SQL的應(yīng)用 深入淺出地介紹PL/SQL在實(shí)際開(kāi)發(fā)中的要點(diǎn) 提供各種實(shí)際應(yīng)用場(chǎng)景,將知識(shí)點(diǎn)快速應(yīng)用于實(shí)際開(kāi)發(fā) 代碼精煉,注釋豐富,通過(guò)研讀代碼,便可獲得大量經(jīng)驗(yàn)
為什么要寫(xiě)這本書(shū)
隨著計(jì)算機(jī)信息技術(shù)的飛速發(fā)展,數(shù)據(jù)存儲(chǔ)已經(jīng)成為很多公司越來(lái)越重視的問(wèn)題。Oracle公司的數(shù)據(jù)庫(kù)管理軟件以其穩(wěn)定、高效和靈活性,一直是各大企事業(yè)單位后臺(tái)存儲(chǔ)的首選。Oracle系統(tǒng)本身的復(fù)雜性,使得很多剛?cè)腴T的開(kāi)發(fā)人員不知從何入手,盡管Oracle公司提供了大量的文檔,但是這些文檔大多為英文版本,每個(gè)文檔都偏重于某一技術(shù)細(xì)節(jié),沒(méi)有提供系統(tǒng)的、適合我國(guó)程序員思維的學(xué)習(xí)材料。 目前在市面上關(guān)于PL/SQL的圖書(shū)并不是很多,特別是由國(guó)內(nèi)程序員經(jīng)驗(yàn)總結(jié)的圖書(shū)更是寥寥無(wú)幾。本書(shū)作者站在一線開(kāi)發(fā)人員的視角,通過(guò)簡(jiǎn)潔輕松的文字,簡(jiǎn)短精練的示例代碼,以力求讓不同層次的開(kāi)發(fā)人員盡快掌握Oracle數(shù)據(jù)庫(kù)開(kāi)發(fā)為主旨編寫(xiě)了本書(shū),同時(shí)在本書(shū)最后還提供了兩個(gè)實(shí)戰(zhàn)項(xiàng)目,讓開(kāi)發(fā)人員能夠通過(guò)項(xiàng)目學(xué)習(xí)PL/SQL開(kāi)發(fā),提高實(shí)際開(kāi)發(fā)水平和項(xiàng)目實(shí)戰(zhàn)能力。 本書(shū)有何特色 1.附帶多媒體語(yǔ)音教學(xué)視頻,提高學(xué)習(xí)效率 為了便于讀者理解本書(shū)內(nèi)容,提高學(xué)習(xí)效率,作者專門為每一章內(nèi)容都錄制了大量的多媒體語(yǔ)音教學(xué)視頻。這些視頻和本書(shū)涉及的源代碼一起收錄于配書(shū)光盤中。 2.涵蓋PL/SQL語(yǔ)言的各種技術(shù)細(xì)節(jié),提供系統(tǒng)化的學(xué)習(xí)思路 本書(shū)涵蓋了PL/SQL語(yǔ)言在實(shí)際項(xiàng)目中需要重點(diǎn)掌握的所有方面,包含語(yǔ)言基礎(chǔ)、開(kāi)發(fā)環(huán)境、常量和變量的定義、基本的控制結(jié)構(gòu)、基本的SQL操作知識(shí)(比如查詢、插入、修改和刪除)、記錄和集合、游標(biāo)、SQL的內(nèi)置函數(shù)、事務(wù)處理、異常處理機(jī)制、子程序、包、觸發(fā)器、面向?qū)ο蟮拈_(kāi)發(fā)及動(dòng)態(tài)SQL語(yǔ)句等知識(shí)點(diǎn)。 3.對(duì)PL/SQL開(kāi)發(fā)的各種技術(shù)做了原理分析和實(shí)戰(zhàn)體驗(yàn) 全書(shū)使用簡(jiǎn)潔質(zhì)樸的文字,配以大量的插圖,將一些難以理解的原理部分進(jìn)行了重點(diǎn)剖析,讓讀者不僅知曉實(shí)現(xiàn)的原理,通過(guò)圖形化的展現(xiàn)方式,更能加強(qiáng)對(duì)原理的理解,同時(shí)配以大量的示例對(duì)技術(shù)要點(diǎn)在實(shí)際工作中的應(yīng)用進(jìn)行了詳解,讓讀者能盡快上手。 4.應(yīng)用驅(qū)動(dòng),實(shí)用性強(qiáng) 對(duì)于每段示例代碼,都進(jìn)行了仔細(xì)的錘煉,提供了各種實(shí)際應(yīng)用的場(chǎng)景,力求讓?xiě)?yīng)用開(kāi)發(fā)人員將這些知識(shí)點(diǎn)盡快應(yīng)用到實(shí)際的開(kāi)發(fā)過(guò)程中。 5.項(xiàng)目案例典型,實(shí)戰(zhàn)性強(qiáng),有較高的應(yīng)用價(jià)值 本書(shū)最后一篇提供了兩個(gè)項(xiàng)目實(shí)戰(zhàn)案例。這些案例來(lái)源于作者所開(kāi)發(fā)的實(shí)際項(xiàng)目,具有很高的應(yīng)用價(jià)值和參考性。而且這些案例分別使用不同的PL/SQL技術(shù)實(shí)現(xiàn),便于讀者融會(huì)貫通地理解本書(shū)中所介紹的技術(shù)。這些案例稍加修改,便可用于實(shí)際項(xiàng)目開(kāi)發(fā)中。 6.提供完善的技術(shù)支持和售后服務(wù) 讀者在閱讀本書(shū)過(guò)程中有任何疑問(wèn)都可以通過(guò)該郵箱獲得幫助。 本書(shū)內(nèi)容及知識(shí)體系 第1篇PL/SQL開(kāi)發(fā)入門(第1~4章) 本篇介紹了Oracle的組成架構(gòu)和PL/SQL開(kāi)發(fā)的基礎(chǔ)知識(shí)。主要包括Oracle體系結(jié)構(gòu)、PL/SQL開(kāi)發(fā)環(huán)境、PL/SQL的總體概覽、常量和變量的定義,以及基本的PL/SQL控制結(jié)構(gòu)。 第2篇PL/SQL開(kāi)發(fā)基礎(chǔ)(第5~12章) 本篇是PL/SQL進(jìn)行實(shí)際開(kāi)發(fā)時(shí)必備的基礎(chǔ)知識(shí),包含使用OracleSQL語(yǔ)句對(duì)數(shù)據(jù)表的查詢、操縱;各種Oracle數(shù)據(jù)庫(kù)對(duì)象的管理,比如同義詞和序列等;同時(shí)對(duì)PL/SQL的記錄與集合、各種SQL內(nèi)置函數(shù)、游標(biāo)、事務(wù)處理、鎖定以及PL/SQL異常處理機(jī)制進(jìn)行了詳細(xì)的介紹。 第3篇PL/SQL進(jìn)階編程(第13~16章) 本篇討論了PL/SQL模塊化編程相關(guān)的子程序、包、觸發(fā)器的使用,這部分是實(shí)際工作中需要努力鞏固的知識(shí)點(diǎn),同時(shí)介紹了本地動(dòng)態(tài)SQL技術(shù)的使用。這一篇的知識(shí)點(diǎn)是每個(gè)PL/SQL程序員必備的技能,在介紹形式上通過(guò)輔以大量與實(shí)際場(chǎng)景相結(jié)合的代碼,提升開(kāi)發(fā)人員的實(shí)戰(zhàn)經(jīng)驗(yàn)。 第4篇PL/SQL高級(jí)編程(第17~18章) 本篇的內(nèi)容針對(duì)已經(jīng)熟練掌握了前面幾篇的內(nèi)容的開(kāi)發(fā)人員,在具有了一定的PL/SQL開(kāi)發(fā)經(jīng)驗(yàn)后,可以通過(guò)本篇的內(nèi)容學(xué)習(xí)使用面向?qū)ο蟮乃季S來(lái)開(kāi)發(fā)PL/SQL應(yīng)用程序,同時(shí)對(duì)于PL/SQL開(kāi)發(fā)過(guò)程中的一些性能優(yōu)化的注意事項(xiàng)進(jìn)行了示例詳解(提升開(kāi)發(fā)人員的實(shí)戰(zhàn)經(jīng)驗(yàn))。 第5篇PL/SQL案例實(shí)戰(zhàn)(第19~20章) 本篇通過(guò)兩個(gè)實(shí)際的項(xiàng)目案例,從需求分析、數(shù)據(jù)庫(kù)表的設(shè)計(jì)、系統(tǒng)的總體規(guī)劃開(kāi)始,到包規(guī)范的定義、包體的具體實(shí)現(xiàn),詳細(xì)剖析一個(gè)PL/SQL的實(shí)現(xiàn)生命周期,通過(guò)對(duì)這兩個(gè)案例的一步一步深入體驗(yàn),能讓開(kāi)發(fā)人員立即上手開(kāi)始進(jìn)行PL/SQL項(xiàng)目的開(kāi)發(fā)。同時(shí)對(duì)這兩個(gè)案例稍加修改,就能應(yīng)用到實(shí)際的項(xiàng)目開(kāi)發(fā)中。 配書(shū)光盤內(nèi)容介紹 為了方便讀者閱讀本書(shū),本書(shū)附帶1張DVD光盤,內(nèi)容如下。 *本書(shū)所有實(shí)例的源代碼; *本書(shū)每章內(nèi)容的多媒體語(yǔ)音教學(xué)視頻; *免費(fèi)贈(zèng)送的Oracle入門教學(xué)視頻。 適合閱讀本書(shū)的讀者 *需要全面學(xué)習(xí)OraclePL/SQL開(kāi)發(fā)技術(shù)的人員; *數(shù)據(jù)庫(kù)開(kāi)發(fā)程序員; *應(yīng)用程序開(kāi)發(fā)人員; *Oracle數(shù)據(jù)庫(kù)管理人員; *希望提高項(xiàng)目開(kāi)發(fā)水平的人員; *專業(yè)培訓(xùn)機(jī)構(gòu)的學(xué)員; *軟件開(kāi)發(fā)項(xiàng)目經(jīng)理; *需要一本PL/SQL案頭必備查詢手冊(cè)的人員。 閱讀本書(shū)的建議 *沒(méi)有OraclePL/SQL基礎(chǔ)的讀者,建議從第1章順次閱讀并演練每一個(gè)示例。 *有一定OraclePL/SQL基礎(chǔ)的讀者,可以根據(jù)實(shí)際情況有重點(diǎn)地選擇閱讀各個(gè)技術(shù)要點(diǎn)。 *對(duì)于每一個(gè)知識(shí)點(diǎn)和項(xiàng)目案例,先通讀一遍有個(gè)大概印象,然后對(duì)于每個(gè)知識(shí)點(diǎn)的示例代碼都在開(kāi)發(fā)環(huán)境中操作一遍,加深對(duì)知識(shí)點(diǎn)的印象。 *結(jié)合光盤中提供的多媒體教學(xué)視頻再理解一遍,這樣理解起來(lái)就更加容易,也會(huì)更加深刻。 筆者寫(xiě)作本書(shū)雖然耗費(fèi)了大量精力,力爭(zhēng)消滅錯(cuò)誤,但恐百密難免一疏。 編著者
丁士鋒,2001年畢業(yè)于國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院。有多年的數(shù)據(jù)庫(kù)軟件開(kāi)發(fā)與設(shè)計(jì)經(jīng)驗(yàn),深入理解數(shù)據(jù)庫(kù)系統(tǒng)在企業(yè)信息化進(jìn)程中的應(yīng)用。多次主導(dǎo)與架構(gòu)基于Oracle、SQL Server及IBM DB2等大型數(shù)據(jù)庫(kù)系統(tǒng)的集團(tuán)式信息管理系統(tǒng)建設(shè)。多次參與數(shù)據(jù)庫(kù)平臺(tái)的搭建與各種核心數(shù)據(jù)庫(kù)程序代碼的實(shí)現(xiàn)。著有《Oracle PL/SQL從入門到精通》、《《精通C# 5.0與.NET 4.5高級(jí)編程:LINQ、WCF、WPF和WF》、《網(wǎng)頁(yè)制作與網(wǎng)站建設(shè)實(shí)戰(zhàn)大全》等多本廣受讀者好評(píng)的計(jì)算機(jī)暢銷圖書(shū)。
第1篇 pl/sql開(kāi)發(fā)入門
第1章 oracle 11g數(shù)據(jù)庫(kù)系統(tǒng) 1.1 關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)介紹 1.1.1 什么是關(guān)系型數(shù)據(jù)模型 1.1.2 數(shù)據(jù)庫(kù)系統(tǒng)范式 1.1.3 關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng) 1.1.4 使用sql語(yǔ)句與數(shù)據(jù)庫(kù)管理系統(tǒng)通信 1.2 初識(shí)oracle 11g 1.2.1 oracle 11g簡(jiǎn)介 1.2.2 oracle 11g體系結(jié)構(gòu) 1.2.3 如何創(chuàng)建數(shù)據(jù)庫(kù) 1.2.4 比較oracle數(shù)據(jù)庫(kù)與sql server數(shù)據(jù)庫(kù) 1.3 什么是pl/sql 1.3.1 pl/sql是一種語(yǔ)言 1.3.2 pl/sql的執(zhí)行環(huán)境 1.4 搭建pl/sql開(kāi)發(fā)環(huán)境 1.4.1 使用sql*plus 1.4.2 使用oracle sql developer 1.4.3 pl/sql developer開(kāi)發(fā)pl/sql 1.4.4 quest toad開(kāi)發(fā)pl/sql 1.4.5 使用oracle文檔庫(kù) 1.5 小結(jié) 第2章 pl/sql基本概念 2.1 功能特點(diǎn) 2.1.1 結(jié)構(gòu)化程序設(shè)計(jì) 2.1.2 與sql語(yǔ)言整合 2.1.3 面向?qū)ο箝_(kāi)發(fā) 2.1.4 模塊化應(yīng)用程序開(kāi)發(fā) 2.1.5 提高應(yīng)用程序性能 2.2 語(yǔ)言特性 2.2.1 pl/sql塊結(jié)構(gòu) 2.2.2 變量和類型 2.2.3 程序控制語(yǔ)句 2.2.4 過(guò)程、函數(shù)與包 2.2.5 觸發(fā)器 2.2.6 結(jié)構(gòu)化異常處理 2.2.7 集合與記錄 2.2.8 游標(biāo) 2.2.9 動(dòng)態(tài)sql 2.3 編碼風(fēng)格 2.3.1 pl/sql詞法單位 2.3.2 縮進(jìn) 2.3.3 標(biāo)識(shí)符命名規(guī)則 2.3.4 大小寫(xiě)風(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 變量的作用域和可見(jiàn)性 3.1.6 常量的定義 3.2 數(shù)據(jù)類型 3.2.1 字符類型 3.2.2 數(shù)字類型 3.2.3 日期和時(shí)間類型 3.2.4 布爾類型 3.2.5 lob對(duì)象類型 3.2.6 引用類型 3.2.7 復(fù)合類型 3.2.8 用戶自定義子類型 3.2.9 數(shù)據(jù)類型轉(zhuǎn)換 3.3 運(yùn)算符和表達(dá)式 3.3.1 運(yùn)算符類型 3.3.2 運(yùn)算符的優(yōu)先級(jí) 3.3.3 表達(dá)式類型 3.4 小結(jié) 第4章 pl/sql控制語(yǔ)句 4.1 分支控制語(yǔ)句 4.1.1 if-then-else語(yǔ)句 4.1.2 if-then-elsif語(yǔ)句 4.1.3 case語(yǔ)句 4.1.4 搜索case語(yǔ)句 4.2 循環(huán)控制語(yǔ)句 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)語(yǔ)句使用建議 4.3 順序控制語(yǔ)句 4.3.1 goto語(yǔ)句和標(biāo)簽 4.3.2 null語(yǔ)句 4.4 小結(jié) 第2篇 pl/sql開(kāi)發(fā)基礎(chǔ) 第5章 管理數(shù)據(jù)表 5.1 創(chuàng)建表 5.1.1 數(shù)據(jù)定義語(yǔ)言ddl 5.1.2 create table語(yǔ)句 5.1.3 在設(shè)計(jì)器中創(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è)計(jì)器中修改表 5.4 索引 5.4.1 索引簡(jiǎn)介 5.4.2 索引原理 5.4.3 創(chuàng)建索引 5.4.4 修改索引 5.4.5 刪除索引 5.5 使用視圖 5.5.1 視圖簡(jiǎn)介 5.5.2 創(chuàng)建視圖 5.5.3 修改視圖 5.5.4 刪除視圖 5.6 小結(jié) 第6章 查詢數(shù)據(jù)表 6.1 簡(jiǎn)單查詢 6.1.1 查詢表數(shù)據(jù) 6.1.2 指定查詢條件 6.1.3 排序 6.1.4 使用函數(shù) 6.1.5 統(tǒng)計(jì)函數(shù) 6.1.6 分組統(tǒng)計(jì) 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ù)操縱語(yǔ)言dml 7.1.2 插入單行記錄 7.1.3 插入默認(rèn)值和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 序列簡(jiǎn)介 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 同義詞簡(jiǎn)介 7.6.2 創(chuàng)建和使用同義詞 7.7 小結(jié) 第8章 記錄與集合 8.1 記錄類型 8.1.1 記錄類型簡(jiǎn)介 8.1.2 定義記錄類型 8.1.3 記錄類型賦值 8.1.4 操縱記錄類型 8.1.5 使用嵌套記錄 8.2 理解集合類型 8.2.1 集合簡(jiǎn)介 8.2.2 定義索引表 8.2.3 操縱索引表 8.2.4 定義嵌套表 8.2.5 操縱嵌套表 8.2.6 數(shù)據(jù)庫(kù)中的嵌套表 8.2.7 定義變長(zhǎng)數(shù)組 8.2.8 操縱變長(zhǎng)數(shù)組 8.2.9 數(shù)據(jù)庫(kù)中的變長(zhǎng)數(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í)間函數(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 基本語(yǔ)法 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)計(jì)查詢 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)簡(jiǎn)介 10.1.2 游標(biāo)分類 10.1.3 定義游標(biāo)類型 10.1.4 打開(kāi)游標(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)變量簡(jiǎn)介 10.3.2 聲明游標(biāo)變量類型 10.3.3 定義游標(biāo)變量 10.3.4 打開(kāi)游標(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ù)處理簡(jiǎn)介 11.1.1 什么是事務(wù)處理 11.1.2 使用commit提交事務(wù) 11.1.3 使用rollback回滾事務(wù) 11.1.4 使用savepoint保存點(diǎn) 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章 異常處理機(jī)制 12.1 理解異常處理 12.1.1 異常處理簡(jiǎn)介 12.1.2 異常處理語(yǔ)法 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í)行時(shí)異常傳遞 12.3.2 聲明時(shí)異常傳遞 12.3.3 異常處理器中的異常 12.3.4 重新拋出異常 12.3.5 異常處理準(zhǔn)則 12.4 小結(jié) 第3篇 pl/sql進(jìn)階編程 第13章 pl/sql子程序 13.1 子程序結(jié)構(gòu) 13.1.1 子程序簡(jiǎn)介 13.1.2 子程序的優(yōu)點(diǎn) 13.1.3 創(chuàng)建過(guò)程 13.1.4 創(chuàng)建函數(shù) 13.1.5 return語(yǔ)句 13.1.6 查看和刪除子程序 13.2 子程序參數(shù) 13.2.1 形參與實(shí)參 13.2.2 參數(shù)模式 13.2.3 形式參數(shù)的約束 13.2.4 參數(shù)傳遞方式 13.2.5 參數(shù)默認(rèn)值 13.2.6 使用nocopy編譯提示 13.3 子程序進(jìn)階技術(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)點(diǎn) 14.1.3 定義包規(guī)范 14.1.4 定義包體 14.1.5 調(diào)用包組件 14.1.6 編譯和調(diào)試包 14.1.7 查看包的源代碼 14.2 包的進(jìn)階技術(shù) 14.2.1 包重載 14.2.2 包初始化 14.2.3 包的純度級(jí)別 14.2.4 包權(quán)限設(shè)置 14.2.5 在包中使用游標(biāo) 14.3 管理數(shù)據(jù)庫(kù)中的包 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ā)器簡(jiǎn)介 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 使用語(yǔ)句觸發(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章 動(dòng)態(tài)sql語(yǔ)句 16.1 理解動(dòng)態(tài)sql語(yǔ)句 16.1.1 動(dòng)態(tài)sql基礎(chǔ) 16.1.2 動(dòng)態(tài)sql使用時(shí)機(jī) 16.1.3 本地動(dòng)態(tài)sql 16.2 使用execute immediate 16.2.1 execute immediate語(yǔ)法 16.2.2 執(zhí)行sql語(yǔ)句和pl/sql語(yǔ)句塊 16.2.3 使用綁定變量 16.2.4 使用returnning into子句 16.2.5 執(zhí)行單行查詢 16.2.6 指定參數(shù)模式 16.3 多行查詢語(yǔ)句 16.3.1 使用open-for語(yǔ)句 16.3.2 使用fetch語(yǔ)句 16.3.3 關(guān)閉游標(biāo)變量 16.4 使用批量綁定 16.4.1 批量execute immediate語(yǔ)法 16.4.2 使用批量fetch語(yǔ)句 16.4.3 使用批量forall語(yǔ)句 16.5 動(dòng)態(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 動(dòng)態(tài)sql異常處理 16.6 小結(jié) 第4篇 pl/sql高級(jí)編程 第17章 面向?qū)ο缶幊?br /> 17.1 對(duì)象基礎(chǔ) 17.1.1 面向?qū)ο蠛?jiǎn)介 17.1.2 什么是對(duì)象類型 17.1.3 pl/sql中對(duì)象的組成結(jié)構(gòu) 17.2 定義對(duì)象類型 17.2.1 定義對(duì)象類型 17.2.2 定義對(duì)象體 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 使用對(duì)象類型 17.2.9 使用嵌套對(duì)象類型 17.2.10 對(duì)象繼承 17.2.11 方法重載 17.3 管理對(duì)象表 17.3.1 定義對(duì)象表 17.3.2 插入對(duì)象表 17.3.3 檢索對(duì)象表 17.3.4 更新對(duì)象表 17.3.5 刪除對(duì)象表 17.3.6 創(chuàng)建對(duì)象列 17.3.7 使用對(duì)象視圖 17.4 管理對(duì)象類型 17.4.1 查看對(duì)象類型 17.4.2 修改對(duì)象類型 17.5 小結(jié) 第18章 pl/sql性能優(yōu)化建議 18.1 了解pl/sql程序性能 18.1.1 影響性能常見(jiàn)原因 18.1.2 使用dbms_profiler包 18.1.3 使用dbms_trace包 18.2 pl/sql性能優(yōu)化技巧 18.2.1 理解查詢執(zhí)行計(jì)劃 18.2.2 聯(lián)接查詢的表順序 18.2.3 指定where條件順序 18.2.4 避免使用*符號(hào) 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流程控制語(yǔ)句 18.2.10 避免隱式類型的轉(zhuǎn)換 18.3 小結(jié) 第5篇 pl/sql案例實(shí)戰(zhàn) 第19章 企業(yè)ic芯片欠料計(jì)算程序 19.1 系統(tǒng)設(shè)計(jì) 19.1.1 程序需求簡(jiǎn)介 19.1.2 數(shù)據(jù)表er關(guān)系圖 19.1.3 系統(tǒng)總體流程 19.1.4 示例環(huán)境的搭建 19.2 系統(tǒng)編碼實(shí)現(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 計(jì)算企業(yè)ic需求量 19.2.8 預(yù)備下次計(jì)算數(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è)計(jì) 20.1.1 程序需求簡(jiǎn)介 20.1.2 使用utl_ smtp發(fā)送電子郵件 20.1.3 系統(tǒng)總體流程 20.1.4 示例環(huán)境的搭建 20.2 系統(tǒng)編碼實(shí)現(xiàn) 20.2.1 認(rèn)識(shí)mime類型 20.2.2 實(shí)現(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 寫(xiě)入工作薄wb_header 20.2.10 寫(xiě)入工作表xm_worksheet 20.2.11 寫(xiě)入表格行xm_ws_row 20.2.12 寫(xiě)入工作表尾信息 20.2.13 執(zhí)行sql語(yǔ)句寫(xiě)入工作表 20.3 編譯和部署應(yīng)用程序 20.3.1 編譯與調(diào)試應(yīng)用程序 20.3.2 驗(yàn)證測(cè)試結(jié)果 20.3.3 部署到生產(chǎn)服務(wù)器 20.4 小結(jié)
第1章Oracle11g數(shù)據(jù)庫(kù)系統(tǒng)
Oracle數(shù)據(jù)庫(kù)系統(tǒng)是世界領(lǐng)先的數(shù)據(jù)庫(kù)管理系統(tǒng),Oracle數(shù)據(jù)庫(kù)以其功能強(qiáng)大和配置靈活而著稱,同時(shí)也因有一定的操作難度,讓很多初學(xué)者望而卻步。本書(shū)將由淺入深,以簡(jiǎn)單易懂的示例帶領(lǐng)讀者撥開(kāi)Oracle的神秘面紗。 目前在Oracle世界主要有兩類人員:一類是Oracle數(shù)據(jù)庫(kù)管理人員,簡(jiǎn)稱DBA;一類是Oracle開(kāi)發(fā)人員。OracleDBA主要的工作是負(fù)責(zé)日常的數(shù)據(jù)庫(kù)維護(hù)和性能優(yōu)化管理。由于Oracle系統(tǒng)較龐大、復(fù)雜,要成為一名合格的DBA,需要掌握的知識(shí)較多,比如要掌握Oracle體系結(jié)構(gòu)和性能優(yōu)化等方面的知識(shí),相對(duì)其他數(shù)據(jù)庫(kù)而言入門門檻較高,但是薪酬一般也較豐厚。Oracle開(kāi)發(fā)人員的主要工作是使用Oracle提供的SQL語(yǔ)言和PL/SQL結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言操作數(shù)據(jù)庫(kù),主要職責(zé)是操縱Oracle數(shù)據(jù)庫(kù)對(duì)象,不需要對(duì)Oracle系統(tǒng)結(jié)構(gòu)有深入了解,入門較容易。當(dāng)Oracle開(kāi)發(fā)人員積累了一定的開(kāi)發(fā)知識(shí)后,可以通過(guò)學(xué)習(xí)OracleDBA方面的知識(shí)向數(shù)據(jù)庫(kù)管理員轉(zhuǎn)型。 1.1關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)介紹 1970年6月,IBM公司的研究員E.F.Codd博士(中文名:埃德加·弗蘭克·科德),發(fā)表了名為“大型共享數(shù)據(jù)庫(kù)的關(guān)系模型”的論文,受到了學(xué)術(shù)界和產(chǎn)業(yè)界的高度重視和廣泛響應(yīng),使得關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)很快成為數(shù)據(jù)庫(kù)市場(chǎng)的主流。E.F.Codd博士被譽(yù)為“關(guān)系數(shù)據(jù)庫(kù)之父”,其照片如圖1.1所示。 圖1.1關(guān)系數(shù)據(jù)庫(kù)之父埃德加·弗蘭克·科德 1.1.1什么是關(guān)系型數(shù)據(jù)模型 關(guān)系型數(shù)據(jù)庫(kù)簡(jiǎn)而言之就是使用關(guān)系或二維表存儲(chǔ)信息。以公司的人員信息管理為例,為了存儲(chǔ)公司內(nèi)部的員工信息,人事部門一般會(huì)建一份列表,在公司未引入信息化管理系統(tǒng)時(shí),大多數(shù)人事職員會(huì)使用Excel來(lái)保存員工信息,例如圖1.2是一份簡(jiǎn)單的人員信息列表的Excel文件。 這種Excel存儲(chǔ)數(shù)據(jù)的方式,將人員的所有信息都包含在一張表中,隨著Excel中的欄位和記錄數(shù)越來(lái)越多,這份人員信息表會(huì)變得越來(lái)越繁雜,這種存儲(chǔ)數(shù)據(jù)的方式稱為平面文件數(shù)據(jù)模型。 為了簡(jiǎn)化修改與維護(hù)的復(fù)雜性,關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)人員通過(guò)使用實(shí)體關(guān)系模型進(jìn)行數(shù)據(jù)庫(kù)建模,例如人員信息表可以分為員工表和部門表,通過(guò)部門編號(hào)進(jìn)行關(guān)聯(lián),ER模型如圖1.3所示。 圖1.2Excel人員信息列表圖1.3人員信息表ER關(guān)系模型 由圖1.3中可以看到,通過(guò)將員工和部門分別存儲(chǔ)在不同的二維表格中,使用主鍵(PK)和外鍵(FK)進(jìn)行關(guān)聯(lián),使得獲取和維護(hù)數(shù)據(jù)變得更容易,這就是關(guān)系型數(shù)據(jù)模型。上述ER圖的3個(gè)關(guān)鍵組件分別如下所示。 *實(shí)體:需要了解的信息,比如部門和員工信息。 *屬性:一般也稱為列或字段,描述實(shí)體必須或可選的信息,比如員工表中的工號(hào)和姓名等。 *關(guān)系:實(shí)體之間指定的關(guān)聯(lián),比如員工的部門編號(hào)關(guān)聯(lián)到了部門表的編號(hào)屬性。 關(guān)系型數(shù)據(jù)模型還涉及一些較復(fù)雜的組成元素,涉及較多的數(shù)學(xué)知識(shí),有興趣的讀者可以參考一些理論性的讀物。 1.1.2數(shù)據(jù)庫(kù)系統(tǒng)范式 為了規(guī)范化關(guān)系型數(shù)據(jù)模型,關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)在設(shè)計(jì)時(shí)必須遵循一定的規(guī)則,這種規(guī)則稱為關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)范式。了解范式是每個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)或開(kāi)發(fā)人員必須具備的基本功,范式的主要目的是降低數(shù)據(jù)冗余,設(shè)計(jì)結(jié)構(gòu)合理的數(shù)據(jù)庫(kù)。目前較常用的范式有如下3種。 1.第一范式(1NF):字段必須具有單一屬性特性,不可再拆分 如果字段中的值已經(jīng)是無(wú)法再分割的值,則符合第一范式,即1NF。例如,在員工表中,姓名字段一般僅包含員工的正式姓名,這是符合第一范式的,但是如果要在姓名字段中包含中文名、英文名、昵稱、別名等信息,就意味著姓名字段是可再拆分的。因此員工名的設(shè)計(jì)可以如圖1.4所示。 圖1.4修改后的員工表以匹配1NF范式 2.第二范式(2NF):表要具有唯一性的主鍵列 第二范式(2NF)要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被唯一地區(qū)分,為實(shí)現(xiàn)區(qū)分通常需要為表加上一個(gè)列,以存儲(chǔ)各個(gè)實(shí)例的唯一標(biāo)識(shí)。第二范式是在第一范式的基礎(chǔ)上的進(jìn)一步增強(qiáng),在數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)一般使用唯一性主鍵來(lái)唯一地標(biāo)識(shí)行。比如在員工表中定義了以工號(hào)作為主鍵,因?yàn)楣締T工的工號(hào)通常用來(lái)識(shí)別某個(gè)員工個(gè)體,不能進(jìn)行重復(fù);在部門表中通過(guò)部門編號(hào)作為主鍵,來(lái)唯一地區(qū)分一個(gè)部門。 3.第三范式(3NF):表中的字段不能包含在其他表中已出現(xiàn)的非主鍵字段 第三范式(3NF)是在前兩個(gè)范式的基礎(chǔ)上的進(jìn)一步增強(qiáng),主要用來(lái)降低數(shù)據(jù)的冗余。比如,員工表中包含了部門編號(hào),它引用到部門表中的部門編號(hào)這個(gè)主鍵,符合第三范式。如果在員工表中又包含一個(gè)部門名稱,那么表中的字段就包含了其他表中已出現(xiàn)的非主鍵字段,造成了數(shù)據(jù)的冗余,不符合第三范式。 范式主要用來(lái)規(guī)范數(shù)據(jù)庫(kù)的設(shè)計(jì),使得設(shè)計(jì)出來(lái)的數(shù)據(jù)庫(kù)結(jié)構(gòu)清晰,簡(jiǎn)潔易懂,避免了數(shù)據(jù)冗余和操作的異常。在設(shè)計(jì)數(shù)據(jù)庫(kù)模型時(shí),靈活地應(yīng)用范式是創(chuàng)建一個(gè)優(yōu)秀的數(shù)據(jù)庫(kù)系統(tǒng)的基石。 1.1.3關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng) 關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),簡(jiǎn)稱DBMS,是基于關(guān)系型數(shù)據(jù)庫(kù)理論而開(kāi)發(fā)的軟件系統(tǒng)。目前比較熱門的關(guān)系型數(shù)據(jù)管理系統(tǒng)有:Oracle、MicrosoftSQLServer、Access、MySQL及PostgreSQL等。數(shù)據(jù)庫(kù)管理系統(tǒng)是用于建立、使用和維護(hù)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,保證數(shù)據(jù)庫(kù)的安全性和完整性的一套大型的電腦程序。數(shù)據(jù)庫(kù)管理系統(tǒng)功能結(jié)構(gòu)示意圖如圖1.5所示。 圖1.5數(shù)據(jù)庫(kù)管理系統(tǒng)功能結(jié)構(gòu)示意圖 如圖1.5所示,一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)通常要提供如下所示的幾項(xiàng)功能。 *定義數(shù)據(jù)庫(kù)結(jié)構(gòu):DBMS提供數(shù)據(jù)定義語(yǔ)言來(lái)定義(DDL)數(shù)據(jù)庫(kù)結(jié)構(gòu),用來(lái)搭建數(shù)據(jù)庫(kù)框架,并被保存在數(shù)據(jù)字典中。 *存取數(shù)據(jù)庫(kù)內(nèi)容:DBMS提供數(shù)據(jù)操縱語(yǔ)言(DML),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的基本存取操作,即檢索、插入、修改和刪除等。 *數(shù)據(jù)庫(kù)的運(yùn)行管理:DBMS提供數(shù)據(jù)控制功能,即數(shù)據(jù)的安全性、完整性和并發(fā)控制等,對(duì)數(shù)據(jù)庫(kù)運(yùn)行進(jìn)行有效的控制和管理,以確保數(shù)據(jù)正確有效。 *數(shù)據(jù)庫(kù)的建立和維護(hù):包括數(shù)據(jù)庫(kù)初始數(shù)據(jù)的裝入,數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)、恢復(fù)、重組織,系統(tǒng)性能監(jiān)視、分析等功能。 *數(shù)據(jù)庫(kù)的傳輸:DBMS提供處理數(shù)據(jù)的傳輸,實(shí)現(xiàn)用戶程序與DBMS之間的通信,通常與操作系統(tǒng)協(xié)調(diào)完成。 有了關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)人員就可以在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù)、創(chuàng)建表、存取數(shù)據(jù)庫(kù)內(nèi)容、對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份和管理,只需要理解常用的系統(tǒng)相關(guān)的操作,而不用去研究關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部深?yuàn)W難懂的數(shù)據(jù)方面的理論知識(shí)。 1.1.4使用SQL語(yǔ)句與數(shù)據(jù)庫(kù)管理系統(tǒng)通信 關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)提供了SQL語(yǔ)言,允許用戶操縱數(shù)據(jù)庫(kù)。SQL語(yǔ)言的全稱是結(jié)構(gòu)化查詢語(yǔ)言(StructuredQueryLanguage),它是高級(jí)的非過(guò)程化編程語(yǔ)言,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作。它不要求用戶指定對(duì)數(shù)據(jù)的存放方法,也不需要用戶了解其具體的數(shù)據(jù)存放方式,其操作示意圖如圖1.6所示。 盡管SQL語(yǔ)言已經(jīng)被ISO組織定義了具有國(guó)際標(biāo)準(zhǔn)的SQL規(guī)范,但是各種數(shù)據(jù)庫(kù)系統(tǒng)廠商在其數(shù)據(jù)庫(kù)管理系統(tǒng)中都對(duì)SQL規(guī)范做了某些編改和擴(kuò)充。所以,實(shí)際上不同數(shù)據(jù)庫(kù)系統(tǒng)之間的SQL不能完全相互通用,目前比較流行的兩大類SQL語(yǔ)言分別是微軟的T-SQL和Oracle的PL/SQL,這兩類SQL既有相似之處又有不同之處。 圖1.6使用SQL操作數(shù)據(jù)庫(kù)管理系統(tǒng) SQL語(yǔ)言主要又分為如下兩大類。 *DML數(shù)據(jù)操縱語(yǔ)言,主要是完成數(shù)據(jù)的增、刪、改和查詢的操作。 *DDL數(shù)據(jù)定義語(yǔ)言,主要用來(lái)創(chuàng)建或修改表、視圖、存儲(chǔ)過(guò)程及用戶等。 除此之外,還包含稱為DCL的數(shù)據(jù)控制語(yǔ)言。數(shù)據(jù)庫(kù)管理員,即DBA,通常使用DDL來(lái)管理數(shù)據(jù)庫(kù)的對(duì)象,而數(shù)據(jù)操縱語(yǔ)言DML則主要由數(shù)據(jù)庫(kù)開(kāi)發(fā)人員使用來(lái)操縱數(shù)據(jù)。 舉個(gè)例子,如果想要在數(shù)據(jù)庫(kù)中創(chuàng)建如圖1.4所示的關(guān)系模型,可以使用代碼1.1的DDL語(yǔ)句來(lái)實(shí)現(xiàn)。 代碼1.1使用DDL語(yǔ)句創(chuàng)建列和鍵 --創(chuàng)建員工表 CREATETABLE員工表 (--定義員工表列 工號(hào)INTNOTNULL, 中文姓名NVARCHAR2(20)NOTNULL, 英文姓名VARCHAR2(20)NULL, 別名VARCHAR2(20)NULL, 年齡INTDEFAULT18, 入職日期DATENULL, 部門編號(hào)INTNULL, --定義員工表主鍵 CONSTRAINTPK_員工表PRIMARYKEY(工號(hào)) ……
你還可能感興趣
我要評(píng)論
|