Oracle經(jīng)典自學(xué)筆記_第1頁(yè)
Oracle經(jīng)典自學(xué)筆記_第2頁(yè)
Oracle經(jīng)典自學(xué)筆記_第3頁(yè)
Oracle經(jīng)典自學(xué)筆記_第4頁(yè)
Oracle經(jīng)典自學(xué)筆記_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一驗(yàn)證Oraacle已已經(jīng)安裝完完成了,首首先得確認(rèn)認(rèn)程序里有有這些個(gè)選選項(xiàng),有四四個(gè)選項(xiàng):Oraccle IInstaallattion Prodductss、集成管管理工具、配置和移植植工具(管管理員用得得比較多)、應(yīng)用程序開發(fā)。Oracle也可以形成一種層次性的鏈接(Directory Manager),對(duì)于我們來說用得最多是sqlplus,而OLE 是一種面向?qū)ο蟮募夹g(shù),利用這種技術(shù)可開發(fā)可重復(fù)使用的軟件組件(COM),他是微軟提出的,在用VB開發(fā)時(shí)可能要用,對(duì)于我們來說不須管。當(dāng)啟動(dòng)ssqlpllus時(shí)會(huì)會(huì)提示輸入入用戶名和和口令,所所謂的sqqlpluus是Orraclee的一個(gè)客

2、客戶端。OOraclle大多數(shù)數(shù)命令都用用命令來實(shí)實(shí)現(xiàn),所以以比較難使使,就如同同unixx比winndowss難使。口口令你輸入入tigeer,建議議就用它,因因?yàn)橐院笕トテ髽I(yè)里OOraclle 9ii就是用的的這個(gè)口令令。當(dāng)你看看到SQLL命令符符時(shí)說明已已經(jīng)進(jìn)入到到了Oraacle的的命令行了了。圖形版的的sqlpplus,命命令行的ssqlpllus,還還有一個(gè)就就是通過網(wǎng)網(wǎng)頁(yè)訪問OOraclle的服務(wù)務(wù),啟動(dòng)ssqlpllus,端端口號(hào)是55560,UURL是 HYPERLINK hhttp:/1:55600/isqqlpluus。issqlpllus httpp:

3、/1127.00.0.11:55660/issqlpllus。iisqlpplus非非常有用,比如說你的機(jī)器上沒有裝上Oracle,就可以通過鍵入別人的IP,然后登陸到他的機(jī)器上來做實(shí)驗(yàn),當(dāng)然也可以安裝特定的客戶端軟件實(shí)現(xiàn)。說實(shí)在的的Oraccle的這這個(gè)客戶端端太難看了了,并且要要記好多好好多的命令令,所以專專門有一類類公司專門門為Oraacle開開發(fā)客戶端端。有一個(gè)個(gè)比較著名名的客戶端端叫Toadd,當(dāng)然OOraclle還有一一個(gè)客戶端端PL/SSQL DDevellplorr,這個(gè)用用的也非常常多。數(shù)據(jù)據(jù)庫(kù)管理時(shí)時(shí)常用Tooad(英英文蛤蟆的的意思),如果有聲卡的話,你啟動(dòng)一次它就叫一次

4、。對(duì)我們來說sqlplus足夠使了。以后有機(jī)會(huì)我使用一下PL/SQL Develplor,不過這個(gè)也不好使,因?yàn)槟阃瑫r(shí)必須裝上Oracle,還不如isqlplus好呢。以超級(jí)管管理員身份份鏈接數(shù)據(jù)據(jù)庫(kù)的方法法是再命令令行下敲入入命令:ssqlpllus ssys/口口令 ass syssdba。Sys和ssysteem的區(qū)別別是syss是數(shù)據(jù)庫(kù)庫(kù)管理者,ssysteem是數(shù)據(jù)據(jù)庫(kù)所有者者,sys用戶戶擁有dbba,sysddba,sysooper等等角色或權(quán)權(quán)限,是ooraclle權(quán)限最最高的用戶戶,sysstem用用戶擁有ddba,sysddba等角角色或系統(tǒng)統(tǒng)權(quán)限,ssysteem如果正正

5、常登錄,它它其實(shí)就是是一個(gè)普通通的dbaa用戶,但但是如果以以as ssysdbba登錄,其其結(jié)果實(shí)際際上它是作作為syss用戶登錄錄的,這一一點(diǎn)類似LLinuxx里面的suudo的感感覺,從登登錄信息里里面我們可可以看出來來。syss用戶必須須以as sysddba或as ssysopper形式式登錄。然后輸入入命令allter userr scoott aaccouunt uunlocck;它的的意思是將將Scottt用戶解解鎖,以后后關(guān)于dbba的用到到一個(gè)學(xué)一一個(gè),沒必必要從頭到到尾的去學(xué)學(xué)它。二SQL語(yǔ)語(yǔ)言是在數(shù)數(shù)據(jù)庫(kù)下進(jìn)進(jìn)行操作的的語(yǔ)言,它它本身是一一個(gè)標(biāo)準(zhǔn)語(yǔ)語(yǔ)言,有國(guó)國(guó)際標(biāo)準(zhǔn)。有

6、兩套一一個(gè)是SQQL19992,SQQL19999。大多多數(shù)數(shù)據(jù)庫(kù)庫(kù)既支持舊舊的標(biāo)準(zhǔn)也也支持新的的,很多也也是用的舊舊的SQLL語(yǔ)言寫程程序的,對(duì)對(duì)于我們來來說新舊都都要學(xué),而而且對(duì)大多多數(shù)數(shù)據(jù)庫(kù)庫(kù)系統(tǒng)來說說都是通用用的,只不不過不同數(shù)數(shù)據(jù)庫(kù)有一一個(gè)輕微的的改變,這這就是最郁郁悶的地方方,沒辦法法到時(shí)候查查手冊(cè)或ggooglle一下。SQL全全稱為Sttructturedd Queery LLanguuage,即機(jī)構(gòu)化化查詢語(yǔ)言言,它被定義義為第四代代語(yǔ)言。為為什么叫第第四代語(yǔ)言言,因?yàn)槲椅覀冎赖诘谌Z(yǔ)言言也得有iif ellse ffor 等等這些流程程控制語(yǔ)句句,也就是是你得告訴訴它干

