(O管理)O自學(xué)自學(xué)筆記_第1頁
(O管理)O自學(xué)自學(xué)筆記_第2頁
(O管理)O自學(xué)自學(xué)筆記_第3頁
(O管理)O自學(xué)自學(xué)筆記_第4頁
(O管理)O自學(xué)自學(xué)筆記_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

當(dāng)啟動sqlplus時會提示輸入用戶名和口令,所謂的sqlplus是Oracle的一個客戶端。做實(shí)驗(yàn),當(dāng)然也可以安裝特定的客戶端軟件實(shí)現(xiàn)。好呢。以超級管理員身份鏈接數(shù)據(jù)庫的方法是再命令行下敲入命令:sqlplussys/口令assysdba。的用到一個學(xué)一個,沒必要從頭到尾的去學(xué)它。么叫第四代語言,因?yàn)槲覀冎赖谌Z言也得有ifelsefor等這些流程控制語句,也就是事務(wù)控制語句[transactioncontrolstatement]。數(shù)據(jù)拿出來,展現(xiàn)出來。聽起來似乎挺簡單的,但你要從表里拿數(shù)據(jù)得首先知道有幾張表,每張表里有些什么內(nèi)容。以上簡要的介紹了三張表,如果想更詳細(xì)的了解里面的數(shù)據(jù),教大家第一個select語句:各張表之間的關(guān)系,以及表內(nèi)部各字段之間的關(guān)系,越熟悉越好。最后的結(jié)果都是空值。符串顯示出來。如selectename||s樣就可以正確顯示了。關(guān)鍵字distinct是指選擇不重復(fù)的記錄,如果修飾多個字段時表示選擇該多個字段的組合起來。多加一個not就行。這種處理方式非常像我們的說話習(xí)慣。in然后跟著某個字段的取日期處理起來稍微麻煩一些,由于現(xiàn)在還沒有學(xué)日期函數(shù),所以采用另外一種方式—一個格式都能處理。selectchr(86)fromdual;將86代表的字符顯示出來,與之對應(yīng)的是將一個字符轉(zhuǎn)為對應(yīng)的ASCII碼,叫ascii,如:selectascii(‘A’)fromdual;就是將A的碼值顯示出來。如selectto_char(sal,'$99,999,999.9999')fromemp;就是以后面給定字符形式顯示出來,進(jìn)行格式控制。種格式的。實(shí)際上對日期的格式控制是利用J專題。門一共有多少個,distinct可以修飾字段。當(dāng)要將各個組中的記錄分別取出然后再計(jì)算比如平均值等要采用groupby+字段。比如:不唯一匹配導(dǎo)致。條select語句一定要非常熟悉,如果這都要查書的話對企業(yè)就沒法交代了,哈哈!子查詢因?yàn)樵僖粋€select語句里套了另外一個select語句。理解子查詢的關(guān)鍵是把它當(dāng)成一張表,可以對它做表連接最后就可以求出想要的結(jié)果來。單獨(dú)的select語句相當(dāng)簡單,的員工記錄。的經(jīng)理人。為同一張表起不同的別名然后當(dāng)成兩張表制條件很多,可能報(bào)出來的錯誤很難找并且看起來也不是很清楚。余的拿出來Join前加上right即可;如果兩邊多余的都想拿出來Join前加上full叫全外連接。selectsalfromempwheresalnotin(select);。使得程序簡潔了,但要注意最多只能兩層嵌套,第一層可能有多個輸出(分組時第二層一定只能有一個輸出,接下來就不能再嵌套了,一個輸入不能作為組函數(shù)的參數(shù)。join()(avg_salbetweensalgrade.losalandsalgrade.hisal)on(avg_salbetweensalgrade.losalandsalgrade.hisal)));鍵入命令grantcreatetable,createviewtoscott;然后以scott登錄就可以了。創(chuàng)建視圖時,名字要以v$開頭,視圖可以看做一個子查詢或一張表,實(shí)際上是張?zhí)摫?,取記錄還是從表圖名。;為數(shù)據(jù)庫的四大語句(select/insert/u里完成。insertinto+表名+values(各字段值在對這些數(shù)據(jù)進(jìn)行操作時最好有一個備份,方法很簡單rollback回退操作,createtable表名asselect*from+欲備份表名;insert語句還有一種插入方法,insertintodept2(deptno,loc)values(50,'beijing');只是插入部分字段的值,其他字段的值為null,還有一種方法是insertintodept2select*fromdept;將select子句選出的記錄挨個插入前提是選出的記錄與該表的記錄格式相同。selectename,sal,rfrom););1.找出沒選過“黎明”老師課程的所有學(xué)生姓名;>‘liming’;nt(*)>=2);reo=2));動回滾結(jié)束事務(wù)。庫里。創(chuàng)建一張表存放學(xué)生數(shù)據(jù)如:createtablestu();默認(rèn)值當(dāng)插入記錄時沒有對該字段賦新值就以該默認(rèn)值,其他沒有默認(rèn)值為null。五個約束條件第一個叫非空,第二個叫唯一,第三個叫主鍵,第四個叫外鍵第五個叫constraintstu_id_pkprimarykey(id),主鍵也可以是多個字段組合。外鍵約束建立在一張表的兩個字段上或者是兩張表的兩個字段上,是比較麻煩的一種約束。classnumber(2)referencesclass(id),參考class這張表的id字段,當(dāng)然也可以加在表級上:constraintforeignkey(class)referencesclass(id),。注意在寫外鍵約里的class叫參考字段,class里的id叫被參考字段,加外鍵的前提是被參考字段必須是約束條件。果應(yīng)不影響原來存的記錄值。[table_name]fromuser_cons些都是數(shù)據(jù)字典表,那么一共有多少個數(shù)據(jù)字典表呢?Oracle專門有另外一張表存放數(shù)據(jù)方法createindexidx_stu_emilonstu(email);也可以在字段組合上建立索引,以后在查詢組合時效率就高,刪除索引同刪除表方法類似。忘了自己有哪些索引可以采用一點(diǎn)不要輕易建立索引,除非覺得訪問量特別大時。少等等。我可以建立一個視圖里面只包含我想要給他看的內(nèi)容。createtablearticle(titlevarchar2(1024),);如果要加入一篇文章,采用這種做法selectmax(id)fromarticle;然后知道了id往里插,但若有另外一個客戶端在做數(shù)據(jù)插入同時也在執(zhí)行完上面一條語句插入了一條記錄就會導(dǎo)silverbullet所以有時要具體問題具體分析,該打破三范式的時候還是要敢于打破。除了冗余性外還有一些邊緣性的要求,不是很重要,講到的時候再說。第一范式的第一個要求-要有主鍵;第二個要求-列不可分,不能說姓名我還要分成姓和名。家有個了解知道有這么回事。dbms_output.put_line('hi,pl_sql!');//變量名的寫法是v_+名字,聲明的時候是變量名在前,類型在后;賦值語句有點(diǎn)像pascaldbms_output.put_line('Error!');/異常捕獲到。個字符;不要與數(shù)據(jù)庫的表或者列同名;每一行只能聲明一個變量。常用變量類型7種:binary_integer整數(shù)主要是計(jì)數(shù)而不是用來表示字段類型(用來for循環(huán),數(shù)組下標(biāo),);候一定要給一個初值,否則是null。v_countbinary_integer:=0;v_validboolean:=false;dbms_output.put_line('v_tempvalue:'||v_date);/對變量進(jìn)行限制。行的時候用/**/。dbms_output.put_line(‘Test’);的方式如:();v_temp.loc:='bj';/v_temp.loc:='bj';/么一個需求-執(zhí)行上述語句以后有多少條記錄受影響(除select,對它來說沒多大意義dbms_output.put_linexecuteimmediate'createtableT(nnnvarchar2(20)default''aaa'')';由于外面已經(jīng)有單引號了所以里面的一個單引號得用兩個代表一個。default是給一個默認(rèn)值。PL_SQL里條件語句是形如if(條件)then…elsif(條件)then…else…endif;注意最后一個ibinary_integer:=0;dbms_output.put_line(i);i:=i+1;jbinary_integer:=1;dbms_output.put_line(j);j:=j+1;dbms_output.put_line(k);forkinreverse1..10loopdbms_output.put_line(k);這類似于Java里的for循環(huán),reverse表示逆序循環(huán),1..10指定循環(huán)范圍。大家看一下,本來錯誤處理也不是我們的重點(diǎn)。dbms_output.put_line('選定行數(shù)過多!');dbms_output.put_line('error');否則我們寫的都是跨數(shù)據(jù)庫平臺的程序。creattableerrorlog();rollback;insertintoerrorlogvalues(seq_errorlog_id.nexval,v_errcode,v_errmsg,sysdate);mit;cursorcisclosec;印兩次,而實(shí)際上最后是沒找到的,結(jié)果明cursorcis不易出錯,平時常用。這是帶參數(shù)的游標(biāo)使用方法。cursorcisendif;可更新的游標(biāo),用得不多。存儲過程英文名叫做storedprocedure,每一種數(shù)據(jù)庫都會提供編寫存儲過程的語言,is存儲過程沒有返回值,它就得借助于傳出參數(shù),isif(v_a>v_b)thenv_ret:=v_a;elsev_ret:=v_b;endif;調(diào)用時采取這種方式:p(v_a,v_b,v_ret,v_temp);dbms_output.put_line(v_ret);/createorreplacefunctionsal_taxisif(v_sal<2000)thenreturn0.1;elsif(v_sal<2750)thenreturn0.15;elsereturn0.2;endif;調(diào)用方法如:selectlower(ename),sal_tax(sal)fromemp;actionvarchar2(10),);createorreplacetriggertrigifinsertingtheninsertintoemp2_logvalues(USER,‘insert’,sysdate);elsifupdatingthenelsifdeletingtheninsertintoemp2_logvalues(USER,’delete’,sysdate);endif;新:createorreplacetriggertrigcreatetablearticle(isleafnumber(1),--0代表非葉子節(jié)點(diǎn),1代表葉子節(jié)點(diǎn));createorreplaceprocedurep(v_pidarticle.pid%type,v_levelbinary_integer)iscursorcisselect*fromarticlewherepid=v_pid;v_preStrvarchar2(1024):='';foriin1..v_levelloopv_preStr:=v_preStr||'****';forv_articleincloopdbms_output.put_line(v_article.cont);if(v_article.isleaf=0)thenp(v_article.id,);endif;2.學(xué)生表如下:刪除除了自動編號不同,其他都相同的學(xué)生冗余信息號,姓名,課程編號,課程名稱,分?jǐn)?shù))四個球?qū)?,現(xiàn)在四個球?qū)M(jìn)行比賽,用一條sql語句顯示所有可能的比賽組合.答:selecta.*************************************************************************************selectyear,select*from(selectname,yearb1,lead(year)over()over(************************************************************************************說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a新表名:b)SQL:insertintob(a,b,c)selectd,e,ffromb;tablewheretable.title=a.title)bSQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONSQL:select*from日程安排wheredatediff('minute',f開始時間,getdate())>5deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)說明:--說明:--說明:從數(shù)據(jù)庫中去一年的各單位電話費(fèi)統(tǒng)計(jì)(電話費(fèi)定額賀電化肥清單兩個表來源)SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'yyyy')AStelyear,SUM(decode(TO_CHAR(a.telfeedate,'mm'),'02',a.factration))ASFRI,SUM(decode(TO_CHAR(a.telfeedate,'mm'),'06',a.factratioSUM(decode(TO_CHAR(a.telfeedate,'mm'),'07',a.factration))ASJUL,SUM(decode(TO_CHAR(a.telfeedate,'mm'),'09',a.faFROM(SELECTa.userper,a.tel,a.standfee,b.telfeedate,b.factrationGROUPBYa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'yyyy說明:四表聯(lián)查問題:SQL:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.....*******************************************************************************updatebsetb.value=(selecta.valuefromawherea.key=b***************************************************************************原表:5servlet80為了便于閱讀,查詢此表后的結(jié)果顯式如下(及格分?jǐn)?shù)為60):3xml40fail4jsp30fail---------------------------------------------------沒有裝ORACLE,沒試過(sign(score-60),-1,'fail','pass')asmarkfromcourse------------------------------5servlet80SQL>selectcourseid,coursename,score,decode(sign(score-60),-1,'fail','pass')asma3xml40fail4jsp30fail*******************************************************************************原表:使用pl/sql代碼實(shí)現(xiàn),但要求你組合后的長度不能超出oraclevarchar2長度的限制。createorreplacetypestrings_tableistableofvarchar2(20);/createorreplacefunctionmerge(pvinstrings_table)returnvarchar2islsvarchar2(4000);foriin1..pv.countloopls:=ls||pv(i);returnls;/insertintotvalues(1,'Joan');insertintotvalues(1,'Jack');insertintotvalues(1,'Tom');insertintotvalues(2,'Rose');insertintotvalues(2,'Jenny');selectt0.id,merge(cast(multiset(selectnamefromtwheret.id=t0.id)asstrings_table)from(selectdistinctidfromt)t0;droptypestrings_table;droptablet;3selectd.deptno,d.dname,rtrim(e.ename||','||5orderbye.ename)||','||7orderbye.ename)||','||9orderbye.ename)||','||11orderbye.ename)||','||also先createfunctionget_a2;isCol_a2:='';Col_a2=Col_a2||cur.a2;returnCol_a2;selectdistincta1,get_a2(a1)fromunite_a*******************************************************************************去年應(yīng)聘一個職位未果,其間被考了一個看似簡單的題,但我沒有找到好的大案.題為:有兩個表,t1,t2,Tablet1:Tablet2:.......且用的方法不要增加數(shù)據(jù)庫負(fù)擔(dān),如用臨時表等.inserttable2values(convert(varchar(50),@i),'2001-10-1',100)inserttable2values(convert(varchar(50),@i),'2001-11-1',50)inserttable2values(con

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論