我的筆記1數(shù)據(jù)庫數(shù)據(jù)表三種關系一對一多多_第1頁
我的筆記1數(shù)據(jù)庫數(shù)據(jù)表三種關系一對一多多_第2頁
我的筆記1數(shù)據(jù)庫數(shù)據(jù)表三種關系一對一多多_第3頁
我的筆記1數(shù)據(jù)庫數(shù)據(jù)表三種關系一對一多多_第4頁
我的筆記1數(shù)據(jù)庫數(shù)據(jù)表三種關系一對一多多_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

溫馨提示

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

最新文檔

評論

0/150

提交評論