7、什么么且怎么干干。第四大大只用告訴訴它我要干干什么,不不用去控制制它怎么干干,這樣的的語(yǔ)言學(xué)起起來當(dāng)然十十分eassy。我們共有有四類語(yǔ)句句要學(xué):數(shù)數(shù)據(jù)操作語(yǔ)語(yǔ)言語(yǔ)句Dataa mannipullatioon laanguaage,DDML,會(huì)話控制制語(yǔ)句 HYPERLINK /searchwhatis/18/5949018.shtml sesssion conttrol stattemennt,數(shù)據(jù)定義義語(yǔ)言語(yǔ)句句Datta deefiniitionn lannguagge,DDDL以及及事務(wù)控制制語(yǔ)句 HYPERLINK /searchwhatis/297/6092797.shtml tr

8、annsacttion conttrol stattemennt。查詢語(yǔ)句句只有一句句話就是sselecct語(yǔ)句,這是最重要的一條語(yǔ)句。以后只要遇到相應(yīng)的select語(yǔ)句一律背過,企業(yè)再面試時(shí)其他語(yǔ)句一般不會(huì)怎么考但這條語(yǔ)句是必考的。如果考你SQL語(yǔ)句肯定會(huì)考這條select語(yǔ)句不是別的。你跟別人交流的時(shí)候,別說我寫過幾條dml語(yǔ)句,而因詳細(xì)的說到底是什么語(yǔ)句,比如insert語(yǔ)句、update語(yǔ)句等。選擇的意思是從表里把數(shù)據(jù)拿出來,展現(xiàn)出來。聽起來似乎挺簡(jiǎn)單的,但你要從表里拿數(shù)據(jù)得首先知道有幾張表,每張表里有些什么內(nèi)容。第一步要要做的就是是熟悉一下下實(shí)驗(yàn)用的的數(shù)據(jù),這這些數(shù)據(jù)OOraclle

9、都給自自帶了,直直接用就行行了。首先先第一條語(yǔ)語(yǔ)句dessc emmp,描述述一下emmp這張表表,會(huì)分別別列出所有有字段(表表頭),eempnoo 雇員編編號(hào),enname 雇員名字字,jobb 雇員工工種,mggr 經(jīng)理理人,hiiredaate 雇雇員入職日日期,saal 薪水水,commm 津貼貼,獎(jiǎng)金,ddeptnno 所屬屬部門編號(hào)號(hào)。表還有一一部分叫類類型,也就就是相對(duì)應(yīng)應(yīng)字段的類類型,這些些都是Orraclee已經(jīng)定義義好的,我我們直接用用?,F(xiàn)在先先用別人建建立好的表表,然后再再自己建表表。NUMBEER指數(shù)字字,VARRCHARR指字符型型,Oraacle77以前在用用,現(xiàn)在

10、常常用的是VVARCHHAR2它它支持各種種可變字符串,可以更好好的表示各各國(guó)文字,DDATE指指日期,NNUMBEER(7,2)指七七位數(shù)字有有兩位小數(shù)數(shù)。descc deppt 部門門表,它有有三個(gè)字段段DEPTTNO 部部門編號(hào),DDNAMEE 部門名名稱,LOOC部門所所在位置。Desc salggradee工資等級(jí)級(jí)表,許多多公司都實(shí)實(shí)行的是工工資等級(jí)制制,分幾級(jí)級(jí)工資,GGRADEE工資等級(jí)級(jí),HISSAL該等等級(jí)最高工工資,LOOSAL該該等級(jí)最低低工資。以上簡(jiǎn)要要的介紹了了三張表,如如果想更詳詳細(xì)的了解解里面的數(shù)數(shù)據(jù),教大大家第一個(gè)個(gè)seleect語(yǔ)句句:secleect *

11、fromm 表名;。*表示把把表里所有有的數(shù)據(jù)都都取出來,分分號(hào)表示語(yǔ)語(yǔ)句結(jié)束。盡量多熟熟悉各張表表之間的關(guān)關(guān)系,以及及表內(nèi)部各各字段之間間的關(guān)系,越越熟悉越好好。如果要算算純數(shù)據(jù),可可以采用ddual這這張表,它它就一條記記錄,一個(gè)個(gè)字段。你你如果用其其他表計(jì)算算的話會(huì)有有好多條重重復(fù)結(jié)果,記記錄。字段是不不能有空格格的,如果果非要空格格可以將整整個(gè)字段用用雙引號(hào)括括起來,這這樣的話引引號(hào)里面就就可以加上上各種各樣樣的字符了了。如果沒沒加引號(hào)的的話那樣做做是不對(duì)的的。再?zèng)]有有加雙引號(hào)號(hào)的時(shí)候結(jié)結(jié)果字段名名會(huì)以大寫寫字母顯示示出來,但但加了雙引引號(hào)就保持持住了原來來的形式不不變。沒有有就是nu

12、ull值,即即便是0也也與空值大大不一樣。0是有值值但為0,nnull是是沒有值。任何含有有空值的表表達(dá)式最后后的結(jié)果都都是空值。SQL里里面有一個(gè)個(gè)字符串鏈鏈接符|,它的作作用跟Jaava里的的+一樣,所所有被鏈接接的都會(huì)轉(zhuǎn)轉(zhuǎn)換為字符符串顯示出出來。如seleect eenamee|saal frrom eemp;它它的意思是是將結(jié)果ssal轉(zhuǎn)換換為字符串串后鏈接到到enamme后面。在任何數(shù)數(shù)據(jù)庫(kù)的SSQL語(yǔ)句句里面都是是用單引號(hào)號(hào)括起來表表示一個(gè)字字符串序列列。如果字字符串里本本來就有單單引號(hào),再再解析時(shí)就就會(huì)出錯(cuò)??梢杂脙蓛蓚€(gè)單引號(hào)號(hào)來代替一一個(gè)單引號(hào)號(hào),這樣就就可以正確確顯示了。關(guān)鍵

13、字ddistiinct是是指選擇不不重復(fù)的記記錄,如果果修飾多個(gè)個(gè)字段時(shí)表表示選擇該該多個(gè)字段段的組合不不重復(fù)的顯顯示出來。wherre叫過濾濾條件,它它會(huì)過濾掉掉一些記錄錄,等值判判斷用=,不不等值判斷斷注意是而不是是Javaa語(yǔ)句里的的不等號(hào)。字符串比比較是比較較字符的AASCIII碼,挨個(gè)個(gè)比較。做做比較時(shí)還還可以用關(guān)關(guān)鍵字beetweeen annd,注意意的是包括括邊界值的的。andd也可把兩兩個(gè)過濾條條件連接起起來。下面來講講空值的處處理,你可可以直接用用wherre +字字段+iss nulll來取出出是空值的的,取出不不是空值的的多加一個(gè)個(gè)not就就行。這種種處理方式式非常像我

