![數(shù)據(jù)庫培訓(xùn)教程PPT教案_第1頁](http://file3.renrendoc.com/fileroot3/2021-11/29/4c7518ba-5b1b-45a1-b33c-e569f2bb1087/4c7518ba-5b1b-45a1-b33c-e569f2bb10871.gif)
![數(shù)據(jù)庫培訓(xùn)教程PPT教案_第2頁](http://file3.renrendoc.com/fileroot3/2021-11/29/4c7518ba-5b1b-45a1-b33c-e569f2bb1087/4c7518ba-5b1b-45a1-b33c-e569f2bb10872.gif)
![數(shù)據(jù)庫培訓(xùn)教程PPT教案_第3頁](http://file3.renrendoc.com/fileroot3/2021-11/29/4c7518ba-5b1b-45a1-b33c-e569f2bb1087/4c7518ba-5b1b-45a1-b33c-e569f2bb10873.gif)
![數(shù)據(jù)庫培訓(xùn)教程PPT教案_第4頁](http://file3.renrendoc.com/fileroot3/2021-11/29/4c7518ba-5b1b-45a1-b33c-e569f2bb1087/4c7518ba-5b1b-45a1-b33c-e569f2bb10874.gif)
![數(shù)據(jù)庫培訓(xùn)教程PPT教案_第5頁](http://file3.renrendoc.com/fileroot3/2021-11/29/4c7518ba-5b1b-45a1-b33c-e569f2bb1087/4c7518ba-5b1b-45a1-b33c-e569f2bb10875.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫培訓(xùn)教程數(shù)據(jù)庫培訓(xùn)教程第1頁/共80頁隨著計算機(jī)技術(shù)、通信技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,人類社會已經(jīng)進(jìn)入了信息化時代。信息資源已經(jīng)成為最重要和寶貴的資源之一,確保信息資源的存儲,以及其有效性就變得非常重要,而保存信息的核心就是數(shù)據(jù)庫技術(shù)。對于數(shù)據(jù)庫技術(shù),當(dāng)前應(yīng)用最為廣泛的是關(guān)系型數(shù)據(jù)庫,而在關(guān)系型數(shù)據(jù)庫中,Oracle公司推出的Oracle數(shù)據(jù)庫是其中佼佼者。本書所基于的數(shù)據(jù)庫為Oracle 11g 。第2頁/共80頁關(guān)系數(shù)據(jù)庫的邏輯模型關(guān)系數(shù)據(jù)庫的設(shè)計規(guī)范理解什么是網(wǎng)格技術(shù)了解Oracle的應(yīng)用結(jié)構(gòu)了解Oracle的體系結(jié)構(gòu)第3頁/共80頁 關(guān)系數(shù)據(jù)庫具有堅實的理論基礎(chǔ),這一理論有助于關(guān)系數(shù)據(jù)
2、庫的設(shè)計和用戶對數(shù)據(jù)庫信息需求的有效處理。它涉及的內(nèi)容有關(guān)模式的基本知識、關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言SQL,以及關(guān)系數(shù)據(jù)理論,在本節(jié)中將對這些做簡要的介紹。第4頁/共80頁 數(shù)據(jù)庫系統(tǒng)是指一個計算機(jī)存儲記錄的系統(tǒng),它需要特定的軟件和一系列硬件支持;并且利用數(shù)據(jù)庫系統(tǒng)能夠存儲大量的數(shù)據(jù)記錄,支持用戶進(jìn)行檢索和更新所需的信息。數(shù)據(jù)庫系統(tǒng)通常在企業(yè)應(yīng)用或科學(xué)研究中用于對大量數(shù)據(jù)進(jìn)行存儲和分析,從而為實際應(yīng)用提供幫助信息。第5頁/共80頁在關(guān)系數(shù)據(jù)庫的設(shè)計階段,需要為它建立邏輯模型。關(guān)系數(shù)據(jù)庫的邏輯模型可以通過實體和關(guān)系組成的圖來表示,這種圖表稱為“E-R圖”,使用E-R圖表示的邏輯模型被稱為“ER模型”。
3、一個典型的ER模型由如下三部分組成:實體、聯(lián)系和屬性。第6頁/共80頁 在關(guān)系數(shù)據(jù)庫中,為了保證構(gòu)造的表(關(guān)系)既能準(zhǔn)確地反應(yīng)現(xiàn)實世界,又有利于應(yīng)用和具體的操作,還需要對構(gòu)造的表進(jìn)行規(guī)范化,常用的規(guī)范化方法就是對關(guān)系應(yīng)用不同的設(shè)計范式。在關(guān)系數(shù)據(jù)庫中,在構(gòu)造數(shù)據(jù)庫時必須遵循一定的規(guī)則,這種規(guī)則就是范式。 第7頁/共80頁 Oracle數(shù)據(jù)庫是Oracle公司出品的十分優(yōu)秀的DBMS,當(dāng)前Oracle DBMS以及相關(guān)的產(chǎn)品幾乎在全世界各個工業(yè)領(lǐng)域中都有應(yīng)用。無論是大型企業(yè)中的數(shù)據(jù)倉庫應(yīng)用,還是中小型的聯(lián)機(jī)事務(wù)處理業(yè)務(wù),都可以找到成功使用Oracle數(shù)據(jù)庫系統(tǒng)的典范。到目前為止,11g是Orac
4、le數(shù)據(jù)庫的最新版本,它是在10g的基礎(chǔ)上對企業(yè)級網(wǎng)格計算進(jìn)行了擴(kuò)展,提供了眾多特性支持企業(yè)網(wǎng)格計算。第8頁/共80頁 超級計算機(jī)作為復(fù)雜科學(xué)計算領(lǐng)域的主宰,以其強(qiáng)大的處理能力著稱。但以超級計算機(jī)為中心的計算模式存在明顯的不足,由于它的造價極高,通常只有一些國家級的部門,如航天、氣象等部門才有能力配置。而隨著人們?nèi)粘9ぷ饔龅降纳虡I(yè)計算越來越復(fù)雜,人們越來越需要數(shù)據(jù)處理能力更強(qiáng)大的計算機(jī)。于是,人們開始尋找一種造價低廉而數(shù)據(jù)處理能力超強(qiáng)的計算模式,最終找到了答案網(wǎng)格計算Grid Computing。第9頁/共80頁 Oracle 10g/11g中的g代表網(wǎng)格計算,Oracle數(shù)據(jù)庫作為第一個為企
5、業(yè)級網(wǎng)格計算而設(shè)計的數(shù)據(jù)庫,為管理信息和應(yīng)用提供了最靈活的、成本最低的方式。例如,通過Oracle網(wǎng)格計算,可以在幾個互聯(lián)的數(shù)據(jù)庫服務(wù)器網(wǎng)格上運行不同的應(yīng)用。當(dāng)應(yīng)用需求增加時,數(shù)據(jù)庫管理員能夠自動為應(yīng)用提供更多的服務(wù)器支持。網(wǎng)格計算使用最高端的負(fù)載管理機(jī)制,使得應(yīng)用能夠共享多個服務(wù)器上的資源,從而提高數(shù)據(jù)處理能力,減少對硬件資源的需求,節(jié)省企業(yè)成本。第10頁/共80頁 在安裝、部署Oracle 11g數(shù)據(jù)庫時,需要根據(jù)硬件平臺和操作系統(tǒng)的不同采取不同的結(jié)構(gòu),下面介紹幾種常用的應(yīng)用結(jié)構(gòu)。第11頁/共80頁 在安裝、部署Oracle 11g數(shù)據(jù)庫時,需要根據(jù)硬件平臺和操作系統(tǒng)的不同采取不同的結(jié)構(gòu),
6、下面介紹幾種常用的應(yīng)用結(jié)構(gòu)。第12頁/共80頁 在客戶/服務(wù)器結(jié)構(gòu)中,數(shù)據(jù)庫服務(wù)器的管理和應(yīng)用分布在兩臺計算機(jī)上,客戶機(jī)上安裝應(yīng)用程序和連接工具,通過Oracle專用的網(wǎng)絡(luò)協(xié)議SQL *Net建立和服務(wù)器的連接,發(fā)出數(shù)據(jù)請求。服務(wù)器上運行數(shù)據(jù)庫,通過網(wǎng)絡(luò)協(xié)議接收連接請求,將執(zhí)行結(jié)果回送客戶機(jī)。第13頁/共80頁 分布式結(jié)構(gòu)是客戶機(jī)/服務(wù)器結(jié)構(gòu)的一種特殊類型。在這種結(jié)構(gòu)中,分布式數(shù)據(jù)庫系統(tǒng)在邏輯上是整體,但在物理上分布在不同的計算機(jī)網(wǎng)絡(luò)里,通過連接網(wǎng)絡(luò)連接在一起。網(wǎng)絡(luò)中的每個節(jié)點可以獨立處理本地數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù),執(zhí)行局部應(yīng)用,同是也可存取處理多個異地數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù),執(zhí)行全局應(yīng)用。第14
7、頁/共80頁 內(nèi)存結(jié)構(gòu): 系統(tǒng)全局區(qū) (SGA):數(shù)據(jù)庫緩沖區(qū)高速緩存、重做緩沖區(qū)和各種池 程序全局區(qū) (PGA) 進(jìn)程結(jié)構(gòu): 用戶進(jìn)程和服務(wù)器進(jìn)程 后臺進(jìn)程:SMON、PMON、DBWn、CKPT、LGWR、ARCn 等等 存儲結(jié)構(gòu): 邏輯:數(shù)據(jù)庫、方案、表空間、段、區(qū)和 Oracle 塊 物理:數(shù)據(jù)、參數(shù)、重做和 OS 塊使用的文件第15頁/共80頁Oracle 服務(wù)器: 是一個數(shù)據(jù)庫管理系統(tǒng),它提供開放、全面、集成的方法進(jìn)行信息管理 由 Oracle 實例和 Oracle 數(shù)據(jù)庫組成第16頁/共80頁數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)庫結(jié)構(gòu) - 內(nèi)存內(nèi)存 - 進(jìn)程進(jìn)程 - 存儲存儲 存儲結(jié)構(gòu)存儲結(jié)構(gòu)內(nèi)存結(jié)構(gòu)
8、內(nèi)存結(jié)構(gòu)進(jìn)程結(jié)構(gòu)進(jìn)程結(jié)構(gòu)實例 系統(tǒng)全局區(qū)系統(tǒng)全局區(qū) (SGA)后臺進(jìn)程后臺進(jìn)程數(shù)據(jù)庫文件第17頁/共80頁數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)庫結(jié)構(gòu) 內(nèi)存內(nèi)存 進(jìn)程進(jìn)程 存儲存儲 Java 池數(shù)據(jù)庫緩沖區(qū)高速緩存重做日志緩沖區(qū)共享池大型池SGAStreams 池服務(wù)器進(jìn)程 1PGA服務(wù)器進(jìn)程 2PGA后臺進(jìn)程PGA第18頁/共80頁數(shù)據(jù)庫結(jié)構(gòu)數(shù)據(jù)庫結(jié)構(gòu) 內(nèi)存內(nèi)存 進(jìn)程進(jìn)程 存儲存儲 實例SGA后臺進(jìn)程后臺進(jìn)程服務(wù)器進(jìn)程PGA用戶進(jìn)程用戶進(jìn)程 用戶進(jìn)程:在數(shù)據(jù)庫用戶請求連接到 Oracle 服務(wù)器時啟動 服務(wù)器進(jìn)程:可以連接到 Oracle 實例,它在用戶建立會話時啟動 后臺進(jìn)程:在啟動 Oracle 實例時啟動第1
9、9頁/共80頁系統(tǒng)監(jiān)視器 (SMON)數(shù)據(jù)庫寫進(jìn)程 (DBWn)日志寫進(jìn)程 (LGWR)進(jìn)程監(jiān)視器 (PMON) 歸檔進(jìn)程 (ARCn)SGAJava 池共享池大型池Streams 池數(shù)據(jù)庫 緩沖區(qū)高速緩存重做日志緩沖區(qū)檢查點 (CKPT)控制文件控制文件數(shù)據(jù)文件數(shù)據(jù)文件重做日志重做日志 文件文件歸檔日志歸檔日志文件文件第20頁/共80頁SQL誕生于70年代的IBM某實驗室。 SQL是一種非過程語言,它描述了如何對數(shù)據(jù)進(jìn)行檢索、插入、刪除,但它并不說明如何進(jìn)行這樣的操作。SQL最新標(biāo)準(zhǔn)為ANSI-92。盡管該標(biāo)準(zhǔn)要求所有的數(shù)據(jù)庫設(shè)計者應(yīng)遵守這一標(biāo)準(zhǔn),然而所有的數(shù)據(jù)庫系統(tǒng)、所用的SQL均與ANS
10、I-92存在一定的差異。本文基于ORACLE數(shù)據(jù)庫介紹SQL。本文重點介紹數(shù)據(jù)庫的開發(fā)部分而不是管理部分。第21頁/共80頁了解數(shù)據(jù)庫的常用對象。熟練掌握標(biāo)準(zhǔn)SQL的使用。熟練掌握ORACLE常用標(biāo)量函數(shù)的使用。熟悉SQL的常用優(yōu)化方法。了解ORACLE的存儲過程及觸發(fā)器的開發(fā)。 第22頁/共80頁表空間與數(shù)據(jù)文件用戶與權(quán)限表索引、PK、FK視圖序列內(nèi)部函數(shù)自定義函數(shù)存儲過程觸發(fā)器第23頁/共80頁常用數(shù)據(jù)類型表相關(guān)DDLSelectinsertUpdateDelete聚集函數(shù)常用標(biāo)量函數(shù)謂詞第24頁/共80頁字符類數(shù)字類日期類二進(jìn)制類第25頁/共80頁CREATE TABLECREATE T
11、ABLE table_name(column_name1 data_type,column_name2 data_type,.)DROP TABLE DROP TABLE table_name ALTER TABLEALTER TABLE table_name ADD column_name datatypeALTER TABLE table_name DROP column_name ALTER TABLE table_name MODIFY column_name 第26頁/共80頁SELECT DISTINCTselect_list INTO new_table FROM table_s
12、ource WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC 第27頁/共80頁INSERT INTO table_nameVALUES (value1, value2,.)INSERT INTO table_name (column1, column2,.)VALUES (value1, value2,.) 第28頁/共80頁UPDATE table_name SET column_name = new_value,W
13、HERE column_name = some_value第29頁/共80頁DELETE FROM table_name WHERE column_name = some_value 第30頁/共80頁INBETWEENLIKEEXISTS第31頁/共80頁COUNTSUMMAXMINAVGGROUP BYHAVING第32頁/共80頁數(shù)學(xué)函數(shù)字符類函數(shù)SUBSTR、REPLACE、TRIM、LOWER、UPPER日期函數(shù) SYSDATE轉(zhuǎn)換函數(shù)TO_CHAR、TO_DATE、TO_NUMBER其他NVL、DECODE、CASE WHEN第33頁/共80頁子查詢表關(guān)聯(lián)外連接第34頁/共80頁-
14、訂單明細(xì)create table orderdetail(orderid int not null,productid int not null,quantity int not null);第35頁/共80頁-產(chǎn)品數(shù)據(jù)insert into productinfo values(1,ThinkPadR32,IBM,12000);insert into productinfo values(2,ThinkPadR40,IBM,15000);insert into productinfo values(3,Nokia3210,Nokia,1000);insert into productinfo
15、 values(4,Nokia4110,Nokia,2000);-訂單數(shù)據(jù)insert into orderinfo values(1,order1,hoperun,to_date(20070101,yyyymmdd);insert into orderinfo values(2,order2,microsoft,to_date(20060101,yyyymmdd);insert into orderinfo values(3,order3,hoperun,to_date(20070105,yyyymmdd);-訂單明細(xì)數(shù)據(jù)insert into orderdetail values(1,1,
16、10);insert into orderdetail values(1,2,5);insert into orderdetail values(1,3,2);insert into orderdetail values(2,1,30);insert into orderdetail values(2,2,50);insert into orderdetail values(2,3,60);insert into orderdetail values(2,4,100);insert into orderdetail values(3,1,2);insert into orderdetail v
17、alues(3,2,3);第36頁/共80頁(1)查詢采購ThinkPadR32產(chǎn)品的訂單明細(xì):select * from orderdetail where productid = (select productid from productinfo where productname=ThinkPadR32)第37頁/共80頁(2)查詢采購IBM公司產(chǎn)品的訂單明細(xì):select * from orderdetail where productid in (select productid from productinfo where companyname=IBM)第38頁/共80頁(3)
18、查詢hoperun客戶采購的ibm公司產(chǎn)品列表:select * from orderdetail where orderid in(select orderid from orderinfo where customer=hoperun) and productid in (select productid from productinfo where companyname=IBM)order by orderid第39頁/共80頁(4)查詢hoperun客戶采購的ibm公司價格在13000以上的所有產(chǎn)品的總件數(shù):select sum(quantity) from orderdetail
19、where orderid in(select orderid from orderinfo where customer=hoperun) and productid in (select productid from productinfo where companyname=IBM and price13000)第40頁/共80頁查詢2007年定購Nokia產(chǎn)品的客戶:select distinct customer from orderinfo where orderdate=to_date(20070101,yyyymmdd)and orderid in(select orderid
20、 from orderdetail where productid in(select productid from productinfo where companyname=Nokia)第41頁/共80頁相關(guān)子查詢和獨立子查詢的概念。2.3.2(2)中的,查詢采購IBM公司產(chǎn)品的訂單明細(xì):select * from orderdetail where productid in (select productid from productinfo where companyname=IBM)用exists相關(guān)子查詢描述為:select * from orderdetail awhere ex
21、ists(select * from productinfo b where ductid=ductid and panyname=IBM)第42頁/共80頁2.3.3中的,查詢2007年定購Nokia產(chǎn)品的客戶:select distinct customer from orderinfo where orderdate=to_date(20070101,yyyymmdd)and orderid in(select orderid from orderdetail where productid in(select productid from productinfo w
22、here companyname=Nokia)用exists相關(guān)子查詢描述為:select distinct customer from orderinfo awhere a.orderdate=to_date(20070101,yyyymmdd)and exists(select * from orderdetail b where a.orderid=b.orderid and exists(select * from productinfo c where ductid=ductid and panyname=Nokia)第43頁/共80頁笛卡爾叉積等值連接不等值連接
23、第44頁/共80頁select * from orderinfo,orderdetail第45頁/共80頁(1)按照訂單號、采購產(chǎn)品名稱、數(shù)量顯示訂單明細(xì)信息:select a.orderid,ductname,a.quantity from orderdetail a,productinfo bwhere ductid=ductid第46頁/共80頁(2)按照客戶名稱、訂單名稱、采購產(chǎn)品名稱、數(shù)量顯示訂單明細(xì)信息:select c.customer,c.ordername,ductname,a.quantity from orderdetail a,p
24、roductinfo b,orderinfo cwhere ductid=ductid and a.orderid=c.orderid第47頁/共80頁極少使用,不作介紹。第48頁/共80頁插入一條新產(chǎn)品數(shù)據(jù):insert into productinfo values(5,ThinkPadT41,IBM,20000);查詢已訂貨產(chǎn)品的訂貨情況select ductname,b.orderid,b.quantityfrom productinfo a,orderdetail bwhere ductid=ductidorder by d
25、uctname,b.orderid查詢所有產(chǎn)品的訂貨情況select ductname,b.orderid,b.quantityfrom productinfo a left join orderdetail bon ductid=ductidorder by ductname,b.orderid第49頁/共80頁左連接select ductname,b.orderid,b.quantityfrom productinfo a left join orderdetail bon ductid=ductidorder by a
26、.productname,b.orderid右連接select ductname,b.orderid,b.quantityfrom orderdetail b right join productinfo aon ductid=ductidorder by ductname,b.orderid第50頁/共80頁統(tǒng)計所有產(chǎn)品的訂貨數(shù)量:select ductname,nvl(sum(b.quantity),0)from productinfo a left join orderdetail bon ductid=ductidg
27、roup by ductnameorder by ductname第51頁/共80頁基于數(shù)據(jù)庫的應(yīng)用系統(tǒng)性能的優(yōu)化主要從兩個方面來考慮,即DBA級和SQL級。DBA級的優(yōu)化主要包括:數(shù)據(jù)庫內(nèi)存及緩沖池的合理配置、數(shù)據(jù)表空間(數(shù)據(jù)段)和索引表空間(數(shù)據(jù)段)的分離、裸設(shè)備/文件系統(tǒng)的合理使用以及巨型表的分區(qū)等等。本文主要介紹較常用的、可操作性較強(qiáng)的SQL級的優(yōu)化方法。第52頁/共80頁全表掃描:當(dāng)數(shù)據(jù)庫服務(wù)為執(zhí)行某一個SQL語句需要對表中的每一個記錄進(jìn)行檢查時就會發(fā)生全表掃描。它通常在執(zhí)行SELECT語句時發(fā)生,但有時也會在更新和刪除記錄時發(fā)生。全表掃描通常是因為在WHERE子
28、句中使用了索引中沒有的字段。一般情況下,應(yīng)避免全表掃描。第53頁/共80頁全表掃描:當(dāng)數(shù)據(jù)庫服務(wù)為執(zhí)行某一個SQL語句需要對表中的每一個記錄進(jìn)行檢查時就會發(fā)生全表掃描。它通常在執(zhí)行SELECT語句時發(fā)生,但有時也會在更新和刪除記錄時發(fā)生。全表掃描通常是因為在WHERE子句中使用了索引中沒有的字段。一般情況下,應(yīng)避免全表掃描。第54頁/共80頁創(chuàng)建索引:避免全表掃描的首要手段就是創(chuàng)建索引。在下列情況下,需要建立索引:最大的限制條件返回表的數(shù)據(jù)庫小于表總數(shù)據(jù)量的10%。最大的限制條件在SQL語句中是經(jīng)常使用的。列經(jīng)常被ORDER BY或GROUP BY子句所引用。在SQL中應(yīng)盡量避免在索引列上使用
29、函數(shù)。如ORDER BY TO_NUMBER(USERID)第55頁/共80頁版本較老得ORACLE數(shù)據(jù)庫中WHERE子句的布局: 查詢優(yōu)化器對WHERE子句中的條件是從后向前讀。 盡量把最大條件的限制條件語句放在最后。第56頁/共80頁OR、IN、EXISTS:盡量少用OR,而用IN。盡量用EXISTS代替IN,因為IN不使用索引,而EXISTS使用索引進(jìn)行優(yōu)化。第57頁/共80頁存儲過程可簡單地理解為一個處理復(fù)雜業(yè)務(wù)邏輯的一組SQL代碼塊。存儲過程的優(yōu)勢主要有:存儲過程業(yè)務(wù)邏輯集中,方便維護(hù)。存儲過程是預(yù)編譯的,可提高性能。存儲過程可大量減少應(yīng)用程序與數(shù)據(jù)庫服務(wù)器的通信,減少網(wǎng)絡(luò)負(fù)荷。在多
30、層架構(gòu)體系出現(xiàn)之前,很多應(yīng)用系統(tǒng)采用存儲過程來封裝業(yè)務(wù)邏輯。第58頁/共80頁根據(jù)訂單號刪除訂單及其明細(xì)信息。CREATE OR REPLACE PROCEDURE del_order(v_order_id in varchar2)asbegin -刪除子表 delete from orderdetail where orderid=v_order_id; -刪除主表 delete from orderinfo where orderid=v_order_id; commit;end;/執(zhí)行該存儲過程:execute del_order(1);第59頁/共80頁觸發(fā)器機(jī)制從本質(zhì)上來說是一種特殊
31、類型的存貯過程,它可以在下列的三種情況之一發(fā)生時自動運行。更新插入刪除。觸發(fā)器機(jī)制所進(jìn)行的活動是被默認(rèn)為事務(wù)處理的一部分進(jìn)行。第60頁/共80頁對插入或修改userinfo.useraddr字段的null值自動轉(zhuǎn)換成空字符串。CREATE OR REPLACE TRIGGER trg_userinfo BEFORE INSERT OR UPDATE ON userinfo FOR EACH ROWBEGIN IF (:new.useraddr IS NULL) THEN :new.useraddr:=; END IF;END;第61頁/共80頁本部分內(nèi)容前提要求熟練掌握了基本的SQL語句。本部
32、分將涉及到PL/SQL語句塊結(jié)構(gòu)、變量和類型、錯誤處理、控制結(jié)構(gòu)、游標(biāo)等內(nèi)容。 第62頁/共80頁為什么使用PL/SQL 一)PL/SQL是用于從各種環(huán)境中訪問Oracle數(shù)據(jù)庫的一 種編程語言。它與數(shù)據(jù)庫服務(wù)器集成在一起,因此,PL/SQL代碼可以得到快速有效的處理。二)PL/SQL將SQL語言(4GL)強(qiáng)大性和靈活性與3GL的過程化結(jié)構(gòu)融為一體。三)網(wǎng)絡(luò)流量減少,應(yīng)用程序執(zhí)行得更快。第63頁/共80頁PL/SQL語句塊 PL/SQL程序的基本單元是語句塊,所有的語句塊包含三個基本的部分:聲明部分、執(zhí)行部分和異常處理部分。只有執(zhí)行部分是必須的,其他二個部分都是可選的。有二種類型的語句塊:匿名
33、的和命名的。 DECLAREBEGINEXCEPTIONEND;第64頁/共80頁變量和類型在PL/SQL和數(shù)據(jù)庫之間是通過變量傳送消息的。變量在語句塊的聲明部分聲明的。變量聲明我們通過PL/SQL語句塊中的變量與數(shù)據(jù)庫進(jìn)行通信,來自數(shù)據(jù)庫的信息可以被賦值給變量,而變量中的內(nèi)容也可以被插入到數(shù)據(jù)庫中。變量在語句塊的聲明部分被聲明。聲明變量如果一個變量沒有初始化,它會被缺省地被賦值為Null,如果指明是Not Null,那么該變量就必須初始化。如果在變量聲明中使用了CONSTANT,那么該變量必須要初始化,在聲明過程中也可以用關(guān)鍵字DEFAULT替換 :=在聲明部分,每一行只能聲明一個變量。下面
34、的聲明是錯誤的DECLARE v_Firstname ,v_Lastname VARCHAR2(20);第65頁/共80頁PL/SQL類型PL/SQL類型有:標(biāo)量類型、復(fù)合類型、LOB類型、引用類型、對象類型使用%TYPE在許多情況下,PL/SQL變量用來處理存儲在數(shù)據(jù)庫表中的數(shù)據(jù)。在這種情況下,變量應(yīng)該擁有與表列相同的類型。DECLAREv_Firstname students.first_name%TYPE;用戶定義子類型子類型是基于現(xiàn)有類型的PL/SQL類型。語法:SUBTYPE new_type IS original_type;如:DECLARE SUBTYPE t_loop IS
35、NUMBER(5); v_Count t_loop; 第66頁/共80頁什么是異常聲明異常 預(yù)定義異常 用戶自定義異常拋出異常處理異常創(chuàng)建錯誤消息RAISE_APPLICATION_ERROR(error_number,error_messages,keep_errors)第67頁/共80頁異常傳播 可執(zhí)行部分產(chǎn)生的異常 聲明部分出現(xiàn)的異常 異常部分產(chǎn)生的異常第68頁/共80頁PL/SQL控制結(jié)構(gòu) IF-THEN-ELSE CASE 帶標(biāo)號的CASE語句 循環(huán)語句a)簡單循環(huán) LOOPEND LOOPb)WHILE循環(huán) WHILELOOPEND LOOPc)數(shù)字式FOR循環(huán) FORLOOPEND LOOP第69頁/共80頁什么是游標(biāo)? 游標(biāo)用來處理從數(shù)據(jù)庫中檢索的多行記錄(使用SELECT語句)。利用游標(biāo),程序可以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《大學(xué)物理(上冊)》課件-第1章
- 2025-2030全球車輛燃油油位計行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球電積銅行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國直接空氣捕獲和儲存(DACS)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球多層土壤傳感器行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國阻燃塑料薄膜和片材行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球醫(yī)用手指康復(fù)訓(xùn)練儀行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球化學(xué)谷物熏蒸劑行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國智慧教育公共服務(wù)平臺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國工業(yè)膠囊填充設(shè)備行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年度院感管理工作計劃(后附表格版)
- 勵志課件-如何做好本職工作
- 化肥銷售工作計劃
- 2024浙江華數(shù)廣電網(wǎng)絡(luò)股份限公司招聘精英18人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年山東省濟(jì)南市中考英語試題卷(含答案解析)
- 2024年社區(qū)警務(wù)規(guī)范考試題庫
- 2025中考英語作文預(yù)測:19個熱點話題及范文
- 第10講 牛頓運動定律的綜合應(yīng)用(一)(講義)(解析版)-2025年高考物理一輪復(fù)習(xí)講練測(新教材新高考)
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)(2023版)解讀 2
- 2024年全國各地中考試題分類匯編(一):現(xiàn)代文閱讀含答案
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
評論
0/150
提交評論