![ORACLE_SID數(shù)據(jù)庫相關(guān)資料_第1頁](http://file4.renrendoc.com/view/7b880c76d239bd28de1a3128f0be4e8f/7b880c76d239bd28de1a3128f0be4e8f1.gif)
![ORACLE_SID數(shù)據(jù)庫相關(guān)資料_第2頁](http://file4.renrendoc.com/view/7b880c76d239bd28de1a3128f0be4e8f/7b880c76d239bd28de1a3128f0be4e8f2.gif)
![ORACLE_SID數(shù)據(jù)庫相關(guān)資料_第3頁](http://file4.renrendoc.com/view/7b880c76d239bd28de1a3128f0be4e8f/7b880c76d239bd28de1a3128f0be4e8f3.gif)
![ORACLE_SID數(shù)據(jù)庫相關(guān)資料_第4頁](http://file4.renrendoc.com/view/7b880c76d239bd28de1a3128f0be4e8f/7b880c76d239bd28de1a3128f0be4e8f4.gif)
![ORACLE_SID數(shù)據(jù)庫相關(guān)資料_第5頁](http://file4.renrendoc.com/view/7b880c76d239bd28de1a3128f0be4e8f/7b880c76d239bd28de1a3128f0be4e8f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Day01SQL(structure query language)DB databaseDDL(datta deffinitiion laanguagge)數(shù)據(jù)定定義語言:ccreatee tablle/altter taalbe/ddrop ttalbecolumn,data type,widthhconstraaintDML(Datta mannipulaation languuage)數(shù)數(shù)據(jù)操作語言言:inseert,uppdate,delette(增,刪刪,改)rowTCL(traansacttion(事事務(wù)) coontroll langguage)事務(wù)控制語語言:事務(wù)核核心語句:
2、ccommitt提交、roollbacck回滾DCL(graant授權(quán) revokke收回權(quán)限限)DQL(datta queery laanguagge)數(shù)據(jù)查查詢語言:sselecttR(關(guān)系型)DDBMS數(shù)據(jù)庫產(chǎn)商 數(shù)數(shù)據(jù)庫名版本oracle oraclle10g oraclle10.22.0IBM db2MS SQL sserverrSYBASE SEMMYSQLORACLESID 數(shù)數(shù)據(jù)庫對應(yīng)的的實例的名字字(即一個具具體數(shù)據(jù)庫的的名稱)創(chuàng)建數(shù)據(jù)庫其實實是創(chuàng)建了:數(shù)據(jù)文件,日日志文件,操操作文件。 SGGA進(jìn)程 insstancee與應(yīng)用程序序1.空值(NULLL)在輸入數(shù)數(shù)據(jù)時,該字
3、字段沒有指定定值,并且沒沒有空值不等于0空值不等于空格格算術(shù)表達(dá)式中包包含空值導(dǎo)致致結(jié)果為空在算術(shù)表達(dá)式中中包含空值需需要用空值轉(zhuǎn)轉(zhuǎn)換函數(shù)cooalescce處理2.空值轉(zhuǎn)換函函數(shù)coalescce函數(shù)(通通用)數(shù)據(jù)類型可以是是數(shù)值nummber、字字符charracterr、日期daate數(shù)據(jù)類型必須匹匹配NVL(p1,p2)函數(shù)數(shù)(oralle專用)nvl(p1,p2)if p1 iis nulll theenreturnn p2;elsereturnn p1;end if;3.拼接運算符符用于連接多個字字段的值拼接接在一起,特特殊符號放在在單引號里3.文字字符串串用 單引號表示示4.di
4、stiinct關(guān)鍵鍵字,去掉重重復(fù)值從distinnct開始到到from中中所有字段的的聯(lián)合中有重重復(fù)的去重(注注意,是聯(lián)合合起來的重復(fù)復(fù))distincct后跟多跟跟distincct應(yīng)用到sselectt后面所有列列,所有列聯(lián)聯(lián)合起來唯一一如果selecct后面跟ddistinnct關(guān)鍵字字,一定是直直接跟在seelect后后面,前面沒沒有任何內(nèi)容容。5.wheree的作用用where子子句對表里的的記錄進(jìn)行過過濾1.)wherre子句跟在在FROM子子句之后2.)wherre子句后跟跟條件表達(dá)式式列名、表達(dá)式(比比如:sallary112)、常 量比較運算符文字值3.)wherre子句后
5、不不能跟別名總結(jié):1)wheree子句執(zhí)行在在前,sellect執(zhí)行行在后,別名名不能放在wwhere子子句2)select salarry*12 ann_ssal frrom s_emp wwhere salarry*121200select salarry*12 ann_ssal frrom s_emp wwhere salarry10000(能提搞搞查詢效率)salary可可建立索引,索索引的目的,提提高查詢效率率3)wheree子句能不用用表達(dá)式盡量量不用表達(dá)式式;4)wheree子句中的列列為字符類型型字符串必面用單單引號括起來來字符串是大小寫寫敏感6.比較和邏輯輯運算符1)邏輯比較
6、運運算符 2)SQL比較較運算符betweenn andd :表示一一個范圍,是是閉區(qū)間orin表示一個集集合,是離散散值,含義為為等于其中任任意一個值,等等價于 :anyin(X,Y,ZZ):表示符符合X,Y,ZZ的 。等價價于 deept = any(XX,Y,Z),表示等于于任意一個7.LIKE運運筧符在字符串比較中中,可用liike和通配配符進(jìn)行查找找通配符種類:與表示0或多個個字符表示任意單個個字符8.is nuull運算符符is nulll是判斷是否否為空測試NULL值值需要用ISS NULLL運算符NULL不能用用等于()和和不等于()跟任何何值比較,包包括它自身。所所以 ,不能
7、能使用或來測試一一列是否有空空值9.is noot nulll運算符表示不為空10.運算符符的否定形式式邏輯比較運算符符!SQL比較運算算符NOT BETTWEEN ANDNOT IN ALLL(并且關(guān)系系,注意別讓讓NULL在在NOT IIN里出現(xiàn)) IN(或者者關(guān)系) NOT LIKKENOT IS NULL11.ORDEER BY子子句用ORDER BY 子句句查詢出來的的結(jié)果集進(jìn)行行排序ASC:升序,默默認(rèn)DESC:降序序ORDER BBY是SELLECT語句句中的最后一一個子句ORDER BBY執(zhí)行于SSELECTT語句之后ORDER BBY 之后可可以跟字段名名,別名,字字段順號,
8、表表達(dá)式(盡量量不用)NULL值在排排序中的顯顯顯升序顯示在最后后除序顯示在前面面(NULLL值表示無窮窮大)按多列進(jìn)行排序序ORDER BBY 后面的的列可以不出出現(xiàn)在SELLECT后面面Day02一、SQL函數(shù)數(shù)的兩種類型型單行函數(shù) 字符類型(ccharaccter)數(shù)值(nummber)日期(datte)轉(zhuǎn)換多行函數(shù)(組函函數(shù))1.單行函數(shù)where 后后跟條件表達(dá)達(dá)式,還可以以跟單行函數(shù)數(shù)表達(dá)式或函數(shù)的的寫法導(dǎo)致索索引用不了大小寫轉(zhuǎn)換函數(shù)數(shù)LOWER()轉(zhuǎn)轉(zhuǎn)小寫UPPER()轉(zhuǎn)轉(zhuǎn)大寫一般用于 innsert語語句中,便于于以后操作(查查詢)方便,沒沒有大小寫限限制參數(shù)為列名或常常量,調(diào)
9、常量,用frrom duual(系統(tǒng)統(tǒng)表,只有一一條記錄)INITCAPP()首字線線大寫concat()拼接 selecct conncat(He,llo, Worrld) Helllo frrom duual;求子串:subbstr(strinng,1,3)參數(shù):字符串,起起始位,截取取個數(shù)求長度:lenngth(sstringg)參數(shù):字字符串select substtr(firrst_naame,leength(firstt_namee)-1,22) froom s_eemp ;左對齊:lpaad(sttring,返回長度度,不不夠就補符符號),位數(shù)數(shù)不夠的,左左邊補指定字字符sele
10、ct deptnno,lpaad(depptno,55,) fromm deptt;右對齊rpadd()select deptnno,rpaad(depptno,55,!) fromm deptt;數(shù)值函數(shù)四舍五入rouund(數(shù),精精度) 如round(45.7223,2) 得45.772 round(45.7223,1) 得50 round(45.7223,1)得得46截取truncc(數(shù),起始始截取點)如round(45.7223,2) 得45.772round(445.7233,1)得得45-1表示保留到到十位數(shù),00保留到個位位數(shù),1保留留一位小數(shù),依依此類推select round
11、d(44.7723,-11) froom duaal;40select roundd(44.7723) ffrom ddual;445select roundd(44.3323) ffrom ddual;444select roundd(44.3323,1) fromm duall;44.33select roundd(44.3373,1) fromm duall;44.44系統(tǒng)自動調(diào)用的的函數(shù)(隱式式調(diào)用,orracle的的自動轉(zhuǎn)換函函數(shù)一般都趨趨向于字符串串轉(zhuǎn)數(shù)值)to_numbber(數(shù)字字字符),返返回數(shù)值(注注意一定要是是數(shù)字字符)select to_nuumber(12)*10 f
12、from ddual;得得120select * froom tesst wheere c11 = 100;select * froom tesst wheere too_numbber(c11) = 110;這語句句會導(dǎo)致索引引用不了,所所以表達(dá)式一一定要做到數(shù)數(shù)據(jù)類型匹配配。to_numbber()select to_nuumber(!$,xx) fromm duall;(xxx代表兩位位十六進(jìn)制)得171to_charr(數(shù)值,格格式)函數(shù)9:代表數(shù)字位位select to_chhar(saalary,$9) fromm s_emmp;0:當(dāng)定義寬度度大于實際值值寬度時,00會被強制顯顯
13、示在前面,以以補齊位數(shù)select to_chhar(saalary,000,000,000.0000) frrom s_emp;select to_chhar(saalary,909,099,9999.9990) ffrom ss_emp;select to_chhar(2335,9000,00.00) from s_empp;:代表美元的的貨幣符號select to_chhar(saalary,$99,999.999) ffrom ss_emp;L:本地貨幣符符號select to_chhar(saalary,L99,999.999) ffrom ss_emp;(跟環(huán)境變量有有關(guān))設(shè)置中文
14、B HHELLLNLSLANNG=SIIMPLIFFIED CCHINESSE_CHIINA.ZHHS16GBBKexport NLS_LLANG設(shè)置英文 NLS_LANNG=AMEERICANN_AMERRICA.UUS7ASCCIIexport NLS_LLANG直接在SQL環(huán)環(huán)境下alter ssessioon sett nls_languuage=simpllifiedd chinnese;alter ssessioon sett nls_languuageAAMERICCAN_AMMERICAA.US7AASCII;C SHELLLsetenv NLSLLANG=SIMPLLIFIE
15、DD CHINNESE_CCHINA.ZHS166GBKsetenv NLS_LLANG=AAMERICCAN_AMMERICAA.US7AASCII.如查顯示位數(shù)數(shù)不足(定義義寬度小于實實際長度),用用代替替二、多表查詢交叉連接,內(nèi)連連接,外連接接內(nèi)連接原理(重重要知識點,查查看另一文件件sql_nnotes.txt)1.交叉連接ccorss:實際上是兩兩個表中的記記錄的笛卡爾爾積(即兩張張表組合)列出每個員工在在哪個部門select e.firrst_naame,e.dept_id,d.id, from s_empp e crross jjoin ss_deptt d;(330
16、0條記錄錄,s_emmp(25)*s_deept(122)=3000)問題:每個員工工都在好多部部門解決方案,用: 表11 joiin 表2 on 兩兩個表關(guān)聯(lián)字字段匹配表達(dá)達(dá)式 select e.firrst_naame,e.dept_id,d.id, from s_empp e jooin s_dept d on e.deppt_id=d.id;另一例題select d.id,d.namme,r.nname ffrom ss_deptt d innner jjoin ss_regiion r on d.regioon_id=r.id;2.內(nèi)連接等值連接(jooin):兩兩張表有
17、描述述共同屬性的的列。常見形形式為你表的的主鍵和子表表的外鍵相等等。非等值連接(jjoin):可以用beetweenn and 這樣的非等等值運算符將將兩張表中的的列寫成一個個表達(dá)式,所所謂表之間的的關(guān)系,實際際指表中的行行(記錄)之之間的關(guān)系,該該關(guān)系通過將將表中的列寫寫成表達(dá)式來來體現(xiàn)。自連接(sellf joiin):同一一張表的列之之間的關(guān)系實實際反映的是是同一張表的的行(記錄)之之間的關(guān)系;通過給表起起別名將同一一張表的列之之間的關(guān)系轉(zhuǎn)轉(zhuǎn)換成不同表表的列之間的的關(guān)系內(nèi)連接中包含有有wheree或and時時,都是先連連接后過濾原理:t1表和t2表表做內(nèi)連接,連連接條件為oon t1.c
18、1 = t2.c22,假設(shè)t1表做驅(qū)驅(qū)動表,t22表做匹配表表,記錄的匹匹配過程如下下:1、從t1表中中讀取第一條條記錄r1,若若它的c1值值為12、根據(jù)該值到到t2表中查查找匹配的記記錄,即需要要遍歷t2表表,從t2表表中的第一條條記錄開始,若若該記錄(rr1)的c22列的值=11,我們就說說這兩條記錄錄能夠匹配上上,那么t11的r1和tt2的r1組組合起來,作作為結(jié)果集里里的一條記錄錄,否則不能能組合起來,即即被過濾掉。3、按照方法22依次將t22表中所有的的記錄檢測一一遍,只要匹匹配就放入結(jié)結(jié)果集中4、從t1表中中讀取第二條條記錄,依次次重復(fù)步驟22和3,產(chǎn)生生最終的結(jié)果果集t1表和t2
19、表表做內(nèi)連接,連連接條件為oon t1.c1 = t2.c22,假設(shè)t1表做驅(qū)驅(qū)動表,t22表做匹配表表,記錄的匹匹配有如下三三種情況:1、t1表中的的某條記錄在在t2中找不不到任何一條條匹配的記錄錄,那么t11表中的該記記錄不會出現(xiàn)現(xiàn)在結(jié)果集中中2、t1表中的的某條記錄在在t2表中只只有一條匹配配的記錄,那那么t1表中中的該記錄和和t2表中匹匹配的記錄組組合成新記錄錄出現(xiàn)在結(jié)果果集中3、t1表中的的某條記錄在在t2表中有有多條匹配的的記錄,那么么t1表中的的該記錄會和和t2表中每每一條匹配的的記錄組合成成新記錄出現(xiàn)現(xiàn)在結(jié)果集中中4、內(nèi)連接的核核心為任何一一張表里的記記錄一定要在在另一張表中中
20、找到匹配的的記錄,否則則不能出現(xiàn)在在結(jié)果集中t1表和t2表表做內(nèi)連接,連連接條件為oon t1.c1 = t2.c22有兩種方式都能能得到結(jié)果集集記錄1、一種t1表表做驅(qū)動表,tt2表做匹配配表2、另一種t22表做驅(qū)動表表,t1表做做匹配表3、無論哪種方方式最終得到到的結(jié)果集都都一樣,所不不同的是效率率練習(xí):Carmen在在哪個部門select e.firrst_naame, from s_empp e jooin s_dept d on e.deppt_id=d.id and ee.firsst_namme=Caarmen;Asia地區(qū)有有什么部門select d.namme f
21、room s_ddept dd joinn s_reegion r on d.reggion_iid=r.iid andd r.naame=AAsia;Carmen在在哪個地區(qū)工工作select e.firrst_naame, from s_empp e jooin s_dept d on e.deppt_id=d.id join s_reggion rr on dd.regiion_idd = r.id annd e.ffirst_name=Carmmen ;Asia地區(qū)有有哪些員工select e.firrst_naame frrom s_emp ee joinn s_deep
22、t d on e.dept_id=d.id jooin s_regioon r oon r.iid=d.rregionn_id aand =Asiaa;列出員工名字,工工資,工資級級別select e.enaame,e.sal,ss.gradde froom empp e jooin saalgradde s oon e.ssal beetweenn s.loosal aand s.hisall; 哪些員工的級別別是三級和五五級select e.enaame,e.sal,ss.gradde froom empp e jooin saalgradde s oon e.ssal bee
23、tweenn s.loosal aand s.hisall and s.graade inn (3,55);select firstt_namee,id,mmanageer_id from s_empp; 列出員工名字和和領(lǐng)導(dǎo)名字的的對應(yīng)關(guān)系(一一張表的關(guān)系系,給表起別別名)select m.firrst_naame maanagerr,e.fiirst_nname eemployyee frrom s_emp ee joinn s_emmp m oon e.mmanageer_id=m.id;哪些人是領(lǐng)導(dǎo)(在在上題的基礎(chǔ)礎(chǔ)上,加個ddistinnct)select distiinct mm.
24、firsst_namme mannager from s_empp e jooin s_emp mm on ee.manaager_iid=m.iid;找Carmann,怎么找回回來?用下面知識點解解決3.外連接外連接(outter jooin):(內(nèi)內(nèi)連接把匹配配不上的記錄錄過濾的情況況下用外連接接)語法及原理:t1表和t2表表做外連接,連連接條件為from t11 leftt outeer joiin t2 on t11.c1 = t2.cc2,t1表必須做驅(qū)驅(qū)動表,t22表做匹配表表,記錄的匹匹配過程如下下:1、從t1表中中讀取第一條條記錄r1,若若它的c1值值為12、根據(jù)該值到到t2表
25、中查查找匹配的記記錄,即需要要遍歷t2表表,從t2表表中的第一條條記錄開始,若若該記錄(rr1)的c22列的值=11,我們就說說這兩條記錄錄能夠匹配上上,那么t11的r1和tt2的r1組組合起來,作作為結(jié)果集里里的一條記錄錄,否則不能能組合起來,即即被過濾掉。3、按照方法22依次將t22表中所有的的記錄檢測一一遍,只要匹匹配就放入結(jié)結(jié)果集中,若若掃描完后,tt1的r1記記錄在t2表表中找不到任任何匹配的記記錄,t2表表中模擬一條條null記記錄與t1表表中r1組合合起來,放入入結(jié)果集中4、從t1表中中讀取第二條條記錄,依次次重復(fù)步驟22和3,產(chǎn)生生最終的結(jié)果果集t1表和t2表表做外連接,連連接
26、條件為from t11 leftt outeer joiin t2 on t11.c1 = t2.cc2,t1表必須做驅(qū)驅(qū)動表,t22表做匹配表表,1、外連接的結(jié)結(jié)果集=內(nèi)連連接的結(jié)果集集+t1表中中匹配不上的的記錄和一條條null記記錄的組合2、外連接的核核心可以將匹匹配不上的記記錄找回來,即即一個都不能能少t1表和t2表表做外連接,連連接條件為from t11 righht outter jooin t22 on tt1.c1 = t2.c2,t2表必須做驅(qū)驅(qū)動表,t11表做匹配表表,1、外連接的結(jié)結(jié)果集=內(nèi)連連接的結(jié)果集集+t2表中中匹配不上的的記錄和一條條null記記錄的組合t1表和t
27、2表表做外連接,連連接條件為from t11 fulll outeer joiin t2 on t11.c1 = t2.cc2,t2表必須做驅(qū)驅(qū)動表,t11表做匹配表表,外連接的結(jié)果集集=內(nèi)連接的的結(jié)果集+tt2表中匹配配不上的記錄錄和一條nuull記錄的的組合+t11表中匹配不不上的記錄和和一條nulll記錄的組組合select distiinct mm.firsst_namme mannager from s_empp e leeft jooin s_emp mm on ee.manaager_iid=m.iid wheere m.managger_idd is nnull;select
28、distiinct nnvl(m.firstt_namee,BOSSS) mmanageer froom s_eemp e left join s_empp m onn e.maanagerr_id=mm.id; 外連接在什么情情況下用:select distiinct ddeptnoo fromm emp;dept表(什么東西里沒沒有什么,什什么東西里不不包含什么,什什么東西不是是東西等之類類的否定的語語句,用外連連接)哪個部門沒有員員工(在表ddept,eemp里操作作)一條記錄錄(15114+1)select e.enaame,e.deptnno,d.ddeptnoo,d.dnnamef
29、rom emmp e rright join dept d on e.deeptno = d.ddeptnoowhere ee.empnno is null;where在外外連接之后執(zhí)執(zhí)行,在內(nèi)連連接之前執(zhí)行行and先過濾再再連接where先連連接再過濾注意:內(nèi)連接中中的and是是先連接再過過濾結(jié)論:外連接+is nuull用來解解決否定問題題,不是,不不包含,沒有有。哪些人是員工(哪些人不是是領(lǐng)導(dǎo))?117條記錄(44124+17)select m.firrst_naame frrom s_emp ee righht joiin s_eemp m on e.managger_idd=m.id
30、d wherre e.iid is null;哪個部門沒有ssmithselect d.dnaamefrom emmp e rright join dept don e.deeptno=d.depptnoand e.eename = SMMITHwhere ee.empnno is null;Day03count統(tǒng)計計所有非空值值select dept_id frrom s_emp wwhere dept_id =331;select countt(*) ffrom ss_emp wheree deptt_id =31;select countt(firsst_namme) frrom s_e
31、mp ;select countt(firsst_namme) frrom s_emp wwhere firstt_namee = CCarmenn;select countt(disttinct dept_id) ffrom ss_emp;有多少個不同職職位select countt(disttinct titlee) froom s_eemp;2.groupp by 列列名(,列名名,列名)select 列名,組函函數(shù)from 表where condiitiongroup bby grooup_byy_exprressioonHavingg gruoou_connditioonorder
32、by coolumnwhere先過過濾,再grroup bby ,后sselectt根據(jù)groupp by 子子句指定的表表達(dá)式,將要要處理的數(shù)據(jù)據(jù)(若有)各個職位的平均均工資?select titlee,avg(salarry) frrom s_emp ggroup by tiitle;每個提成有多少少人?select commiissionn_pct,countt(commmissioon_pctt) froom s_eemp grroup bby commmissiion_pcct;分組時,會把NNULL值都都分加一組;select commiissionn_pct,countt(*)
33、ffrom ss_emp groupp by ccommisssion_pct;42號部門的平平均工資列出平均工資select roundd(avg(salarry) ffrom ss_emp wheree deptt_id = 42;列出平均工資與與 部門號select dept_id,roound(aavg(saalary) froom s_eemp whhere ddept_iid = 442;出錯select dept_id,roound(aavg(saalary) froom s_eemp whhere ddept_iid = 442 grooup byy deptt_id;正正確結(jié)
34、論:若有g(shù)roupp by 子子句,sellect后面面可跟grooup byy后面跟的表表達(dá)式以及組組函數(shù),其它它會報錯如果沒有g(shù)rooup byy 子句,sselectt后面有一個個組函數(shù),其其它都必須是是組函數(shù)。各個工資級別有有多少人select s.graade, ccount(*) frrom emmp e jjoin ssalgraade s on e.sal bbetweeen s.llosal and ss.hisaal grooup byy s.grrade; select s.graade, ccount(*) frrom emmp e rright join salgrr
35、ade ss on ee.sal betweeen s.losall and s.hissal grroup bby s.ggrade; 各個部分的平均均工資,列出出部門名稱,地地區(qū)名稱,平平均工資select d.namme,r.nname,aavg(e.salarry) frrom s_emp ee joinn s_deept d on e.dept_id = d.id join s_reggion rr on dd.regiion_idd=r.idd grouup by d.namme,r.nname;或者select max(e),maxx(r.naame),aavg(e
36、.salarry) frrom s_emp ee joinn s_deept d on e.dept_id = d.id join s_reggion rr on dd.regiion_idd=r.idd grouup by e.deppt_id;Asia地區(qū)各各個部門的平平均工資select max(e),maxx(r.naame),aavg(e.salarry) frrom s_emp ee joinn s_deept d on e.dept_id = d.id join s_reggion rr on dd.regiion_idd=r.idd and r.namme=Ass
37、ia ggroup by e.dept_id;各個部門不同職職位的平均工工資select dept_id,tiitle,ccount(*),avvg(sallary) from s_empp grouup by dept_id,tiitle;總結(jié):grouup by 后可以跟多多個列。select * froom deppt ordder byy dnamme,depptno ddesc;HAVING子子句的sellect語句句的執(zhí)行過程程行被分組將HAVINGG子句的條件件應(yīng)用 到每每個分組上只有符合HAVVING條件件的組被保留留,再應(yīng)用SSELECTT后面的組函函數(shù)對每組的的數(shù)據(jù)進(jìn)行處處
38、理各個部門的平均均工資15500;select dept_id,avvg(sallary) from s_empp grouup by dept_id haaving avg(ssalaryy)15000;除了32,422部門,其它它各個部門的的平均工資select dept_id,avvg(sallary) from s_empp grouup by dept_id haaving dept_id noot in (32,442);先分分組再過濾select dept_id,avvg(sallary) from s_empp wherre deppt_id not iin (322,42)
39、groupp by ddept_iid ;先過過濾再分組(效效率高)總結(jié):where子句句和haviing子句的的區(qū)別:where子句句 過濾的是是行(記錄),后后跟單行函數(shù)數(shù)having子子句 過濾濾的是分組以以后的聚合結(jié)結(jié)果,只能包包含grouup by后后面的表達(dá)式式和組函數(shù)where執(zhí)行行 在前 ,hhavingg執(zhí)行在后where和hhavingg子句都不允允許用列別名名3.子查詢子查詢就是在一一條SQL語語句加入SEELECT語語句語法:SELECT selecct_lisstFORM taableWHERE eexpr ooperattor(SEELECT selecct_lis
40、st FRROM ttable)先執(zhí)行子查詢,子子查詢的返回回結(jié)果作為主主查詢的條件件,再執(zhí)行主主查詢 子查詢只執(zhí)行一一次若子查詢的返回回結(jié)果為多個個值,ORAACLE會去去掉重復(fù)值之之后,再將結(jié)結(jié)果返回給主主查詢誰的工資是最低低的?select firstt_namee,salaary frrom s_emp wwhere salarry in (seleect miin(sallary) from s_empp);哪個部門的平均均工資比322部門的平均均工資高?select dept_id,avvg(sallary) from s_empp grouup by dept_id haavin
41、g avg(ssalaryy) (selecct avgg(salaary) ffrom ss_emp wheree deptt_id = 32);哪個部門的平均均工資比322部門的平均均工資高,并并列出部門名名字與地區(qū)名名字?select max(e),maxx(r.naame),ee.deptt_id,aavg(saalary) fromm s_emmp e jjoin ss_deptt d onn e.deept_idd=d.idd joinn s_reegion r on d.reggion_iid=r.iid grooup byy deptt_id hhavingg a
42、vg(salarry) (seleect avvg(sallary) from s_empp wherre deppt_id = 32);誰跟Smithh做一樣的職職位?select firstt_namee fromm s_emmp wheere tiitle iin (seelect titlee fromm s_emmp wheere laast_naame =Smithh) annd lasst_namme Smitth; 誰是領(lǐng)導(dǎo)?select firstt_namee fromm s_emmp wheere idd in (selecct mannager_id frrom s_e
43、mp );哪些人是員工?子查詢實現(xiàn):sselectt firsst_namme froom s_eemp whhere iid nott in (selecct mannager_id frrom s_emp wwhere managger_idd is nnot nuull);外連接實現(xiàn):sselectt e.fiirst_nname ffrom ss_emp m rigght jooin s_emp ee on ee.id=mm.manaager_iid wheere m.managger_idd is nnull; 誰跟Smithh的職位不一一樣?select last_name fro
44、m s_empp wherre tittle noot in (seleect tiitle ffrom ss_emp wheree lastt_namee = SSmith);select e1.laast_naame,e11.titlle froom s_eemp e11 leftt joinn s_emmp e2 on e11.titlle=e2.titlee and e2.laast_naame = Smitth whhere ee2.lasst_namme is null;4.1多列子查查詢哪個員工的工資資跟本部門平平均工資相等等?select firstt_namee,salaar
45、y frrom s_emp wwhere (deptt_id,ssalaryy) in (seleect deept_idd,avg(salarry) frrom s_emp ggroup by deept_idd);4.關(guān)聯(lián)子查詢詢語法形式SELECT colummn1,coolumn22,.FORM taable1 outerrWHERE ccolumnn1 opeeratorr(SEELECT scoluumn1,ccolumnn2,. FRROM ttabless WHHERE eexpr1 = outter.exxpr2);哪個員工的工資資大于本部門門平均工資?select firs
46、tt_namee fromm s_emmp o wwhere salarry (selecct avgg(salaary) ffrom ss_emp i wheere deept_idd = o.dept_id );關(guān)聯(lián)子查詢的執(zhí)執(zhí)行過程關(guān)聯(lián)子查詢采用用的是循環(huán)(lloop)的的方式,執(zhí)行行步驟如下:1 外部查詢得得到一條記錄錄(查詢先從從outerr表中讀取數(shù)數(shù)據(jù))并將其其傳入到內(nèi)部部查詢。 2 內(nèi)部查詢基基于傳入的值值執(zhí)行。 3 內(nèi)部查詢從從其結(jié)果中把把值傳回到外外部查詢,外外部查詢使用用這些值來完完成其處理,若若符合條件,oouter表表中得到的那那條記錄就放放入結(jié)果集中中,否則放棄棄,
47、該記錄不不符合條件。4 重復(fù)執(zhí)行步步驟1-3, 直到把ouuter表中中的所有記錄錄判斷一遍。5.EXISTTS運算符1.EXISTTS運算符SELECT colummn1,coolumn22,.FORM taable1 outerrWHERE EEXISTSS(SEELECT X FRROM ttabless WHHERE eexpr1 = outter.exxpr2);EXISTS采采用的是循環(huán)環(huán)(loopp)的方式,判斷outter表中是是否存在記錄錄,只要在IINNER表表中找到一條條匹配即可。1 外部查詢得得到一條記錄錄(查詢先從從outerr表中讀取數(shù)數(shù)據(jù))并將其其傳入到內(nèi)部部查詢
48、的表。 2 在INNEER表中的記記錄依次掃描描,若根據(jù)條條件存在一條條記錄在與oouter表表中的記錄匹匹配,立即停停止掃描,返返回truee,將outter表中得得到的那條記記錄就放入結(jié)結(jié)果集中否則則放棄,該記記錄不符合條條件。3 重復(fù)執(zhí)行步步驟1-2, 直到把ouuter表中中的所有記錄錄判斷一遍。誰跟Smithh的職位不一一樣?select last_namefrom s_emp oowhere eexistss (sellect 11 fromm s_emmp i wheere i.titlee = o.titlee andd lastt_namee = SSmith)and las
49、st_namme Smitth; 2.NOT EEXISTSS運算符(可可以用來代替替外連接查詢詢的現(xiàn)實)也是符合條件后后退出掃描,過過濾掉外表中中與內(nèi)表做對對比的記錄。哪個部門沒有員員工?not exiists現(xiàn)實實:seleect idd,namee fromm s_deept ouuter wwhere not eexistss(seleect xx froom s_eemp whhere ddept_iid = oouter.id);外連接現(xiàn)實:select d.dnaamefrom emmp e rright join dept don e.deeptno=d.depptnowher
50、e ee.empnno is null;not in現(xiàn)現(xiàn)實:哪些人是員工?select firstt_namee from s_emp ooutwhere nnot exxists(seleect XX froom s_eemp i wheree out.id = i.mannager_id);in和exissts的比較較EXISTS是是用循環(huán)(lloop)的的方式,由oouter表表的記錄數(shù)決決定循環(huán)的次次數(shù),對于eexistss影響最大,所所以,外表的的記錄數(shù)要少少 IN先執(zhí)行子查查詢,子查詢詢的返回結(jié)果果去重之后,再再執(zhí)行主查詢詢,所以,子子查詢的返回回結(jié)果越少,越越適合用該方方式Day
51、041.1系統(tǒng)開開發(fā)周期基于數(shù)據(jù)庫的開開發(fā)是一個自頂向下下的系統(tǒng)開發(fā)發(fā)方法將業(yè)務(wù)1.2系統(tǒng)開開發(fā)的五個階階段:需求分析:客戶戶需要的系統(tǒng)統(tǒng)模型 設(shè)計:ER圖表表模型數(shù)數(shù)據(jù)庫的表E(entitty):實體體R(relattionshhip):關(guān)關(guān)系開發(fā)測試:編程程功能、性性能測試實施、上線:生產(chǎn)系統(tǒng)1.3實體關(guān)關(guān)系模型的概概念實體:有共同屬屬性的一類對對象的集合。例例如:客戶、銷銷售代表、訂訂單屬性(attrributee):通過屬屬性描述實體體、區(qū)分實體體。例如:名名字、電話、身身份證號關(guān)系(relaationsship):描述實體和和實體的關(guān)系系。例如:客客戶訂貨通過過客戶和訂單單的關(guān)系表達(dá)
52、達(dá)。1.4實體關(guān)關(guān)系模型實體:圓角方框表示一一個實體名,實實體名唯一,大大寫,同義詞詞用括號括起起來屬性:一個屬性名,小小寫,“”為強制屬屬性,必須有有值,即NOOT NULLL“o”(opttion)為為可選屬性,即即可以為NUULL表示唯標(biāo)標(biāo)識(唯一標(biāo)標(biāo)識Uniqque iddentiffier:UUID),即即PRIMAARY KEEY1.5實體關(guān)關(guān)系語法實體和實體的關(guān)關(guān)系從實例之之間的數(shù)量關(guān)關(guān)系的角度可可分為一對一一、一對多,多多對多;實體和實體之間間的關(guān)系從緊緊密程度上分分為必須和可可以例子:每個訂單必須而而且只能屬于于一個客戶一個客戶可以有有一張或多張張訂單1.6關(guān)系類型型用唯一標(biāo)
53、識來表表達(dá)一對一:這種類類型較少。例子:法律上夫夫妻關(guān)系(一一夫一妻制)一對多:這種類類型很普遍。例例子:學(xué)生和和班級、員工工和部門多對多:這種類類型較多。例子:學(xué)生和課課程。(一學(xué)學(xué)生可以選多多個課程,一一個課程可以以被多個學(xué)生生選)1.7完整性約約束保證數(shù)據(jù)的一致致性通過數(shù)據(jù)庫的特特性或應(yīng)用程程序完成數(shù)據(jù)庫約束1.8主鍵(PPRIMARRY KEYY)主鍵值要求唯一一且非空 PKUKK+NN(NNOT NUULL)聯(lián)合主鍵:多列列聯(lián)合唯一,任任意一列可以以重復(fù)。FK:NOT NULL ,可重復(fù)UK:唯一,可可NULLPK:唯一,NNOT NUULL1.9外鍵(FFK)1.10數(shù)據(jù)庫庫設(shè)計表
54、和列分別對應(yīng)應(yīng)實體和屬性性(考慮用什什么類型的表表(堆表(hhecp):存放無序)定義命名規(guī)范還需要考慮:設(shè)設(shè)計索引,創(chuàng)創(chuàng)建視圖,數(shù)數(shù)據(jù)存儲規(guī)劃劃,確認(rèn)完整整性約束第一步:將實體體映射成表第二步:將屬性性映射成列第三步:將唯一一標(biāo)識映射 成主鍵第四步:關(guān)系映映射成外鍵一對多關(guān)系:一一的那邊定義義成主鍵(PPK)或唯一一鍵(UK)多的那邊定成外外鍵(FK)一對一關(guān)系,在在外鍵(FKK)列上增加加唯一約束(UUK)若一對一關(guān)系在在兩頭都是可可選的,任意意一邊定義成成外鍵(PKK)若一對一關(guān)系中中一邊是強制制的,將其定定義成外鍵(PPK)對于強制關(guān)系,在在外鍵上定義義非空約束(NNN)多對多關(guān)系:另
55、建一個表,分分別把別兩張張表的PK列列放到第三張張表中,并在在第三張表中中設(shè)置聯(lián)合主主鍵;規(guī)范化:三個范范式最小化數(shù)據(jù)冗余余最少完整性問題題標(biāo)識丟失的實體體、關(guān)系、表表第一范式:表中中不會有重復(fù)復(fù)記錄,即有有主屬性;每每個屬性值不不可再分第二范式:每個個非主屬性必必須完全依賴賴于主屬性;完全依賴:比如有一張表:sid ccid grrade ccname 學(xué)時 學(xué)分分 (聯(lián)合主主鍵sid cid)grade完全全依賴,cnname部分分依賴,只依依賴于cidd不符合第二范式式時,會造成成數(shù)據(jù)冗余,比比如有1000個學(xué)生選同同一門課,就就會有1000個相同的ccname第二范式主要發(fā)發(fā)生于聯(lián)合主
56、主鍵上!第三范式:每個個非主屬性不不能依賴于另另一個非主屬屬性比如有一張表:sid nname ccid cnname 學(xué)學(xué)時(聯(lián)合主主鍵sid cid)cname依賴賴于cid , 學(xué)時依依賴于cidd把一對多關(guān)系合合表就會不符符合第三范式式。經(jīng)過嚴(yán)格的ER圖設(shè)計,一一般都會符合合第三范式,第第三范式?jīng)Q定定了表連接。去規(guī)范化,以適適度的冗余來來合表,以提提高查詢的效效率。命名規(guī)則首字符必須是字字母,名字為1300個字符長,只能包含AZZ,az,00-9,同一個命名空間間里的對象不不能重名不能用ORACCLE保留字字create創(chuàng)創(chuàng)表語法create tablee 表名(列1 數(shù)數(shù)據(jù)類型 ,列
57、2 數(shù)據(jù)據(jù)類型 ,列3 數(shù)數(shù)據(jù)類型 ,.列n數(shù)據(jù)據(jù)類型 );create tablee yyjttest(cc1 varrchar22(10),c2 chhar(100);drop刪除表表語法drop taable 表表名;insert語語句的基本語語法insert into 表名(當(dāng)當(dāng)給指定列插插入值時,用用上引括號) vaalues (填上插入入的值);插入值中字符用用單引號括上。給全字段插入值值insert into yyjteest vaalues (abcc,bccd);給指定字段插入入值,沒有插插入的字段系系統(tǒng)用NULLL補上,這這是隱式插入入。給指定字段插入入值,不想給給指定字段
58、插插入值,自己己用NULLL補上,這是是顯式插入。insert into yyjteest(c11,c2) valuees (cc,bccd);2.數(shù)據(jù)類型varcharr2 變長字字符類型,一一定要帶上寬寬度char定長長字符類型,可可以不帶寬度度,默認(rèn)寬度度為1,只能能存一個字符符number數(shù)值類型number(pp,s)數(shù)值類型varcharr2和chaar的區(qū)別.select c1|d,leength(c1), c2|d,leength(c2) ffrom yyyjtesst;select lengtth(c1), lenngth(cc2) frrom yyyjtestt;1.var
59、chhr2按字符符串的實際長長度存,chhar按定義義長度存2.列的取值是是定長,定義義成charr類型,列的的取值長度不不固定,定義義成varcchar2。select * froom tesst wheere c11 = aabc;找找到記錄select * froom tesst wheere c11 = aabc ;找不到記錄錄select * froom tesst wheere c22 = aabc;找找到記錄select * froom tesst wheere c22 = aabc ;找到記錄3.字符串的比比較中,vaarcharr2按實際字字符串比,對對空格是敏感感的,cha
60、ar會將短字字符串補起后后,再與字符符串比,對空空格不敏感。number類類型create tablee yeyjjnumbeer(c1 nummber,c2 nummber(66),保留六位整整數(shù)。最大值值為9999999c3 nummber(44,2),保留到小數(shù)數(shù)點后兩位,最最大保留整數(shù)數(shù)數(shù)字位數(shù)為為(42)2位數(shù)字,即最大值為為99.999;c4 nummber(33,-3),保留到千位位數(shù)(沒有小小數(shù)部分)最最大保留整數(shù)數(shù)數(shù)字位數(shù)為為(3(3))66位數(shù)字,即即最大值為99990000;c5 nummber(22,4)保留到小數(shù)數(shù)點后四位(沒沒有整數(shù)部分分0),最大大值為0.0009
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年礦物制品及材料批發(fā)服務(wù)合作協(xié)議書
- 建設(shè)工程項目聯(lián)合施工協(xié)議書范本
- 二零二五年度藝術(shù)類合作協(xié)議書:藝術(shù)品投資與收藏合作框架
- 二零二五年度自費留學(xué)國際志愿者項目合作合同
- 2025年度醫(yī)療事故調(diào)解與糾紛預(yù)防合作協(xié)議
- 醫(yī)院合同制人員2025年度工資調(diào)整與職業(yè)成長激勵合同
- 二零二五年度足浴店員工工作績效與獎勵合同
- 人教版地理八年級上冊《第二節(jié) 氣候》聽課評課記錄1
- 二零二五年度酒店住宿消費者返利協(xié)議集
- 2025年度消費者權(quán)益保護(hù)糾紛合同范本
- 《醫(yī)療機構(gòu)工作人員廉潔從業(yè)九項準(zhǔn)則》專題解讀
- 愛車講堂 課件
- 成立商會的可行性報告5則范文
- 湖南財政經(jīng)濟學(xué)院《常微分方程》2023-2024學(xué)年第一學(xué)期期末試卷
- 游戲賬號借用合同模板
- 2022年中考英語語法-專題練習(xí)-名詞(含答案)
- 2011年公務(wù)員國考《申論》真題卷及答案(地市級)
- 《籃球體前變向運球技術(shù)》教案(共三篇)
- 多元化評價體系構(gòu)建
- 部編版六年級下冊道德與法治全冊教案教學(xué)設(shè)計
- 商業(yè)模式的設(shè)計與創(chuàng)新課件
評論
0/150
提交評論