14、我們的說話話習(xí)慣。iin然后跟跟著某個(gè)字字段的取值值是括號(hào)括括起來各值值之間用逗逗號(hào)隔開。可以使用用and、or,nnot連接接起各個(gè)查查詢條件。日期處理理起來稍微微麻煩一些些,由于現(xiàn)現(xiàn)在還沒有有學(xué)日期函函數(shù),所以以采用另外外一種方式式一個(gè)特殊殊的字符串串。你就按按它的日期期寫法來寫寫如20-22月-077,然后系系統(tǒng)就按照照字符串來來比較即可可。年份可可以寫全如如20-22月-20007,它能認(rèn)認(rèn)出來。以以后我們可可以寫成任任何形式的的日期格式式都能處理理。模糊查詢?cè)兪沁@樣的的,比如找找出名字里里含有all的,有點(diǎn)點(diǎn)像正則表表達(dá)式。使使用關(guān)鍵字字likee,可以通配符符%,代表表0個(gè)或多多個(gè)

15、字符,_代表一個(gè)字母。如果名字里就含有一個(gè)%,則使用轉(zhuǎn)義字符%的形式,當(dāng)然可以自己指定轉(zhuǎn)義字符方法是select * from emp where ename like _A$% escape $;。排序用到到的一個(gè)關(guān)關(guān)鍵字是oorderr by,默默認(rèn)的是按按升序排列列,如果想想降序排列列可以采用用如下形式式:sellect * frrom ddept ordeer byy depptno descc;dessc是降序序的英文縮縮寫。升序序排列可不不寫也可加加上ascc。還可以以加入whhere先先過濾了再再排序,按按照幾個(gè)字字段進(jìn)行排排序時(shí),用用逗號(hào)分隔隔開,如下下:sellect ena

16、mme ,jjob,eempnoo,sall ,deeptnoo froom emmp orrder by ddeptnno,saal deesc;意意思是先將將表按照ddeptnno升序排排列,然后后相同的ddeptnno內(nèi)部再再按照saal降序排排列。三SQL函函數(shù),函數(shù)數(shù)就是Jaava里的的方法,有有參數(shù)有返返回值?,F(xiàn)現(xiàn)在講的是是單行函數(shù)數(shù),第一個(gè)個(gè)叫做loower,作作用是轉(zhuǎn)換換為小寫;第二個(gè)叫叫uppeer,作用用是轉(zhuǎn)為大大寫;第三三個(gè)叫suubstrring,取取子串。這這幾個(gè)函數(shù)數(shù)都是對(duì)字字符串進(jìn)行行操作的,傳傳遞進(jìn)去的的參數(shù)就是是字段名。如seleect llowerr(ena

17、ame) fromm empp;還有一一個(gè)函數(shù)叫叫chr,它它是把一個(gè)個(gè)數(shù)字轉(zhuǎn)為為字符:sselecct chhr(866) frrom ddual;將86代代表的字符符顯示出來來,與之對(duì)對(duì)應(yīng)的是將將一個(gè)字符符轉(zhuǎn)為對(duì)應(yīng)應(yīng)的ASCCII碼,叫叫asciii,如:seleect aascii(A) frrom ddual;就是將AA的碼值顯顯示出來。rounnd函數(shù)是是四舍五入入的作用,如如seleect rroundd(43.5354435) fromm duaal;結(jié)果果就為444。還有一一個(gè)重載的的帶兩個(gè)參參數(shù)的方法法如sellect rounnd(433.5355435,4) ffrom

18、duall;四舍五五入到小數(shù)數(shù)點(diǎn)后4位位,結(jié)果位位44.55354,第第二個(gè)參數(shù)數(shù)可以是負(fù)負(fù)數(shù)表示四四舍五入到到小數(shù)點(diǎn)前前多少位。其他函數(shù)數(shù)可以不用用記住,但但要知道有有這么個(gè)函函數(shù),然后后取手冊(cè)中中可以查到到,但下面面講的一個(gè)個(gè)函數(shù)最好好記住它。to_cchar是是將字段內(nèi)內(nèi)容顯示為為字符,可可以對(duì)顯示示的形式進(jìn)進(jìn)行格式控控制,比如如seleect tto_chhar(ssal, $999,9999,9999.99999) fromm empp;就是以以后面給定定字符形式式顯示出來來,小數(shù)點(diǎn)點(diǎn)后的四位位會(huì)強(qiáng)制顯顯示,而前前面的沒有有的位數(shù)就就不顯示,這這就是9的的含義。$換為L(zhǎng)表表示本地貨貨

19、幣。0代代表一位數(shù)數(shù)字,如果果沒有該位位數(shù)字也會(huì)會(huì)強(qiáng)制顯示示為0,對(duì)對(duì)于這種方方式是為了了進(jìn)行格式式控制。實(shí)際上用用to_cchar來來控制數(shù)字字是比較少少用的,而而用得最多多的是對(duì)日日期格式的的控制,我我們知道OOraclle里的ssysdaate包含含了插入記記錄的詳細(xì)細(xì)時(shí)間信息息,我們可可以對(duì)其進(jìn)進(jìn)行顯示的的格式進(jìn)行行控制,比比如:seelectt to_charr(hirredatte,yyyyy-mm-ddd) fromm empp;轉(zhuǎn)換為為年月日22006-3-233這種格式式的。實(shí)際際上對(duì)日期期的格式控控制是利用用Javaa來實(shí)現(xiàn)的的,到時(shí)會(huì)會(huì)有一個(gè)關(guān)關(guān)于日期處處理的專題題。se

20、leect eenamee,jobb,hirredatte frrom eemp wwheree hirredatte tto_daate(19822-1-11 1:330:000, yyyyy-mm-dd hhh:mii:ss);意思思是將特定定的字符串串轉(zhuǎn)換為相相應(yīng)的日期期格式。還有too_nummber是是將特定的的字符串解析析為相應(yīng)的的數(shù)字格式式如seleect eenamee ,joob ,ssal ffrom emp wherre saal20000;首先按按depttno求出出每個(gè)deeptnoo的平均ssal,然然后對(duì)這些些分組利用用haviing 語(yǔ)語(yǔ)句進(jìn)行過過濾。到現(xiàn)在為為

