筆記數(shù)據(jù)庫2 Oracle是目前世界上使用最為廣泛的由甲_第1頁
筆記數(shù)據(jù)庫2 Oracle是目前世界上使用最為廣泛的由甲_第2頁
筆記數(shù)據(jù)庫2 Oracle是目前世界上使用最為廣泛的由甲_第3頁
筆記數(shù)據(jù)庫2 Oracle是目前世界上使用最為廣泛的由甲_第4頁
筆記數(shù)據(jù)庫2 Oracle是目前世界上使用最為廣泛的由甲_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、登錄Oracle2Oracle的每一個角落,都會或多或少使用到Oracle數(shù)據(jù)庫每個Oraclesystem個數(shù)據(jù)庫可以只有一個system表空間char(10liu3varchar(10liu’3個字符,占用3個空間,比較節(jié)約空間varchar2Oracle企業(yè)開發(fā)中一般建議使用varchar2類型總結(jié):一般保存主鍵所在的列,固定的長度 等使charvarchar2egnumber(10number(7,227整數(shù)位是5位,比如12,11,10000.19最大的位數(shù),n—m整數(shù)的最大位數(shù)5、SQL作命令集,通過SQL語句來操作表中的數(shù)據(jù),完成對數(shù)據(jù)庫每一款數(shù)據(jù)庫中常用的SQL語言是相似的,只要掌握SQL語createtable表名(列名1 數(shù)據(jù)類型primarykey(指定主鍵),列名2 列名 …列名 create idnumber(4)primarykey,namevarchar2(50),agecreate idnumber(5)primarykey,namevarchar2(50),,案例:創(chuàng)建customer表,cidchar(8)主鍵,cnamevarchar2(50)char(2),addressvarchar2(50)地址,phonechar(11) createtablecustomer(,cidchar(8)primarykey,cnamevarchar2(50),addressvarchar2(50),phonechar(11),案例:創(chuàng)建book表,bidnumber(4)主鍵,bnamevarchar2(50)書名,pubvarchar2(50)出版社,authortypevarchar2(20)類型,numinputnumber(10)進貨量,numstorenumber(10)庫存量createtablebidnumber(4)primarykey,bnamevarchar2(50),pubvarchar2(50),authorvarchar2(50),typevarchar2(50),numinputnumber(10),numstorenumber(10)droptable案例:刪除customer表droptablecustomer; 1表droptable desc表名a格式:insertinto表名 2表中插入2條數(shù)insert insert select*fromainsertinto表名(列名123)values(列值1,列值2,列值3…) insert insertinto bookinsertintobook(bid,bname,author)insertintobook(bid,bname,author)aupdate表名set1=該列新值,23=該列新值…where條件b如果沒有where 2中ID是2的數(shù)據(jù)的改為, 2setname=’’,=’女’wherecid=2 2中id是4的數(shù)據(jù),改 2setname=’Where 2中是的信息,id改為100 2setid=100wherename=’ 2set (1)格式:deletefrom表名where條件(2wherewhere 2表中id為1的數(shù)delete 2where 2表中是的數(shù)據(jù)deletefrom 2wherename=''; 2表中所有的數(shù)據(jù)delete 11truncatedeletefrom表delete使用truncate刪除,刪除的數(shù)據(jù)無法還原。(1)格式:truncatetable表名booktruncatetablebook;(2)總結(jié)truncate優(yōu)點和缺點:create idnumber(4)primarykey,namevarchar2(50)編 額 1001211update銀行表set余額=余額-10where編號=122update銀行表set余額=余額+10where編號=2

Oracle中默認情況所有對表的修改操作(1、分析SCOTT/TIGER表空間中的3emp,dept,安裝好Oracle以后不要修改本機電腦名,Oracle的跟本方法1:netmanager中程序→Listener→主機改為:新方法2:netmanager中程序→Listener→主機改為還要重新啟動OracleServiceOracl格式:select*from表名案例:查詢empselect*from格式:select列名123from表名案例:查詢emp表中員工的編號,,職位selectempno,ename,jobfrom案例:查詢emp表中員工的,工資,獎金,職 m.,jobfrom案例:查詢emp表中員工的編號,,職位,入職的時selectempno,ename,job,hiredatefrom案例查詢emp表中員工的編號上級的編號(mgr),deptdname)和地址(loc)selectdname,locfromdept;a使用select列名1as列名12as別名23as別名3from表名deptdname)和部門地址(loc),分selectdnameaslocas部門所在的地址from案例:查詢empselectenameas,jobas職位,salas工資,deptno部門編號fromemp;b使用空格select列名1別名12別名2,3別名3from表名案例:查詢emp表中員工的,入職的時間,工資,給selectename,hiredate入職時間,sal工資from(2)給表起別名:要查詢的數(shù)據(jù)來源于多,使用多表連接查user名name,customer表的用戶名也是name,這時候就容易導(dǎo)abselect別名.列名12…from表名別名selecte.ename,e.job,e.deptnofromempe;select列名/*from表名where條件案例:查詢emp表中編號是7369的員工的,職位,工selectename,job,salfromempwhereename=7369;案例:查詢emp表中名字不是WARD的編號,,部門編selectempno,ename,deptnofromempwhereename!=’WARD’;selectempno,ename,deptnofromempwhereename<>'WARD';select*fromempwhereselect*fromempwheredeptno=30;反例:查詢是KING的員工的所有信select*fromempwhereename='king';Oracle中不區(qū)分大小寫,但是單引號內(nèi)的字符串,嚴格的區(qū)分nullisnull:是null mfromempwherecommisnull;isnotnull案例:查詢empselect*fromwherecommisnotselectempno,ename,job,mgrfromempwheremgrisnotnull;使用通配符跟like案例:查詢emp表中名字是以‘T’開頭的員工的,職位selectenamejobfromempwhereenamelike‘T%’;案例:查詢empSselect*fromwhereename案例:查詢emp表中,名字的倒數(shù)第2E’員工的EEE0select*fromempwhereenamelikeselectenamefromempwhereenamelike‘%L’;

E案例查詢工資在1200~1800之間所有員工的職位工selectename,job,salfromempwheresal>=1200andselectempno,ename,job,sal,deptnofromempwherejob=‘MANAGER’anddeptno=30;select*fromwheresal>1000orcommisSSS%select*fromempwhereenamelikeSorjob=‘SALEAMAN’;select*fromwherenotmgrisnot案例查詢部門的編號不是10號部門的所有員工的職位,入職時間,部門編號(2種寫法)selectename,job,hiredate,deptnofromempwheredeptno!=10;selectename,job,hiredate,deptnofromempwherenotdeptno=10;select*fromwheresal>=2000andsal<=5000;select*fromempwheresalbetween2000andbetween初值and終值select*fromwheredeptnobetween10and案例:查詢員工的編號是select*fromwhereempno=7369orempno=7499orempno=7654orempno=7698orempno=7844orempno=7900;(6)in(list):listlistselect*fromwhereempno案例:查詢職位不是selectename,jobfrom 案例:查詢empselectdeptnofromselectdistinctdeptnofrom案例:查詢empselectdistinctjobfromemp;Oracle中number案例:查詢emp表中每個員工的年薪selectempno,ename,sal,sal*12年薪fromemp;案例:查詢emp表中每個員工的編號,,工資,獎金,年 m年薪fromselectename,sal,comm,sal*12+nvl(comm,0)from列名:查詢該列中列值不為null案例:查詢emp表中雇員的數(shù)量selectcount(*)fromselectcount(*)from案例:查詢emp表金不為null的雇員的數(shù)selectcount(comm)from案例:查詢emp表中含有上級(mgr)員工的個數(shù)selectcount(mgr)fromemp;案例:求出empselectsum(sal)fromemp;案例:求出empselectsum(comm)fromemp;案例:求出empselectavg(sal)平均工資fromemp;案例:求出emp表金的平均值selectavg(comm)fromemp;案例:求出empselectmax(sal)from案例:求出empselectmax(empno)fromemp;案例:求出empselectmin(sal)fromempselectcount(*)員工的數(shù)量,avg(sal)平均工資,max(sal)最高工資,min(sal)最低工資,sum(sal)工資總和fromemp;案例:求出emp,10selectavg(sal)fromempwheredeptno=10;select*/列名from表名where條件orderby列名案例:查詢emp表所有員工的,工資,根據(jù)工資進行升序selectename,salfromemporderbysalasc;emp1000~3000select*fromwheresalbetween1000and3000orderbysaldesc(2)select*/列名from表名where條件orderby列名1asc/desc2把查詢的結(jié)果根據(jù)列名1進行升序或者降序,如果列名1案例:查詢emp表中的員工的編號,,職位,工資,部門selectempno,ename,job,sal,deptnofromemporderbydeptnoasc,empnodesc;案例:查詢emp表中員工的編號,,職位,工資,要求必selectempno,ename,job,salfromempwheremgrisnotnullorderby3、groupby:分組,根據(jù)某一個列,將表中數(shù)據(jù)分成幾組select列名/聚合函數(shù)from表名where條件groupby列名orderby列名/聚合函數(shù)/別名首先執(zhí)行where條件,然后groupby(分組),查詢返回的數(shù)據(jù),最后執(zhí)行orderby(排序)empselectmax(sal),min(sal),deptnofromempgroupbydeptno;案例:查詢emp表中,含有上級的員工,求出每個部門員selectcount(*),sum(sal),max(sal),deptnofromempwheremgrisnotnullgroupbydeptnoorderbycount(*);selectcount(*)部門人數(shù),sum(sal),max(sal),deptnofromwheremgrisnotnullgroupbydeptnoorderby部門人數(shù);selectavg(sal),max(sal),min(sal),job,fromempwheresalbetween1000and5000groupbyorderbyavg(sal)asc,max(sal)selectcount(*),avg(sal),max(sal),deptnofromempwherecommisnotnullorsal>1200groupbyorderbyavg(sal)asc,max(sal)4havingselect列名/聚合函數(shù)from表名where條件groupby列名having子句orderby列名/聚合函數(shù)/別名首先執(zhí)行where條件,通過where條件過濾后的數(shù)據(jù),執(zhí)行g(shù)roupby分組,然后對每一組數(shù)據(jù)使用having再進行過濾,最后的結(jié)果使用orderby進行排序havingselectdeptno,max(sal),min(sal),sum(sal)fromempwheresalbetween1300and3000groupbydeptnohavingmax(sal)<3000orderbydeptnodesc;案例:查詢emp表中的含義上級的員工的信息,求出每個2000,而且最后返回的結(jié)果中,按照人數(shù)進行降序排selectjob,count(*),avg(sal),sum(sal),max(sal)fromempwheremgrisnotnullgroupbyjobhavingorderbycount(*desc,avg(salasc;eg地址(deptselect別名1.*2.*/列名from表名1別名12別名2where關(guān)聯(lián)條件案例:查詢emp表中員工的編號,以及所屬部門的所有信selecte.empno,e.ename,d.*fromempe,deptd;---48selectcount(*fromemp;---12selectcount(*fromdept;---4關(guān)聯(lián)條件的編寫:兩之間的關(guān)聯(lián)關(guān)系,比如emp表中deptnodept表中deptno(部門的編empselecte.ename,e.job,d.*fromempe,deptdwhere案例:查詢emp表中員工的編號,,職業(yè),工資,以及所fromempe,deptdwhereemp1000~3000selecte.ename,e.job,e.sal,d.*fromempe,deptd select別名1.*2.*/列名from表1別名12別名2where非等值關(guān)聯(lián)條件 emp表中的每一個員工的工資必須在salgrade中最低工資和emp表和salgradeemp.salbetweensalgrade.losaland案例:查詢emp表中員工的編號,,工資以及所屬工資等selecte.empno,e.ename,e.sal,s.grade,s.hisalfromempe,salgradeswheree.salbetweens.losalandselecte.ename,e.job,e.sal,e.hiredate,s.*fromempe,salgradeswheree.salbetweens.losaland分析:把emp表當(dāng)成2,一員工表,另外一是領(lǐng)導(dǎo)表,員工表中mgr(上級編號)等于表中empno(編selecte.ename,e.job,m.empno,m.enamefromempe,empm---e員工表,m表wheree.mgr=m.empno案例:查詢emp表中員工的編號,,工資,以及上級fromempe,empmwheree.mgr=(1)Oracle中特有的用于查詢外連接語法,使用(+)來進行selectd.deptno,d.dname,e.*fromdeptd,empewhered.deptno=e.deptnoselectd.deptno,d.dname,e.*fromdeptd,empewhered.deptno=e.deptno(+)insertintoemp(empno,ename)les99‘insertintoemp(empno,ename)values(6666‘案例:查詢empselecte.empno,e.ename,d.*fromempe,deptdwheredeptempselecte.ename,e.job,e.sal,e.hiredate,d.*fromempe,deptdwhere案例:查詢emp表中所有的員工的,職位,工資,以及對e.enamee.jobe.slm.empnom.enmem.jobfromempe,emp where案例:查詢empdeptselectfromempe,deptwhere(2)Oracle中的外連接查詢,只能在條件一端加上(+),不2、SQLselect別名1.*/列名,別名2.*/列名from左表別名1innerjoin右表別名2on關(guān)聯(lián)條件empselecte.*,d.dname,d.locfromempeinnerjoindeptdone.deptno=d.deptno案例查詢dept表中部門名字和地址以及該部門下員工的,selectfromdeptdinnerjoinempeond.deptno=e.deptno;,案例:emp表中員工的編號 ,selecte.empno,e.ename,e.job,e.sal,s.gradefromempeinnerjoinsalgradesone.salbetweens.losalandselects.*,e.empno,e.ename,e.salfromsalgradesinnerjoinempeone.salbetweens.losalands.hisalselect別名1.*2.*from左表別名1leftouterjoin右表別名2on關(guān)聯(lián)條件empselecte.empno,e.ename,e.hiredate,d.*fromempeleftouterjoindeptdone.deptno=案例:查詢dept表中所有部門的信息,以及所屬員工的編號,selectd.*,e.empno,e.ename,e.job,e.salfromdeptdleftouterjoinempeond.deptno=案例:查詢emp表中所有員工的編號,,職位,工資以及fromempeleftjoinempmone.mgr=select別名1.*2.*from左表別名1rightouter)join右表別名2on關(guān)聯(lián)條件案例:查詢emp表中所有員工的編號,以及所屬部門的編selecte.empno,e.ename,d.deptno,d.dnamefromdeptdrightouterjoinempeond.deptno=案例查詢dept表中所有的信息以及所屬員工的編號,selecte.empno,e.ename,e.job,d.*fromemperightouterjoindeptdone.deptno=d.deptnoselect別名1.*2.*from左表別名1fullouterjoin右表別名2on關(guān)聯(lián)條件selectfromempefullouterjoindeptdone.deptno=d.deptnodeptempselectfromdeptdfullouterjoinempeond.deptno=e.deptnocreateview視圖名稱createviewemp_viewselect*fromemp_view1000~3000selectempno,ename,salfromemp_viewwheresalbetween1000and3000案例:創(chuàng)建view_emp_dept,使用左外連接查詢,查詢empcreateviewview_emp_deptselecte.empno,e.ename,e.sal,e.job,e.hiredate,d.*fromempeleftouterjoindeptdon案例:直接查詢emp表和dept表,查詢emp表中所有員工selecte.ename,e.sal,d.deptno,d.dnamefromempeleftjoindeptdone.deptno=view_emp_deptselectename,sal,deptno,dnamefromview_emp_dept案例:創(chuàng)建一個視圖view_emp2,查詢emp表中含有并且獎金為null的所有員工的編號,,職位,工資,獎金,以createviewview_emp2wheremgrisnotnullandcommisnullcreateorreceview視圖名案例:修改emp_view視圖,查詢emp表中員工的編號,姓createorreceviewemp_viewselecte.empno,e.ename,e.job,e.sal,m.empno編號m.ename,m.job職fromempeinnerjoinempmone.mgr=m.empnodropview視圖名稱案例:刪除視圖emp_viewdropviewemp_view;createviewview_emp3select*frominsertintoinsertintoview_emp3(empno,ename)insertintoview_emp3(empno,ename)view_emp3emp8222updateview_emp3setename=‘whereempno=案例:通過view_emp3刪除emp表中,員工的編號為dropviewwhereempno=6999orempno=7111orempno=8222orempno=9999orempno=6666;createview視圖名稱withreadeg:createviewview_emp6select*fromwithreadcreatesequence序列名稱tid_seqcreatesequencetid_seq;nextvalcurrvalselecttid_seq.nextvalfromdual;selecttid_seq.currvalfromdual;創(chuàng)建一個序列tid2_seqcreatesequencetid2_seq;創(chuàng)建一個表emp2createtableeidnumberparimayenameinsertintoemp2insertintoemp2insertintoemp2a1)startwith初始值incrementby數(shù)值createsequenceeid_seq2startwith10incrementbyminvalue1createtableeidnumber(10)primaryinsertintoemp3values(eid_seq2.nextval)createtableworker1(widnumber(4)primarykey,namevarchar2(50)insertintoworker1values(1,’’)insertintoworker1values(1,’’)createtablewidnumber(4)constraintpk_widprimarykey,namevarchar2(50)createtableworker3(widnumber(5),sidnumber(10),nameconstraintpk_wid_sidprimaryaltertable表名addconstraint約束名primarykey(列名)createtableworker4(sidnumber(10),snamevarchar2(50)altertableaddconstraintpk_w4primaryaltertable表名addconstraint主鍵名字primarykey(列名)createtableworker6(idnumber(4),namevarchar2(50),agenumber(3)altertableaddconstraintw6_pkprimarykey(id)a、altertable表名dropprimaryaltertableworker4dropprimarykey;b、altertable表名dropconstraint約束名案例:刪除worker2pk_WIDaltertableworker2dropconstraint值可以出現(xiàn)null值。createtableidnumber(4)primarykey,namevarchar2(20)unique,cardnovarchar2(5)uniqueinsertintoworker7nullinsertintoworker7createtableworker8(idnumber(4)primarykey,namevarchar2(50)altertableaddconstraintuq_nameunique(name)createtableidnumber(4)primarykey,namevarchar2(20),passwordvarchar2(20)altertableaddconstraintuq_name_passwordaltertable表名dropconstraint約束名案例:刪除uq_name_password約束altertableworker9dropconstraintuq_name_password;修飾的列,列值可以為nullcreatetablecustomer3(cidnumber(4)primarycnamevarchar2(50)uniquenotnull,char(2)check( ageinsertinto insertinto 案例在customer3上面 altertableaddconstraintchk_check(like insertintocustomercustomer3ageage在1~150之間altertableaddconstraintchk_agecheck(agebetween1and150);altertable表名dropconstraint約束名案例:刪除customer3上chk_age和chk_altertablecustomer3dropconstraintchk_age;altertablecustomer3dropconstraintchk_;案例:查詢empselectename,length(ename)fromemp;selectlength(‘ oworld’)fromemp;(2)建議使用dualselectlength(‘ oworld’)fromdual;eg:selectupper(‘liuyingqianfromdual;eg:selectlower(‘LIU’)fromdual;案例:查詢emp表中員工的,把都改為小寫字母輸selectename,lower(ename)fromemp;(5)substr123):用于截取字符串第1參數(shù):處理字符串21,案例:查詢empename方法1:select(ename,length(ename)-1,2)fromselectename,substr(ename,-2,2)from(6)instr12211select ’)from5、數(shù)值處理函數(shù):處理類型是numberselectround(45.926,2)fromselectround(45.926,1)fromselectround(45.926,0)fromselectround(45.926,-1)fromselectround(45.926,-2)fromselectround(55.926,-2)from0selecttrunc(45.926,2)fromdual;--45.92selecttrunc(45.926,1)fromdual;--45.9selecttrunc(45.926,0)fromdual;--45selecttrunc(45.926,-1)fromdual40selecttrunc(45.926,-2)fromdual;---0selectabs(100)fromdual;selectabs(-100fromdual;selectceil(21.123)fromdual22selectfloor(20.999999)fromdual;--值1,反之如果數(shù)字為負數(shù),返回值-1selectsign(0)fromdual;--0selectsign(10)fromdual;--1selectsign(-10fromdual1selectsqrt(100)fromdual;selectpower(10,2fromdual100selectsysdatefromselectsysdate-1,sysdate,sysdate+1fromdual;份,mi就是分鐘(3)to_chardate轉(zhuǎn)換為指定格式的chart_ha(dteselectto_char(sysdate,‘yyyy-mm-ddhh24:mi:ss’)fromdual;案例:使用年月日方式顯示empselectename,hiredate,to_char(hiredate,’yyyy-mm-ddfromemp;使用to_char獲得日期的某一部分值selectto_char(sysdate,‘mm’)fromselect*fromwhereto_char(hirdate,’mm’)=’05’selectto_char(hiredate,’mm’)fromemp;(4)to_date函數(shù):把char案例:往emp表中,插入一條數(shù)據(jù),包含hiredateinsertintoemp(empno,ename,hiredate),(5)months_between(d1,d2):求出d1和d2之間相差幾個案例:查詢empselectename,months_between(sysdate,hiredate)fromemp前Oracle進行,在使用查詢語句,不需要再指定具體是哪createindex索引名on表名(列名)案例:在worker9namecreateindexindex_na

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論