我筆記-數(shù)據(jù)庫數(shù)據(jù)表三種關(guān)系一對(duì)一一對(duì)多多對(duì)多_第1頁
我筆記-數(shù)據(jù)庫數(shù)據(jù)表三種關(guān)系一對(duì)一一對(duì)多多對(duì)多_第2頁
我筆記-數(shù)據(jù)庫數(shù)據(jù)表三種關(guān)系一對(duì)一一對(duì)多多對(duì)多_第3頁
我筆記-數(shù)據(jù)庫數(shù)據(jù)表三種關(guān)系一對(duì)一一對(duì)多多對(duì)多_第4頁
我筆記-數(shù)據(jù)庫數(shù)據(jù)表三種關(guān)系一對(duì)一一對(duì)多多對(duì)多_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余29頁可下載查看

付費(fèi)下載

下載本文檔

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

文檔簡介

數(shù)據(jù)SQL(StructuredQueryLanguage)是結(jié)構(gòu)化查詢語言的縮數(shù)據(jù)定義語言(DDL):DataDefinition TABLE修改表 TABLE刪除表數(shù)據(jù)語言(DML):DataManipulationINSERT語句用于將數(shù)據(jù)到數(shù)據(jù)庫DELETE事務(wù)控制語言(TCL):TransactionControl提交(COMMIT)回滾(ROLLBACK):ROLLBACKDML操作后(也就是上面說的增加、修改、刪除等動(dòng)作),可以使用COMMIT語句來確認(rèn)這種改變,或者使用ROLLBACK SAVEPOINT語句用來設(shè)置保存點(diǎn)使當(dāng)前的事務(wù)可以數(shù)據(jù)查詢語言(DQL):DataQuery數(shù)據(jù)控制語言(DCL): ontrol回(REVOKE)語句,CREATEUSER語句,其中GRANT用于給用戶或角色授予權(quán)REVOKE用于收回用戶或角色已有的權(quán)限。DCL語句也不需要事務(wù)的參DESCDROPTABLE表名(刪除表 表名(刪除表中的所有數(shù)據(jù)數(shù)據(jù)庫中所有字段的默認(rèn)值都是NULL,當(dāng)數(shù)據(jù)時(shí),某個(gè)字段沒有給值的時(shí)候,則會(huì)將NULL值作為該字段的值,可以通過DEFAULT關(guān)鍵字為指定的字段設(shè)SQL語句不區(qū)分 此字段不能為空(不能與DEFAULT連用RENAMEold_nameTO1 )2ALTERTABLEmyemp )3 向表中數(shù)INSERTINTOMYEMP_LYL(若不指定字段,則是全列——————————————————————————————————TO_DATE,當(dāng)然也可以使用字符串,但是格式必須遵INSERTINTOMYEMP_LYL——————————————————————————————————UPDATESETSALARY=6000,DEPTNO=30WHEREID=1SELECT*FROM——————————————————————————————————DELETEDELETEFROMMYEMPWHEREID=1UPDATEDELETEWHERE條件Charvarchar2Char2000Varchar4000Delete、drop與truncateDelete刪除表數(shù)據(jù),逐條刪除,可以回滾Drop刪除表結(jié)構(gòu),不能回滾(notTruncate刪除表中所有數(shù)據(jù),速度快,不能回滾(not 字符串的處理CHAR存放定長字符,如果數(shù)據(jù)存不滿定長長度,則補(bǔ)齊空格;VARCHAR2存放變長字符,實(shí)際數(shù)據(jù)有多少長度則占用多少。如保存字符串’OWORLD,共10個(gè)英文字母:CHAR(100):1090100VARCHAR2(100):1010字符串在數(shù)據(jù)庫中的默認(rèn)單位是字節(jié),也可顯式指定為字符。如CHAR(10)CHAR(10如果指定單位為字符:CHAR(10CHAR),20VARCHAR2(10),等價(jià)于VARCHAR2(10指定單位為字符:VARCHAR2(10CHAR),202-4ZHS16GBK:2UTF-82-4Char1,但是varcharLong:變長字節(jié),可以2GB,但是有限制Clob:變長字節(jié),可以4GB,建議使用 STR2):連接str1和str2兩個(gè)字符串“||:連接字符串,相當(dāng)于java中的“+”LENGTH(str):返回字符串長度,str是char(定長)類型,還包括后補(bǔ)的空格UPPER(STR)str的所有字母都大寫 A1)A2只能是單一字符)SELECTTRIM('E'FROM'EEELESTEAEE')FROMDUALLTRIM(C1[, C2])C1C1中所有包含C2的字符,直到見到非C2中的字符為止(通常在工作中C2只是單一字符)若沒有寫C2,則默認(rèn)刪除空格FROMDUALRTRIM:同LTRIMLPAD(C1,NUM,C2):C1需要占?jí)騨umC2在左邊開始補(bǔ)足(當(dāng)C2為空格時(shí),常稱為右對(duì)齊C1numC1的最后字母被刪除,C2只能為單一字符SELECTLPAD(ENAME,10)FROMEMP_LYL(此處C2為空格 N])char中從m位開始取如果m=0,則從首字符開始,如果m如果沒有設(shè)置nnchar的長度,則取到字符串末尾為止。字符串的首位計(jì)數(shù)從1開始。SELECTSUBSTR('DoctorWhotravelsinTARDIS',8,7)FROMDUAL結(jié)果:Who M]])char2char1(char2為全匹配,注意大小寫)——從n的位置開始搜索,沒有指定n1——m用于指定子串的第m——如果在char1中沒有找到子串char2NUMBER(p,s)的Number1—38p為*38 ——參數(shù)中的n——m——m取正數(shù)則四舍五入到小數(shù)點(diǎn)后第m——m0——m取負(fù)數(shù),則四舍五入到小數(shù)點(diǎn)前m——m ——n和m的定義和 M])相同,只是不四舍五 N):返回mn后的余數(shù)(java的——n0則返回CEILFLOOR:ceil(n)n的最小整數(shù)值,floor(n)是取小于或等于n的最大整數(shù)值比如數(shù)字n=4.5ceil5,floorDATE的處理及函TIMESTAMPdate的區(qū)別是不僅可以保存日期和時(shí)間,還能保存小ns(納秒)用7個(gè)字節(jié),與date功能相同,精度為用11個(gè)字節(jié),則精度大于0(第8—11字節(jié):納秒,采用4個(gè)字節(jié),; NLSARAMS]])日期格式字符串中凡不是英文字符與符號(hào)的其他字符都需要使引號(hào)括上SELECTTO_DATE('20080808,'YYYY"年"MM"月"DD"日HH24:MI:SS')FROMDUAL NLSPARAMS]])datefmt的格式輸出字符串。Nlsparams用于指定日期語言。需要注意的是,fmt格式字符串中出現(xiàn)漢字或其他非符號(hào)字符時(shí)需要引號(hào)。SELECT ‘YYYY”年”MM”月”DD”日FROMADD_MONTHS(date,i)datei——參數(shù)i——如果i——如果iiMONTHS_BETWEE(date1date2多少個(gè)月,實(shí)際運(yùn)算是date1-date2,如果date2時(shí)間比date1得到負(fù)值。NEXT_D(date,char:來決定的(離給定日期最近的還沒有過的那個(gè)正在過的也已經(jīng)算過了)這種英文的。為避免麻煩,可以直接用數(shù)字“1—7”表示“周日—周六。NEXT_DAY不是明天! expr2[,expr3]]……)返回最小的 expr2[,expr3]]……)返回最大的參數(shù)類型必須一致。參數(shù)可以是date,number,char等。EXTRACT(DATEFROMDATETIME)datetimedate指定的數(shù)據(jù),比如提取年、月、日(只能取年月日,取時(shí)分秒時(shí)會(huì)報(bào)錯(cuò)空值的處理及函賦值為null:顯性賦值與隱性賦值CREATETABLESTUDENT_LYL(IDNUMBER(4),NAMECHAR(20),GENDERCHAR(1));INSERTINTOSTUDENT_LYL(1001,'(1002,'DESCSELECT*FROM更新為null:Updateemp(sethiredatenullwhereidis判斷是否為nullis,不要用“=”(ISNULL或ISNOTNULL)任何數(shù)字與null進(jìn)行運(yùn)算,結(jié)果仍為null!NULL與字符串拼接,等于什么都沒做!NVL(EXPR1EXPR2)null轉(zhuǎn)變?yōu)榉莕ull——如果expr1null,則直接返回——如果expr1null,則返回expr2,expr2——expr1和expr2NVL2(EXPR1,EXPR2,EXPR3)nvl函數(shù)功能類似,都是將null轉(zhuǎn)變?yōu)閷?shí)際值Nvl2用來判斷expr1null,如果不是null,返回expr2null,返回?cái)?shù)據(jù)庫基FROM ……>from——Select——from指定要從哪個(gè)表中查詢當(dāng)我們?cè)趕elect——使用語法是列的別名跟在列名后,中間可以加或不加一個(gè)“ASSELECTENAME,SAL+NVL(COMM,0ASSAL,——AS+STRENAME,SAL+NVL(COMM,0)SAL,——用空格隔開ENAME,SAL+NVL(COMM,0)"SAL"——引號(hào)引起來(如果str中有空格,必須用FROM——在select語句中,可以在where——如果和數(shù)字比較,可以使用單引號(hào)引起,也可以不用(where(wherejob‘sale使用“ISNOTNULLISANDORSQLand邏輯SQL當(dāng)一起使用時(shí),AND優(yōu)先級(jí)高于OR的優(yōu)先級(jí),所以必要時(shí)要使用括號(hào) SAL>1000ANDJOB=’CLERK’ SAL>1000ORJOB=‘CLERK‘LIKE來實(shí)現(xiàn)——LIKE%0_SELECTENAMEFROMWHEREENAMELIKE(查詢第二個(gè)字符是A的員工名字INNOT——比較操作符IN(list)——ListTRUE,OR就替代不了IN使用了)——NOTIN(list)取出不符合此列表中的數(shù)據(jù)記錄 JOBIN(‘MANAGER’,‘CLERK‘——查詢職位是MANAGER或者CLERK DEPTNONOTIN(10,1020 SALBETWEEN1500AND15003000之間的員工(15003000,并且小的寫在左邊,ISNULLISNOT是一個(gè)特殊的值,比較的時(shí)候不能使用“=ANY和——anyall不能單獨(dú)使用,需要配合單行比較操作符“<,>,<=,>=”一起使 ANY:大于最?。ù笥谄渲幸粋€(gè) ANY:小于最大(小于其中一個(gè) ALL:ALL:大于最大FROMEMP_LYLWHERESELECTENAME,SAL,JOBFROMEMP_LYLWHERESELECTENAME,SAL,JOBFROMEMP_LYLWHEREDISTINCTDISTINCT實(shí)現(xiàn)SELECTDISTINCTJOBFROMEMP_LYL——查詢公司共有多少職位(DISTINCTSELECT后面,可以將多列去重SELECTDISTINCTJOB,DEPTNOFROMEMP_LYLORDERBY升序ASC可以不寫,因?yàn)槟J(rèn)就是升序!——必須出現(xiàn)在select中的最后一個(gè)子句;SELECTENAME,SALFROMEMP_LYLORDERBYSALDESC查看工資情況(降序若排序的字段中含有NULL值,那么NULLSELECTename,deptno,salFROMempORDERBYdeptnoASC,salDESC;MIN( MAX(SAL), FROM——忽略Null值SELECTAVG(SAL)AVG_SAL,SUM(SAL)SUM_SALFROM統(tǒng)計(jì)非null——若有null,則忽略記錄數(shù)SELECTCOUNT(job)total_jobFROM聚合函數(shù)都是忽略nullSELECTCOUNT(COMM)FROMSELECTCOUNT(*)FROM分GROUPGroupby可以將當(dāng)前查詢的結(jié)果集按照groupby子句給定的字段的值相同的記FROMEMP_LYLGROUPBY當(dāng)selectgroupBYgroupbyGROUPBY分組原則是將結(jié)果集中,GROUPBY指定的這些字段的值的組合相同的記錄看做SELECTCOUNT(*),JOB,DEPTNOFROMEMP_LYLGROUPBYHAVINGHAVINGHAVINGGROUPBY分組的,目的是根據(jù)過濾條件取舍某些分組的記錄。HAVING必須跟在GROUPBY之后。FROMEMP_LYLGROUPBYDEPTNO2000SELECTMAX(SAL),MIN(SAL),DEPTNOFROMEMP_LYLGROUPBYDEPTNO2000SQL關(guān)聯(lián)查關(guān)聯(lián)查詢要添加連接條件,數(shù)據(jù)庫根據(jù)條件將滿足的記錄進(jìn)行連線,從而提取這些記錄中對(duì)應(yīng)查詢的字段值構(gòu)成結(jié)果集若不添加連接條件會(huì)產(chǎn)生積,SELECTENAME,DNAME不添加連接條件會(huì)產(chǎn)生SELECTENAME,DNAMEEMP中有14條記錄,DEPT中有4條記錄,產(chǎn)生積后會(huì)生成56(14*4)通常N張表關(guān)聯(lián)查詢需要有N-1語法:A1表JOIN A2表ON A1的字段=A2的字段FROMEMP_LYLE DEPT_LYLD join左側(cè)表作為驅(qū)動(dòng)表(主要顯示記錄的表joinnull作為值。joinjoin左右兩側(cè)表作為驅(qū)動(dòng)表,所有字段都顯示SELECTFROMEMP_LYLELEFT|RIGHT|FULLOUTERJOINDEPT_LYLDONE.DEPTNO=D.DEPTNOSELECTFROMEMP_LYLWJOINEMP_LYLLONW.MGR=L.EMPNO子查SQLSELECT子句中(SELECT或from中,SELECT中類似外連接的作用SELECT語句,也可以是其他類型的語句比如DML或SELECTENAME,SALFROMEMP_LYLWHERESAL>(SELECTSALFROMEMP_LYLWHERE查詢薪資大于BLAKE子查詢用于DDLCreatetable…..as….. FROMEMP_LYLELEFTOUTERJOINDEPT_LYLDONE.DEPTNO=D.DEPTNO將下面的表到一個(gè)新建的employee_LLLL子查詢用于DMLDELETEFROMWHEREDEPTNO=(SELECTFROMWHERE刪除與blake=20SELECTENAME,JOB,DEPTNOFROMEMP_LYLWHEREJOBIN(SELECTDISTINCTFROMEMP_LYLWHEREDEPTNO=20)AND20FROMEMP_LYLWHERESAL>ALL(SELECTFROMEMP_LYLWHEREDEPTNO=20)AND——用在where——只要exists后邊的子查詢至少返回一行數(shù)據(jù),則整個(gè)條件返回true——NOT EXISTSSELECTDEPTNO,DNAMEFROMDEPT_LYLDWHEREEXISTS(SELECT*WHERE分頁查詢SQL語句是不一樣的(類似方言)下面以oracle為例:1——這個(gè)ROWNUM會(huì)在查出一條數(shù)據(jù)時(shí)會(huì)自動(dòng),自動(dòng)增oracle——共三層,最里層是排序,中間層是,最外層是分SELECTFROM(SELECTROWNUMRN,T.*FROMEMP_LYLORDERBYSALDESC)T)WHERERN>=6AND分頁在oracle2:對(duì)數(shù)據(jù)(第二次子查詢根據(jù)頁數(shù)pagepagesize,start(DECODE函數(shù)javaSELECTSAL)BONUSFROM和decode函數(shù)功能相似的有caseif-else的操作。SELECTCASEJOBWHEN'MANAGER'THENSAL*1.2WHEN'YST'THENSAL*1.1WHEN'SALESMAN'THENSAL*1.05ELSESALENDBONUSFROM統(tǒng) yst與manager為一組,其他職位為另一組,各組共多少人SELECT'FROMGROUPBY'可以利用decode將字段值不一樣的記錄看做同一組,只需要FROMDEPT_LYLORDERBY排序函數(shù)然后生成一個(gè)組內(nèi)的 OVER ——表示根據(jù)col1分組,在分組根據(jù)col2排——此函數(shù)計(jì)算的值就表示每組排序后的順序,組內(nèi)連續(xù)且唯OVER(PARTITIONBYDEPTNOORDERBYSALDESC)RANKFROMSELECTENAME,SAL,DEPTNO,PARTITIONBYDEPTNOORDERBYSALDESC)RANKFROMEMP_LYLSELECTENAME,SAL,DEPTNO,PARTITIONBYDEPTNOORDERBYSALDESC)RANKFROMEMP_LYL集合操作(UNION2,全并集(UNIONALL):重復(fù)的部分放兩次——UNION——UNIONALL——UNION操作符對(duì)查詢結(jié)果排序,UNIONALL不排序差集SELECT——orderby [UNION|UNIONALL|INTERSECT| SELECTENAME,JOB,SALFROMEMP_LYLWHEREJOB='MANAGER'SELECTENAME,JOB,SALFROMWHERE高級(jí)分組函數(shù)結(jié)果后再使用UNIONALL并在一起,書寫起來要簡便的多。ROLLUPFROMSALES_TAB_LYLGROUPORDERBYGROUPBYCUBE(A,B,C)等同于共八中統(tǒng)計(jì)方式(2的元素個(gè)數(shù)次方)比rollup多了A,B,CGROU以通過參數(shù)傳入,所以相比ROLLUP,CUBE的內(nèi)定分組方式要靈活。FROMSALES_TAB_LYLGROUPGROUORDERBY視SQLSELECTEMPNO,ENAME,SAL,DEPTNOFROMEMP_LYLWHERESELECT*FROMSQLCREATEORREPLACEVIEWSELECTEMPNOID,ENAMENAME,SALSALARY,DEPTNOFROMEMP_LYLWHERESELECT語句,所以當(dāng)視圖時(shí),只能到所對(duì)應(yīng)的SELECT語句中涉及到的列,對(duì)基表中的其他列起到安全和的作用,限制數(shù)據(jù)根據(jù)視圖所對(duì)應(yīng)的子查詢種類分為幾種類型——SELECT語句是基于單表建立的,且不包含任何函數(shù)運(yùn)算、表達(dá)式或分組函——SELECTGROUPBY子句,叫做復(fù)雜視圖;——SELECT對(duì)視圖進(jìn)行DMLDML操作,就是對(duì)視圖數(shù)據(jù)來源的基礎(chǔ)表進(jìn)行的操作。并且只能對(duì)SELECT*FROMV_EMP_10_LYLSELECT*FROMEMP_LYLSETSALARY=6000WHEREID=1001WHEREID=1001通過對(duì)視圖操作的數(shù)據(jù)(如insert,update,若視圖不可見,此時(shí)基表中有數(shù)據(jù),但視圖中沒有數(shù)據(jù)(相當(dāng)于進(jìn)基表唯一不會(huì)污染基表的操作是delete,因?yàn)閐elete要么都么都WITHCHECKDML操作后對(duì)基表有數(shù)據(jù)污染的情DML操作的數(shù)據(jù)視圖必須對(duì)其可見,否則不允許操WITHCHECKOPTIONREADONLYDML操作。CREATEORREPLACEVIEWV_EMP_10_LYLSELECTEMPNOID,ENAMENAME,SALSALARY,DEPTNOFROMEMP_LYLWHEREWITHREAD——例一:在數(shù)據(jù)字典USER_OBJECTSSELECTobject_nameFROMuser_objectsWHEREobject_type='VIEW';例二:在數(shù)據(jù)字典USER_VIEWSSELECTtextFROMuser_viewsWHEREview_name='V_EMP_10';例三:在數(shù)據(jù)字典USER_UPDATABLE_COLUMNSSELECTcolumn_name,insertable,updatable,deletableFROMuser_updatable_columnsWHEREtable_name=復(fù)雜視圖復(fù)雜視圖不允許任何DML操作,只能查看視圖創(chuàng)建一個(gè)工資情況的視圖SELECTMAX(E.SAL)MAX_SAL,MIN(E.SAL)MIN_SAL,AVG(E.SAL)AVG_SAL,SUM(E.SAL)SUM_SAL,FROMEMP_LYLE,DEPT_LYLDWHEREE.DEPTNO=D.DEPTNOGROUPBYD.DEPTNO,D.DNAMESELECT*FROMSELECTFROMEMP_LYLE,V_EMP_DEPT_SALINFO_LYLVSELECTDROPVIEWSTARTWITH1INCREMENTBY新創(chuàng)建的序列至少要調(diào)用一次nextval后才可以使用currval。FROMDUALFROMDUALINSERTINTOSELECT*FROMDROPSEQUENCEONEMP_LYL(ENAME)enamelike據(jù)庫會(huì)自動(dòng)使用索引IDX_EMPLYL_ENAME提高查詢效率。ORDERBYjobsalary作為排序依據(jù),可以建立復(fù)合索CREATEINDEXidx_emp_job_salONemp(job,當(dāng)做下面的查詢時(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論