21、止已經(jīng)學(xué)學(xué)完了所有有的單條sselecct語(yǔ)句,執(zhí)執(zhí)行順序按按照sellect+字段或內(nèi)容容+froom+表名名+wheere+grooup bby+havving+ordder bby這個(gè)順序序進(jìn)行執(zhí)行行,首先取取出記錄,然然后對(duì)單個(gè)個(gè)記錄進(jìn)行行過濾,過過濾完了分分組,分組組好了對(duì)組組過濾,剩剩下的分組組再按順序序顯示出來來。單條sselecct語(yǔ)句一一定要非常常熟悉,如如果這都要要查書的話話對(duì)企業(yè)就就沒法交代代了,哈哈哈!之前已經(jīng)經(jīng)講過一個(gè)個(gè)子查詢的的例子:sselecct enname,sal fromm empp wheere ssal=(seleect mmax(ssal) from

22、m empp);看誰(shuí)誰(shuí)的工資最最高,之所所以叫子查查詢因?yàn)樵僭僖粋€(gè)seelectt語(yǔ)句里套套了另外一一個(gè)sellect語(yǔ)語(yǔ)句。理解解子查詢的的關(guān)鍵是把把它當(dāng)成一一張表,可可以對(duì)它做做表連接最最后就可以以求出想要要的結(jié)果來來。單獨(dú)的的seleect語(yǔ)句句相當(dāng)簡(jiǎn)單單,但是有有了sellect子子句和表連連接之后語(yǔ)語(yǔ)句就稍微微復(fù)雜了點(diǎn)點(diǎn)。sellect enamme ,ssal ffrom emp joinn(sellect max(sal) maxx_sall,depptno fromm empp grooup bby deeptnoo) t on (emp.sal=t.maax_saal ann

23、d t.depttno=eemp.ddeptnno);這這個(gè)語(yǔ)句的的作用是求求出每個(gè)部部門薪水最最高的員工工記錄。seleect ee1.enname,e2.eenamee froom emmp e11,empp e2 wherre e11.mgrr=e2.empnno;對(duì)于于在同一張張表中進(jìn)行行查詢時(shí)需需要進(jìn)行自自連接,為為表取別名名便于寫出出條件和比比較。這條條語(yǔ)句的意意思是找出出每個(gè)員工工的經(jīng)理人人。為同一一張表起不不同的別名名然后當(dāng)成成兩張表來來用。在SQLL99里面面鏈接條件件和過濾條條件是分開開的,即鏈鏈接條件不不能出現(xiàn)在在wherre語(yǔ)句里里面,利用用Joinn+表名+on+鏈鏈

24、接條件進(jìn)進(jìn)行。比如如:sellect enamme ,jjob,ddnamee froom emmp jooin ddept on (emp.depttno=ddept.depttno);等值鏈接接的時(shí)候有有一個(gè)簡(jiǎn)便便的寫法uusingg(depptno)代替onn (emmp.deeptnoo=deppt.deeptnoo)但不推推薦使用,因因它的限制制條件很多多,可能報(bào)報(bào)出來的錯(cuò)錯(cuò)誤很難找找并且看起起來也不是是很清楚。連接有各各種各樣的的形式,下下面我們講講外連接,其其實(shí)用起來來特別方便便。它會(huì)把左左邊那張表表不能和右右邊鏈接的的數(shù)據(jù)也拿拿出來。sselecct t11.enaame ,

25、t2.enamme mggr , t1.ddeptnno frrom eemp tt1 left outeer jooin eemp tt2 onn (t11.mgrr=t2.empnno);oouterr可以省略略掉效果一一樣。如果果想把右邊邊多余的拿拿出來Jooin前加加上rigght即可可;如果兩兩邊多余的的都想拿出出來Joiin前加上上fulll叫全外連連接。講一道面面試題,不不準(zhǔn)用組函函數(shù)求出薪薪水的最高高值。方法法是用自連連接,連接接條件采用用非等值連連接,這這樣表中的的最大值就就會(huì)連接不不上,然后后再?gòu)膃mmp表中找找出未連接接上的最大大值,如下下:sellect sal fro

26、mm empp wherre saal noot inn (seelectt t1.sal fromm empp t1 joinn empp t2 on (t1.ssal(seelectt maxx(sall) frrom eemp wwheree emppno nnot iin (sselecct diistinnct mmgr ffrom emp wherre mggr iss nott nulll) and empnno inn (seelectt disstincct mggr frrom eemp wwheree mgrr is not nulll );再講一道道面試題:比較這兩兩個(gè)

27、語(yǔ)句的的執(zhí)行效率率Selecct * fromm empp wheere ddeptnno=100 andd enaame llike %A%;Selecct * fromm empp wheere eenamee likke %A% and depttno=110;理論上說應(yīng)應(yīng)該是第一一個(gè),就如如同&和和&的區(qū)別別一樣它會(huì)會(huì)過濾掉很很多條件,后后面的字符符串就不用用再取去比比較了,但但實(shí)際中不不好說因?yàn)闉橛锌赡躉Oraclle在執(zhí)行行的時(shí)候做做了優(yōu)化,自自動(dòng)將數(shù)字字比較放前前面了。四現(xiàn)在已經(jīng)經(jīng)講完了sselecct語(yǔ)句,接接下來講ddml語(yǔ)句句,常見的的有三條,他他們和seelectt語(yǔ)句合

28、稱稱為數(shù)據(jù)庫(kù)庫(kù)的四大語(yǔ)語(yǔ)句(seelectt/inssert/updaate/ddelette)。增刪改查查!接下來簡(jiǎn)簡(jiǎn)單介紹一一下Oraacle的的邏輯結(jié)構(gòu)構(gòu)。安裝的的時(shí)候創(chuàng)建建了一個(gè)全全局?jǐn)?shù)據(jù)庫(kù)庫(kù),同時(shí)為為這個(gè)數(shù)據(jù)據(jù)庫(kù)建立了了一系列管管理它的進(jìn)進(jìn)程SIDD。一個(gè)大數(shù)數(shù)據(jù)庫(kù)里面面又區(qū)分為為不同的表表空間,說說白了就是是裝表的地地兒。我們們現(xiàn)在的表表是放在不不同的表空空間里面,比比方說ussers表表空間,在在里面放著著某個(gè)用戶戶所有的表表,當(dāng)該用用戶登錄進(jìn)進(jìn)去后其實(shí)實(shí)是去訪問問自己的表表空間里的的相對(duì)應(yīng)的的表。可以以將某個(gè)表表空間里的的內(nèi)容全部部copyy出去創(chuàng)建建一個(gè)新的的userr,然后

29、該該userr就操作專專屬于自己己的表空間間里的表了了,所以說說Oraccle是支支持多用戶戶的。將某個(gè)表表空間里的的內(nèi)容全部部copyy出去創(chuàng)建建一個(gè)新的的userr做法是這這樣的:11.以超級(jí)級(jí)管理員登登錄數(shù)據(jù)庫(kù)庫(kù)connn syss/oraacle as ssysdbba; 2.從命令令行在起一一個(gè)cliient,先先建立一個(gè)個(gè)目錄如CC:teest進(jìn)入入該目錄后后執(zhí)行deel *.*刪除所所有,然后后鍵入命令令exp后后提示輸入入用戶名和和口令,就就是你要備備份哪個(gè)就就輸哪個(gè),接接下來提示示輸入數(shù)組組提取緩沖沖區(qū)大小,這這個(gè)沒關(guān)系系(內(nèi)存里里的一個(gè)小小區(qū)域填滿滿了再統(tǒng)一一拿到硬盤盤上來

30、)一一路回車就就行,等著著它導(dǎo)完就就可以了;3.創(chuàng)建新新用戶crreatee useer huuangggang idenntifiied bby haaha08832 ddefauult ttableespacce ussers quotta 100M onn useers;用用戶名huuangggang口口令hahha08332在ussers表表空間里分分配10MM的默認(rèn)表表空間給該該用戶;4.給予相相應(yīng)權(quán)限ggrantt creeate sesssion,creaate ttablee,creeate vieww to huanngganng,如果果沒有seessioon它登錄錄都是問題

31、題;5.導(dǎo)入入文件immp后回車車幾個(gè)后提提示是否導(dǎo)導(dǎo)入整個(gè)導(dǎo)導(dǎo)出文件選選否后輸入入想導(dǎo)入的的那個(gè)用戶戶數(shù)據(jù)的用用戶名。只有2和和5是在命命令行中完完成,其余余是超級(jí)用用戶登錄后后在數(shù)據(jù)庫(kù)里里完成。inseert iinto+表名+vvaluees(各字字段值),在在對(duì)這些數(shù)數(shù)據(jù)進(jìn)行操操作時(shí)最好好有一個(gè)備備份,方法法很簡(jiǎn)單rrollbback回回退操作,create table 表名 as select * from +欲備份表名;insert語(yǔ)句還有一種插入方法,insert into dept2(deptno,loc) values(50,beijing);只是插入部分字段的值,其他字段的

32、值為null,還有一種方法是insert into dept2 select * from dept;將select子句選出的記錄挨個(gè)插入前提是選出的記錄與該表的記錄格式相同。在Oraacle中中取完相應(yīng)應(yīng)字段后,會(huì)會(huì)在末尾附附加一個(gè)偽偽字段,你你看不到,叫叫做rowwnum,它它是記錄下下每條記錄錄在第幾行行了,用它它的時(shí)候有有個(gè)限制條條件只能與與或=6 annd r=10;這個(gè)在Orraclee里面是效效率最高的的,如果通通過連接數(shù)數(shù)據(jù)庫(kù)用JJava編編程來做,但但效率相當(dāng)當(dāng)?shù)?。這個(gè)個(gè)重點(diǎn)掌握握,比如說說顯示論壇壇里的帖子子是分頁(yè)顯顯示的,如如果想顯示示第4頁(yè)的的內(nèi)容一定定是從某一一個(gè)帖子

33、到到某一個(gè)帖帖子顯示出出來,帖子子這個(gè)記錄錄是按照發(fā)發(fā)帖時(shí)間倒倒序排列的的。三層嵌嵌套就是OOraclle對(duì)這種種問題的解解決方案,當(dāng)當(dāng)然每一種種數(shù)據(jù)庫(kù)有有自己的解解決方式。SQL面面試題:有3個(gè)表表S,C,SC。SS(SNOO,SNAAME)代代表(學(xué)號(hào)號(hào),姓名);C(CNNO,CNNAME,CTEAACHERR)代表(課課號(hào),課名名,教師);SC(SSNO,CCNO,SSCGRAADE)代代表(學(xué)號(hào)號(hào),課程成成績(jī))。問題:找出沒選過過“黎明”老師課程程的所有學(xué)學(xué)生姓名;列出2門以以上(含22門)不及及格學(xué)生姓姓名及平均均成績(jī);既學(xué)過1號(hào)號(hào)課程又學(xué)學(xué)過2號(hào)課課程所有學(xué)學(xué)生姓名。請(qǐng)用標(biāo)準(zhǔn)SSQ

34、L語(yǔ)言言寫出答案案,方言也也行(請(qǐng)說說明使用什什么方言)。selecct snname fromm s jjoin sc oon (ss.snoo=sc.sno) joiin c on (no=scc.no) wheere cc.cteeacheer limiing; (2) sselecct snname fromm s wwheree snoo in (sellect sno fromm sc wherre sccgradde =2); (3) sselecct snname fromm s wwheree snoo in (sellect sno fromm sc wherre cnno

35、=1 and sno = (sselecct snno frrom ssc whhere cno=2);updatte 的作作用相對(duì)于于對(duì)記錄進(jìn)進(jìn)行修改。用法是uupdatte+表名名+sett+字段列列表及更新新值過濾條件;ddelette+frrom+表表名+過濾濾條件,刪刪除某些字字段。五接下來講講數(shù)據(jù)定義義語(yǔ)言dddl語(yǔ)言。它實(shí)現(xiàn)了了數(shù)據(jù)表,視視圖等的建建立。事務(wù)務(wù)trannsacttion就就是一系列列的操作,要要么同時(shí)完完成要么不不完成,比比如轉(zhuǎn)賬操操作要對(duì)兩兩個(gè)賬戶uupdatte,不會(huì)會(huì)出現(xiàn)數(shù)據(jù)據(jù)不一致。對(duì)于Orraclee來說,一一個(gè)traanscaationn起始于一一條d

36、mll語(yǔ)句,然然后一系列列的操作rrollbback回回退事務(wù)會(huì)結(jié)束束;或coommitt結(jié)束事務(wù)務(wù),再roollbaack也沒沒用;當(dāng)遇遇到一條ddcl語(yǔ)句句或ddll語(yǔ)句提交交結(jié)束事務(wù)務(wù);當(dāng)正常常退出exxit時(shí)提提交結(jié)束事事務(wù),不正正常退出時(shí)時(shí)(如斷電電)自動(dòng)回回滾結(jié)束事事務(wù)。數(shù)據(jù)庫(kù)常常用對(duì)象是是指它經(jīng)常常使用的一一些資源,比方說表、視圖或其他資源。下面講如何創(chuàng)建一張表,create table +表名+字段及字段的數(shù)據(jù)類型。Oracle常用的數(shù)據(jù)類型有變長(zhǎng)字符串varchar2(最長(zhǎng)字符數(shù)即上界4k)、定長(zhǎng)字符串char(所占大?。S辛俗冮L(zhǎng)字符串后為什么還要有定長(zhǎng)字符串呢?主要還是效

37、率問題,跟數(shù)組很像,但是站空間,很多結(jié)構(gòu)、算法都存在拿空間換時(shí)間問題,如HashTable。數(shù)字型number(m,n)m指總共多少為,n是小數(shù)點(diǎn)后的位數(shù);日期date,包含年月日時(shí)分秒;變長(zhǎng)字符串long可達(dá)2G,主要是有些時(shí)候一篇文本相當(dāng)長(zhǎng);存圖片可以把硬盤上圖像的名字存到數(shù)據(jù)庫(kù)里,也可以把整張圖片存到數(shù)據(jù)庫(kù)里。創(chuàng)建一張張表存放學(xué)學(xué)生數(shù)據(jù)如如:creatte taable stu ( id nnumbeer(8), namee varrcharr(20), sex numbber(110), age numbber(33), sdatte daate, gradde nuumberr(2)

38、 defaault 1, classs nuumberr(2), emaiil vaarchaar2(550) );sex取數(shù)數(shù)字來表示示更節(jié)省空空間,入學(xué)學(xué)時(shí)日期加加個(gè)s避免免和關(guān)鍵字字沖突,可可以為某些些字段指定定默認(rèn)值當(dāng)當(dāng)插入記錄錄時(shí)沒有對(duì)對(duì)該字段賦賦新值就以以該默認(rèn)值值,其他沒沒有默認(rèn)值值為nulll。五個(gè)約束束條件第一一個(gè)叫非空空,第二個(gè)個(gè)叫唯一,第第三個(gè)叫主主鍵,第四四個(gè)叫外鍵鍵第五個(gè)叫叫checck。當(dāng)我我們創(chuàng)建這這張表的時(shí)時(shí)候,有一一個(gè)最簡(jiǎn)單單的條件字字段非空nnot nnull。在Oraacle里里面約束條條件也可以以看成一個(gè)個(gè)對(duì)象,能能為之取一一個(gè)名字,加一個(gè)關(guān)鍵字cons

39、traint+約束名,如name varchar(2) constraint stu_name_nn not null,不起時(shí)系統(tǒng)自動(dòng)起名字我們不用管了。唯一約束的意思是在這個(gè)字段里面所有的記錄不能重復(fù),如id number(8) unique,這屬于字段級(jí)的約束;字段級(jí)的約束有些限制,比如要某些字段組合不能重復(fù),還有就是兩個(gè)空值它不認(rèn)為是重復(fù)的。要達(dá)到表級(jí)約束方法是在最后一個(gè)字段寫完后加一句如:constraint stu_name_email_uniuniquue(emmail,namee)。主鍵(pprimaary kkey)是是可以唯一一標(biāo)示整條條記錄的東東西,它代代表的意思思是既不能

40、能為空又不不能重復(fù),比如學(xué)生學(xué)號(hào)。E-mail做主鍵不好因?yàn)樗梢詾閚ull,同時(shí)索引的時(shí)候數(shù)字比字符串效率高。如id number(8) primary key ,也可以加在表級(jí),如constraint stu_id_pk primary key(id),主鍵也可以是多個(gè)字段組合。外鍵約束束建立在一一張表的兩兩個(gè)字段上上或者是兩兩張表的兩兩個(gè)字段上上,是比較較麻煩的一一種約束。在empp和deppt就有外外鍵約束,往emp里加記錄的時(shí)候不允許再dept里沒有的部門編號(hào)。class number(2) references class(id),參考class這張表的id字段,當(dāng)然也可以加在表級(jí)

41、上:constraint foreign key (class) references class(id),。注意在寫外鍵約束的時(shí)候,stu里的class叫參考字段,class里的id叫被參考字段,加外鍵的前提是被參考字段必須是主鍵。刪一條記錄的時(shí)候首先看有沒有其他字段參考它,有的話是無法刪除的,違反了完整約束條件。Checck約束用用得比較少少,在寫mmis系統(tǒng)統(tǒng)時(shí)數(shù)據(jù)在在Javaa程序里就就已經(jīng)校驗(yàn)驗(yàn)過了。修修改表結(jié)構(gòu)構(gòu)是在現(xiàn)有有表上修改改。在任何何項(xiàng)目開發(fā)發(fā)時(shí)候建表表的SQLL語(yǔ)句是要要保存下來來的,所以以可以將表表整個(gè)刪掉掉再建。添添加字段aalterr tabble +表名+aadd

42、(字字段名+數(shù)數(shù)據(jù)類型)如altter ttablee deppt2 aadd(ddphonne vaarchaar2(111);刪除某個(gè)個(gè)字段如aalterr tabble ddept22 droop(dpphonee);還可可以修改字字段的數(shù)據(jù)據(jù)類型,如如果里面已已經(jīng)有數(shù)據(jù)據(jù)修改的后后果應(yīng)不影影響原來存存的記錄值值。在Oraacle里里面看當(dāng)前前用戶下有有哪些表,哪哪些約束,哪哪些視圖等等等這些信信息被單獨(dú)獨(dú)地裝在一一張表里面面,稱作數(shù)數(shù)據(jù)字典表表。useer_taabless里面裝的的是當(dāng)前用用戶共有多多少?gòu)埍恚锩孀侄慰啥嗔耍覀冴P(guān)心的是table_name。查詢當(dāng)前用戶下有哪些視圖:

43、select view_name from user_views;查詢當(dāng)前用戶下有哪些表:select table_name from user_tables;查詢當(dāng)前用戶下有哪些約束:select constraint_name,table_name from user_constraints;。user_tables、user_constraints、user_views這些都是數(shù)據(jù)字典表,那么一共有多少個(gè)數(shù)據(jù)字典表呢?Oracle專門有另外一張表存放數(shù)據(jù)字典表的表叫做dictionary,它總共兩個(gè)字段一個(gè)叫table_name數(shù)據(jù)字典表的名字、還有一個(gè)叫comments對(duì)于這張數(shù)據(jù)字典

44、表的描述??偣灿?00多個(gè)數(shù)據(jù)字典表,這就是Oracle的DBA總是背著個(gè)小本本的原因,你要背是不可能的。索引就相相當(dāng)于字典典里的索引引一樣,它它在Oraacle里里相當(dāng)于一一種新的數(shù)數(shù)據(jù)庫(kù)對(duì)象象,建立索索引的方法法creaate iindexx idxx_stuu_emiil onn stuu (emmail);也可以以在字段組組合上建立立索引,以以后在查詢?cè)兘M合時(shí)效效率就高,刪刪除索引同同刪除表方方法類似。忘了自己己有哪些索索引可以采采用sellect indeex_naame ffrom userr_inddexsee;當(dāng)你給給某張表的的字段加主主鍵或唯一一性約束的的時(shí)候。建建立索引的的

45、用處是當(dāng)當(dāng)你建立了了索引后取取訪問相應(yīng)應(yīng)數(shù)據(jù)的時(shí)時(shí)候效率會(huì)會(huì)很高。注注意說的是是讀的效率高高了,但存存的效率反反而低了,因因?yàn)槟愕猛瑫r(shí)往索引引表里加索索引值,會(huì)會(huì)占用大量量的空間。記住一點(diǎn)點(diǎn)不要輕易易建立索引引,除非覺覺得訪問量量特別大時(shí)時(shí)。視圖前面面也提過,它它是一張?zhí)撎摫?,?yán)格格來講就是是一個(gè)子查查詢。利用用它可以簡(jiǎn)簡(jiǎn)化我們的的查詢復(fù)雜雜度,同時(shí)時(shí)它也有不不好的地方方,就是表表結(jié)構(gòu)改了了它也得跟跟著改動(dòng),增增加了維護(hù)護(hù)的難度。視圖有些些其他功能能,比如說說我有一個(gè)個(gè)數(shù)據(jù)庫(kù),它它里面存了了所有的產(chǎn)產(chǎn)品信息,而有一個(gè)供應(yīng)商他想看我產(chǎn)品的信息,如果我把整張表都給他看那么關(guān)鍵信息他就全部都看走了

46、,我的銷量有多少等等。我可以建立一個(gè)視圖里面只包含我想要給他看的內(nèi)容。序列是OOraclle數(shù)據(jù)庫(kù)庫(kù)獨(dú)有的東東西,它產(chǎn)產(chǎn)生一個(gè)唯唯一、不間間斷的序列列,作用是是一般做主主鍵。如下下我們要存存儲(chǔ)BBSS里的帖子子建立一張張表:creatte taable artiicle (id nuumberr,titlee varrcharr2(10024),cont longg);如果要加入入一篇文章章,采用這這種做法sselecct maax(idd) frrom aarticcle;然然后知道了了id往里里插,但若若有另外一一個(gè)客戶端端在做數(shù)據(jù)據(jù)插入同時(shí)時(shí)也在執(zhí)行行完上面一一條語(yǔ)句插插入了一條條記錄就

47、會(huì)會(huì)導(dǎo)致數(shù)據(jù)據(jù)不一致的的現(xiàn)象。為為此我們可可以創(chuàng)建一一個(gè)seqquencce,每次次插的時(shí)候候訪問它的的一個(gè)屬性性nexttval就就會(huì)得到不不重復(fù)的iid,實(shí)際際上它是在在內(nèi)部做了了同步的。六范式就是是數(shù)據(jù)庫(kù)設(shè)設(shè)計(jì)的一些些規(guī)則,而而它又是由由一個(gè)姓范的提出的的。講到設(shè)設(shè)計(jì)其實(shí)是是很復(fù)雜的的事情,不不能指望用用幾條規(guī)則則把所有的的都總結(jié)出出來(你在在造永動(dòng)機(jī)機(jī),追求銀銀彈sillver bulllet),所以有時(shí)時(shí)要具體問問題具體分分析,該打打破三范式式的時(shí)候還還是要敢于于打破。三范式追追求的是這這樣的目標(biāo)標(biāo):不存在在冗余數(shù)據(jù)據(jù),換句話話說就是同同樣的數(shù)據(jù)據(jù)不存第二二遍。當(dāng)然除了了冗余性外外還

48、有一些些邊緣性的的要求,不不是很重要要,講到的的時(shí)候再說說。第一范式式的第一個(gè)個(gè)要求-要要有主鍵;第二個(gè)要要求-列不不可分,不不能說姓名名我還要分分成姓和名名。第二范式式當(dāng)一張表表里有多個(gè)個(gè)字段作為為組合主鍵鍵的時(shí)候,非非主鍵的字字段不能夠夠依賴于部部分主鍵,多對(duì)多關(guān)系的表應(yīng)分割成三張表,如前一個(gè)面試題。第三范式式是不能存存在傳遞依依賴,即除除了主鍵之之外的其他他字段必須須直接依賴賴于主鍵。比如emmp表里的的depttno依賴于于empnno,而lloc依賴賴于emppno所以以不能放一一張表里。七PL_SSQL是OOraclle里面的的一個(gè)編程程語(yǔ)言,比比較有用,在在Oraccle內(nèi)部部寫

49、一些存存儲(chǔ)過程,觸觸發(fā)器,函函數(shù)。基本上每每一種數(shù)據(jù)據(jù)庫(kù)都有這這么一個(gè)語(yǔ)語(yǔ)言,SQQL-Seerverr叫做T_SQL,如果每個(gè)個(gè)都學(xué)比較較累,但是是可以取學(xué)學(xué)一種然后后其他實(shí)在在要用時(shí)再再查上手要要快很多??赡芤院蠛笪覀兘佑|觸的寫存儲(chǔ)儲(chǔ)過程機(jī)會(huì)會(huì)很少,實(shí)實(shí)際上我們們用SQLL和Javva程序就就可以解決決大部分問問題了,這這只是讓大大家有個(gè)了了解知道有有這么回事事。PL語(yǔ)言言用來補(bǔ)充充SQL語(yǔ)語(yǔ)言的,因因?yàn)楹笳卟徊粠в蟹种еШ脱h(huán),對(duì)對(duì)于有些問問題求解不不便,而過過程語(yǔ)言可可以解決。PL_SSQL寫程程序非常固固定,分為為四塊,第第一塊叫ddeclaare,聲聲明各種變變量和游標(biāo)標(biāo)的地方,可

50、可選;第二二個(gè)叫beegin,就就是說程序序從這開始始執(zhí)行了;exceeptioon是caatch到到任何異常常時(shí)要執(zhí)行行的;ennd是結(jié)束束,后面得得有一個(gè)分分號(hào)。set sserveerouttput on;beginn dbmss_outtput.put_linee(hii,pl_sql!);end;/第一句是將將內(nèi)部環(huán)境境變量打開開,默認(rèn)的的是關(guān)掉的的,不然看看不到任何何輸出結(jié)果果。dbmms_ouutputt相當(dāng)于ssysteem.ouut而puut_liine相當(dāng)當(dāng)于priintlnn。declaare v_nname varcchar22(20);beginn v_nname :

51、= huanngganng; dbmms_ouutputt.putt_linne(v_nname);end;/變量名的寫寫法是v_+名字,聲聲明的時(shí)候候是變量名名在前,類類型在后;賦值語(yǔ)句句有點(diǎn)像ppascaal冒號(hào)等等號(hào);declaare v_namee nummber := 00; begiin v_namee := 2/v_namee; dbbms_ooutpuut.puut_liine(vv_namme); exceeptioon whhen ootherrs thhen dbmss_outtput.put_linee(Errror!); end; /當(dāng)檢測(cè)到異異常時(shí)才執(zhí)執(zhí)行excce

52、ptiion,wwhen otheers tthen 這樣做就就相當(dāng)于一一張大網(wǎng)子子,肯定能能把異常捕捕獲到。PL_SSQL變量量聲明規(guī)則則:變量名名不能夠使使用保留字字(Oraacle里里保留字很很多所以推推薦使用vv_+名字字,這樣不不易沖突),如select、from等;第一個(gè)字符必須是字母;變量名最多包含30個(gè)字符;不要與數(shù)據(jù)庫(kù)的表或者列同名;每一行只能聲明一個(gè)變量。常用變量類型7種:binary_integer整數(shù)主要是計(jì)數(shù)而不是用來表示字段類型(用來for循環(huán),數(shù)組下標(biāo),效率比較高,Oracle追求的目標(biāo));number數(shù)字類型;char定長(zhǎng)字符串;date日期;long長(zhǎng)字符串可

53、達(dá)2GB;boolean布爾可取true、false或null值,建議大家布爾類型在用的時(shí)候一定要給一個(gè)初值,否則是null。declaare v_tempp nummber(1); v_counnt biinaryy_inttegerr :=00; v_saal nuumberr(7,22) := 40000.000; v_daate ddate := ssysdaate; v_pii connstannt nuumberr := 3.144; v_vaalid boollean := ffalsee; v_naame vvarchhar2(20) not nulll :=myNaame;

54、begiin dbbms_ooutpuut.puut_liine(v_teemp vvaluee:|v_daate); end; /dbms_outpput.pput_lline不不能打印處處布爾類型型的值。CConsttant相相當(dāng)于Jaava的ffinall ,noot nuull對(duì)變變量進(jìn)行限限制。Oraccle里面面的變量經(jīng)經(jīng)常用來存存儲(chǔ)某一張張表的某個(gè)個(gè)字段的值值,使用%typee屬性為了了解決表里里字段的變變動(dòng)與聲明明變量類型型一致。在在PL_SSQL里面面可以使用用 兩個(gè)短短橫線注釋釋掉一行,注注釋掉多行行的時(shí)候用用/* */。declaare v_empnno nuumberr

55、(4); v_empnno2 eemp.eempnoo%typpe; v_empnno3 vv_emppno2%typee; begiin dbbms_ooutpuut.puut_liine(Testt); end;%typee可以看做做變量的一一個(gè)屬性,指指示其類型型;引用某某張表某個(gè)個(gè)字段方法法如v_eempnoo2 emmp.emmpno%typee;。下面接著著講PL_SQL里里面復(fù)雜的的變量,可可以定義復(fù)復(fù)合變量,有有兩種:TTablee相當(dāng)于JJava里里的數(shù)組;Recoord相當(dāng)當(dāng)于Javva里的類類,暫且這這樣理解。要指定ttablee的數(shù)據(jù)類類型,比較較復(fù)雜是這這樣來做typ

56、ee typpe_taable_emp_empnno iss tabble oof emmp.emmpno%typee inddex bby biinaryy_inttegerr;typpe定義了了一種新的的數(shù)據(jù)類型型名字叫ttype_tablle_emmp_emmpno,然后可以用它定義新變量如 v_empnos type_table_emp_empno;。比較有意思的是下標(biāo)可以取負(fù)值如v_empnos(-1)。是什么促促使了reecordd類型數(shù)據(jù)據(jù)的出現(xiàn)呢呢?我們現(xiàn)現(xiàn)在寫的是是PL_SSQL,它它最主要用用于操縱表表,表里面面有字段、記錄,如如果把一條條記錄放一一個(gè)變量里里以后用起起來要

57、方便便得多。聲聲明這種類類型的方式式如:declaare typpe tyype_rrecorrd_deept iis reecordd( deeptnoo deppt.deeptnoo%typpe, dnname deptt.dnaame%ttype, looc deept.lloc%ttype); v_ttemp typee_reccord_deptt;beginn v_ttemp.depttno := 500; v_ttemp.dnamme := aaaaa; v_ttemp.loc := bj; dbmms_ouutputt.putt_linne(v_tempp.depptno| |

58、vv_temmp.dnname);end;/這樣聲明還還有一個(gè)弊弊病,那就就是當(dāng)字段段改變時(shí)控控制起來比比較煩人,為為此引入rrowtyype屬性性來聲明rrecorrd變量。只需:declaare v_ttemp deptt%rowwtypee;beginn v_ttemp.depttno := 500; v_ttemp.dnamme := aaaaa; v_ttemp.loc := bj; dbmms_ouutputt.putt_linne(v_tempp.depptno| | vv_temmp.dnname);end;/PL_SSQL語(yǔ)句句里的seelectt語(yǔ)句只能能返回一條條記錄,且

59、且seleect語(yǔ)句句里面必須須有個(gè)innto或使使用游標(biāo),還還要保證有有且僅有一一條記錄被被返回,這這是它比較較特別的地地方,不然然會(huì)報(bào)錯(cuò)。在PL_SQL里里面使用iinserrt、deeletee、upddate后后加上coommitt不然起不不了作用有有時(shí),只不不過。同時(shí)還有有這么一個(gè)個(gè)需求-執(zhí)執(zhí)行上述語(yǔ)語(yǔ)句以后有有多少條記記錄受影響響(除seelectt,對(duì)它來來說沒多大大意義),這這樣做:dbms_outpput.pput_lline(sql%rowccountt|條記記錄受影響響);sqql代表剛剛剛執(zhí)行完完的sqll語(yǔ)句,而而rowccountt代表剛剛剛執(zhí)行完的的sql語(yǔ)語(yǔ)句影

60、響了了多少條記記錄。如果在PPL_SQQL里創(chuàng)建建一張表得得這樣寫:execcute immeediatte ccreatte taable T(nnnn vaarchaar2(220) deffaultt aaaa); 由于外面面已經(jīng)有單單引號(hào)了所所以里面的的一個(gè)單引引號(hào)得用兩兩個(gè)代表一一個(gè)。deefaullt是給一一個(gè)默認(rèn)值值。PL_SSQL里條條件語(yǔ)句是是形如iff (條件件) thhen elssif (條件) thenn elsse endd if;注意最后后一個(gè)ellse后沒沒有theen,其他他條件后有有,而且eelsiff沒有那個(gè)個(gè)e,最后后以endd if;結(jié)束。PL_SSQ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論