數(shù)據(jù)庫oracle筆記2.1、上次課程的主要知識點_第1頁
數(shù)據(jù)庫oracle筆記2.1、上次課程的主要知識點_第2頁
數(shù)據(jù)庫oracle筆記2.1、上次課程的主要知識點_第3頁
數(shù)據(jù)庫oracle筆記2.1、上次課程的主要知識點_第4頁
數(shù)據(jù)庫oracle筆記2.1、上次課程的主要知識點_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1、課程名稱:Oracle2、知識點2.1、上次課程的主要知識點1、 Oracle 中提供的三個主要用戶:超級管理員:sys/chang_on_install普通管理員:system/manager普通用戶:scott/tiger,此用戶在使用的時候需要先進(jìn)行第(1)頁2、SQLPLUSW 命令:設(shè)置行顯示長度:SET LINESIZE 長度設(shè)置頁顯示行數(shù):SET PAGESIZE 行數(shù)ed、/查詢語句:3、4、單行函數(shù): TO_CHAR()函數(shù)、日期函數(shù)、NVL()、DECODE()2.2、本次預(yù)計講解的知識點1、2、3、4、5、多表查詢,SQL:1999 語法對多表查詢的支持分組統(tǒng)計及統(tǒng)計

2、函數(shù)的使用子查詢,并結(jié)合多表查詢,分組統(tǒng)計做復(fù)雜查詢數(shù)據(jù)庫的更新操作事務(wù)處理及數(shù)據(jù)庫死鎖3、具體內(nèi)容3.1、多表查詢3.1.1、多表查詢的基本語法(重點)之前在查詢的時候查詢的都是一表查詢語法如下:的數(shù)據(jù),如果現(xiàn)在使用一張以上的表,則就稱為多表查詢,多范例:下面使用了多表查詢,同時查詢 emp 和 dept 表第(2)頁SELECT * FROM emp,dept ;SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FROM 表名稱 1 別名 1 , 表名稱 2 別名 2 ,WHERE 條件(s)ORDER BY 排序字段 ASC|DESC , 排序字段 A

3、CS | DESC ,SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FROM 表名稱 別名WHERE 條件(s)ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,以上的查詢使用了兩進(jìn)行同時查詢。但是,從查詢結(jié)果上可以發(fā)現(xiàn),返回的數(shù)據(jù)是 56 條,但是 emp 表一共才 14 條,dept 表一共才 4 條。范例:查詢 emp 表中的數(shù)范例:查詢 dept 表中的數(shù)56 條= emp 表的 14 條* dept 表的 4 條。在使用多表查詢的時候會產(chǎn)生積。如果表的數(shù)據(jù)越多,那么積就會越到。如果現(xiàn)在假,100005。所以多表

4、查詢在開發(fā)中基本上是不建議過多的使用。設(shè)有 5,每有 100000 條要想去掉積則必須使用字段進(jìn)行關(guān)聯(lián)的操作。第(3)頁SELECT COUNT(*) FROM dept ;SELECT COUNT(*) FROM emp ;在 emp 表中存在一個 deptno 的字段,在 dept 表中也存在 deptno 的字段,而且可以發(fā)現(xiàn) emp 表中的deptno 的取值范圍都在 dept 表的 deptno 規(guī)定的范圍之中。emp 中的 deptno = dept 中的 deptno,屬于關(guān)聯(lián)字段。在多表查詢中加入 WHERE 語句,就可以消除掉范例:修改之前的查詢操作積。第(4)頁SELECT

5、 * FROM emp,deptWHERE emp.deptno=dept.deptno ;此時,只有 14 行了,消除掉了積。但是此時又存在一個新的問題,如果現(xiàn)在表名稱過長的話?所以在使用的時候一般會為表起別名。如果要使用到多表查詢的時候,最好指定別名。范例:要求查詢出雇員的、雇員的、部門的、部門名稱及部門位置第(5)頁SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept dWHERE e.deptno=d.deptno ;SELECT * FROM emp e,dept dWHERE e.deptno=d.deptno

6、;范例:要求查詢出每個雇員的、工作、雇員的直接的在 emp 表中的 mgr 字段使用沒有使用過,其表示一個雇員的的。那么如果現(xiàn)在要想查,則肯定要將 emp 表與 emp 表自己進(jìn)行關(guān)聯(lián)。詢一個雇員的范例:要求進(jìn)一步擴(kuò)展之前的程序,將雇員所在的部門名稱同時列出 部門名稱在 dept 表中存在定義。第(6)頁SELECT e.ename,e.job,m.ename FROM emp e,emp mWHERE e mgr=m.empno ;思考:現(xiàn)在要求查詢出每個雇員的名及工資所在公司的等級。、工資、部門名稱,工資在公司的等級(salgrade),及其的姓先確定工資等級表的內(nèi)容(查詢 salgrad

7、e 表)分解:查詢出每個雇員的姓名、工資、部門名稱,工資在公司的等級(salgrade)第(7)頁SELECT e.ename,e.sal,d.dname,s.grade FROM emp e,dept d,salgrade sWHERE e.deptno=d.deptno AND e.sal BETN s.losal AND s hisal;SELECT * FROM salgrade ;SELECT e.ename,e.job,m.ename,d.dname FROM emp e,emp m,dept dWHERE e mgr=m.empno AND e.deptno=d.deptno ;

8、此時,雇員的工資等級已經(jīng)求出來了。分解:其的及工資所在公司的等級第(8)頁SELECT e.ename,e.sal,d.dname,s.grade,m.ename,m.sa.grade FROM emp e,dept d,salgrade s,emp m,salgrade msWHERE e.deptno=d.deptno ANDe.sal BETN s.losal AND s hisal AND e mgr=m.empno AND m.sal BETN ms.losal AND ms hisal;進(jìn)一步思考:現(xiàn)在要求按照以下的樣式顯示工資等級1:第五等工資2:第四等工資3:第三等工資4:第二

9、等工資5:第一等工資此時肯定只能使用 DECODE()函數(shù)第(9)頁SELECT e.ename,e.sal,d.dname,DECODE(s.grade,1,第五等工資,2,第四等工資,3,第三等工資,4,第二等工資,5,第一等工資),m.ename,m.sal,DECODE(ms.grade,1,第五等工資,2,第四等工資,3,第三等工資,4,第二等工資,5,第一等工資)FROM emp e,dept d,salgrade s,emp m,salgrade ms WHERE e.deptno=d.deptno ANDe.sal BETN s.losal AND s hisal AND e

10、mgr=m.empnoAND m.sal BETN ms.losal AND ms hisal;3.1.2、左、右連接(重點)現(xiàn)在在 dept 表中存在四條數(shù)據(jù):現(xiàn)在將 emp 和 dept 表關(guān)聯(lián)查詢,查詢一下指定的字段部門表中一共存在四個部門的信息,但是此時只列出了 3 個。因為在雇員表中并沒有指定 40 部門的雇員。第(10)頁SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept dWHERE e.deptno(+)=d.deptno ;SELECT e.empno,e.ename,d.deptno,d.dname,d

11、.loc FROM emp e,dept dWHERE e.deptno=d.deptno ;SELECT * FROM dept ;可以發(fā)現(xiàn),此時 40 部門已經(jīng)出現(xiàn)了。所以,此時就使用到了右連接,證明以下的規(guī)律:(+)在=左邊表示右連接(+)在=右邊表示左連接以上的(+)寫與不寫都是一樣的,肯定是無法顯示 40 部門信息的。左、右連接在一般的開發(fā)中使用較多,實際上之前的查找雇員使用左、右連接了。及每一位雇員的時候就應(yīng)該第(11)頁SELECT e.empno,e.ename,d.deptno,d.dname,d.loc FROM emp e,dept dWHERE e.deptno=d.d

12、eptno(+) ;范例:查找雇員的、及其的、(A)未加左連接(B)加入左連接發(fā)現(xiàn)查詢出來的結(jié)果缺少了以下的一行:因為其是最高,所以 mgr 為空。加入左連接之后可以發(fā)現(xiàn) KING 出現(xiàn)了。3.3.3、SQL:1999 語法對SQL的支持(了解)SQL:1999 語法格式:范例:交叉連接(CROSS JOIN):產(chǎn)生積第(12)頁SELECT * FROM emp CROSS JOIN dept ;SELECT table1.column,table2.column FROM table1 CROSS JOable2| NATURAL JOable2|JOable2 USING(column_

13、name)|JOable2 ON(table1.column_name=table2.column_name)|LEFT|RIGHT|FULL OUTER JOable2 ON(table1.column_name=table2.column_name);SELECT e.empno,e.ename,m.empno,m.ename FROM emp e,emp mWHERE e mgr=m.empno(+) ;7839 KING17-11 月-81500010SELECT e.empno,e.ename,m.empno,m.ename FROM emp e,emp mWHERE e mgr =

14、 m.empno ;查詢出了 56 行,所以已經(jīng)產(chǎn)生了積。范例:自然連接(NATURAL JOIN):自動進(jìn)行關(guān)聯(lián)字段的匹配范例:USING 子句:直接關(guān)聯(lián)的操作列第(13)頁SELECT * FROM emp e JOIN dept d USING(deptno)WHERE deptno=30 ;SELECT * FROM emp NATURAL JOIN dept ;范例:ON 子句,用戶自己編寫連接的條件范例:左連接(左外連接)、右連接(右外連接):LEFT JOIN,RIGHT JOIN第(14)頁SELECT e.ename,d.deptno,d.dname,d.loc FROM e

15、mp e RIGHT OUTER JOIN dept dON(e.deptno=d.deptno) ;SELECT * FROM emp e JOIN dept d ON(e.deptno=d.deptno)WHERE deptno=30 ;3.2、組函數(shù)及分組統(tǒng)計(重點)分組:例如,把所有的男生分為一組,如果想求出每一組的平均身高,平均分為一組。等,這就需要使用分組函數(shù)。3.2.1、組函數(shù)在 SQL 中常用的組函數(shù)有以下幾個:COUNT():求出全部的數(shù)MAX():求出一組中的最大值 MIN():求出最小值A(chǔ)VG():求出平均值SUM():求和范例:COUNT()函數(shù)(A)COUNT()函數(shù)

16、(B) MIN()函數(shù)范例:MAX()、MIN(),求最大最小值,一般是針對于數(shù)字的應(yīng)用上。 求出所有員工的最低工資 求出所有員工的最高工資(A)MAX()函數(shù)(B)SUM()函數(shù)第(15)頁SELECT MAX(sal) FROM emp ;SELECT MIN(sal) FROM emp ;SELECT COUNT(empno) FROM emp ;范例:求和及平均值 求出 20 部門中的總工資: 求出所有員工的平均工資3.2.2、分組統(tǒng)計要想使用分組統(tǒng)計,則首先應(yīng)該固定其語法,使用 GROUP BY 進(jìn)行分組,此時 SQL 語法格式如下:范例;求出每個部門的雇員數(shù)量??隙☉?yīng)該按照部門劃分

17、,按 deptno 分組范例:求出每個部門的平均工資第(16)頁SELECT deptno,AVG(sal) FROM empGROUP BY deptno ;SELECT deptno,COUNT(empno) FROM empGROUP BY deptno ;SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FROM 表名稱 1 別名 1 , 表名稱 2 別名 2 ,WHERE 條件(s)GROUP BY 分組條件ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,SELECT AVG(sal) FROM emp ;SEL

18、ECT SUM(sal) FROM emp WHERE deptno=20 ;:觀察以下代碼以上代碼不能正確執(zhí)行,是因為:1、 如果程序中使用了分組函數(shù),則有兩種可以使用的情況:程序中存在了 GROUP BY,并指定了分組條件,這樣可以將分組條件一起查詢出來。如果不使用分組的話,則只能單獨的使用分組函數(shù)。2、 在使用分組函數(shù)的時候,不能出現(xiàn)分組函數(shù)和分組條件之外的字段。此時,提示 empno 不是 GROUP BY 表達(dá)式,所以無法使用。第(17)頁SELECT deptno,empno,COUNT(empno) FROM empGROUP BY deptno ;SELECT deptno,C

19、OUNT(empno) FROM emp ;范例:按部門分組,并顯示部門的名稱,及每個部門的員工數(shù)范例:要求顯示出平均工資大于 2000 的部門 條件:AVG(sal) 2000和平均工資分組函數(shù)只能在分組中使用,不允許在 WHERE 語句之中出現(xiàn),那么如果現(xiàn)在假設(shè)要指定分組的條件,則只能通過第二種條件的指令:ING,此時的 SQL 語法格式:第(18)頁SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FROM 表名稱 1 別名 1 , 表名稱 2 別名 2 ,WHERE 條件(s)GROUP BY 分組條件 ING 分組條件ORDER BY 排序字段 A

20、SC|DESC , 排序字段 ACS | DESC ,SELECT deptno,AVG(sal) FROM empWHERE AVG(sal)2000GROUP BY deptno ;SELECT d.dname,COUNT(e.empno) FROM dept d,emp eWHERE d.deptno=e.deptnoGROUP BY d.dname ;范例:使用ING 完成以上的操作范例:顯示非銷售工作名稱以及從事同一工作雇員的月工資的總和,并且要滿足從事同一工作的雇員的月工資合計大于$5000,輸出結(jié)果按月工資的合計升序排列:1、顯示全部的非銷售:jobSALESMAN2、按工作分組

21、,同時求出工資的總和第(19)頁SELECT job,SUM(sal) FROM empWHERE jobSALESMANGROUP BY job ;SELECT *FROM empWHERE jobSALESMAN ;SELECT deptno,AVG(sal) FROM empGROUP BY deptnoING AVG(sal)2000 ;3、對分組的條件進(jìn)行限制,工資總和大于 50004、使用排序,按升序排序分組的簡單原則: 只要一列上存在重復(fù)的內(nèi)容才有可能考慮到分組第(20)頁SELECT job,SUM(sal) su FROM empWHERE jobSALESMANGROUP

22、BY jobING SUM(sal)5000 ORDER BY su ;SELECT job,SUM(sal) FROM empWHERE jobSALESMANGROUP BY jobING SUM(sal)5000 ;注意: 分組函數(shù)可以嵌套使用,但是在組函數(shù)嵌套使用的時候不能再出現(xiàn)分組條件的查詢語句。范例:求出平均工資最高的部門工資錯誤的代碼:3.3、子查詢子查詢:在一個查詢的內(nèi)部還包括另外一個查詢,則此查詢稱為子查詢,子查詢的格式:第(21)頁SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FROM 表名稱 1 別名 1 , 表名稱 2 別名 2

23、,(SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FROM 表名稱 1 別名 1 , 表名稱 2 別名 2 ,WHERE 條件(s)GROUP BY 分組條件 ING 分組條件ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,) 別名,WHERE 條件(s)SELECT MAX(AVG(sal)FROM empGROUP BY deptno ;SELECT deptno,MAX(AVG(sal) FROM empGROUP BY deptno ;范例:要求查詢出比 7654 工資要高的全部雇員的信息要首先清楚的知道 76

24、54 雇員的工資是多少之后要以以上的結(jié)果最為后續(xù)查詢的依據(jù),只要是其他的工資大于 sal,則表示符合條件。所有的子查詢必須在“()”中編寫代碼。子查詢在操作中有分為以下三類:單列子查詢:返回的結(jié)果是一列的一個內(nèi)容,出現(xiàn)幾率最高單行子查詢:返回多個列,有可能是一條完整的多行子查詢:返回多條第(22)頁SELECT * FROM empWHERE sal(SELECT sal FROM emp WHERE empno=7654) ;SELECT sal FROM emp WHERE empno=7654 ;(SELECT DISTINCT * | 查詢列 1 別名 1,查詢列 2 別名 2, FR

25、OM 表名稱 1 別名 1 , 表名稱 2 別名 2 ,WHERE 條件(s)GROUP BY 分組條件 ING 分組條件ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,)GROUP BY 分組條件 ING 分組條件ORDER BY 排序字段 ASC|DESC , 排序字段 ACS | DESC ,范例:要求查詢出工資比 7654 高,同時與 7788 從事相同工作的全部雇員信息。查詢出 7654 的工資:(A)查詢出 7654 的工資(B)查詢出 7788 的工作查詢出 7788 的工作之后把兩個條件進(jìn)行綜合查找范例:要求查詢出工資最低的雇員 求出最低工資

26、:、工作、工資 以最低工資為條件進(jìn)行下一步的查詢第(23)頁SELECT * FROM emp WHERE sal=(SELECT MIN(sal) FROM emp) ;SELECT MIN(sal) FROM emp ;SELECT * FROM empWHERE sal(SELECT sal FROM emp WHERE empno=7654) AND job=(SELECT job FROM emp WHERE empno=7788) ;SELECT job FROM emp WHERE empno=7788 ;SELECT sal FROM emp WHERE empno=7654

27、;思考:要求查詢出:部門名稱、部門的員工數(shù),部門的平均工資,部門的最低收入雇員的程序需要兩關(guān)聯(lián):dept、emp1、如果要想求出每個部門的員工數(shù)量,及平均工資,則肯定要使用分組統(tǒng)計,按 deptno 進(jìn)行分組,2、但是如果要想查出來部門的名稱,則需要與 dept 表進(jìn)行關(guān)聯(lián)。第(24)頁SELECT d.dname,ed.c,ed.a FROM dept d,(SELECT deptno,COUNT(empno) c,AVG(sal) a FROM empGROUP BY deptno) edWHERE d.deptno=ed.deptno ;SELECT deptno,COUNT(empno

28、),AVG(sal) FROM empGROUP BY deptno ;3、求出最低收入的雇員如果此時,在一個部門之中同時存在兩個工資最低的雇員,則程序就會出現(xiàn)錯誤。在子查詢中,存在以下三種查詢的操作符號:INANYALLIN 操作符,指定一個查詢的范圍范例:求出每個部門的最低工資的雇員信息 每個部門的最低工資,返回的值肯定是多個,所以此時可以使用 IN 指定一個操作的范圍。第(25)頁SELECT * FROM empWHERE sal IN (SELECT MIN(sal) FROM emp GROUP BY deptno) ;SELECT d.dname,ed.c,ed.a,e.enam

29、e FROM dept d,(SELECT deptno,COUNT(empno) c,AVG(sal) a,MIN(sal) min FROM empGROUP BY deptno) ed,emp eWHERE d.deptno=ed.deptno AND e.sal=ed min ;ANY 操作:=ANY:與 IN 的操作符功能完全一樣ANY:比里面最小的值要大ANY:比最大的值要小所有人的工資都小于 1300。第(26)頁SELECT * FROM empWHERE sal ANY (SELECT MIN(sal) FROM emp GROUP BY deptno) ;SELECT *

30、FROM empWHERE sal =ANY (SELECT MIN(sal) FROM emp GROUP BY deptno) ;ALL 操作:ALL:比最大的值要大ALL:比最小的值要小對于子查詢來講,還可以進(jìn)行多列子查詢,一個子查詢中同時返回多個查詢的列。第(27)頁SELECT *FROM empWHERE (sal,NVL(comm,-1) IN (SELECT sal,NVL(comm,-1) FROM emp WHERE deptno=20) ;SELECT * FROM empWHERE sal ALL (SELECT MIN(sal) FROM emp GROUP BY d

31、eptno) ;3.4、數(shù)據(jù)庫更新操作(重點)數(shù)據(jù)庫的主要操作分為兩種:數(shù)據(jù)庫的查詢操作:SELECT數(shù)據(jù)庫的更新操作:INSERT(增加)、UPDATE(修改,更新)、DELETE(刪除)此時,為了保存原始的 emp 表的信息,在進(jìn)行增加、修改、刪除操作之前先將此表一份: 此語句執(zhí)行之后,會將表結(jié)構(gòu)及數(shù)據(jù)完整的出來。此時,數(shù)據(jù)已經(jīng)出來。3.4.1、添加數(shù)據(jù)添加數(shù)據(jù)的語法:范例:為 myemp 表中添加一條新的 按照標(biāo)準(zhǔn)的做法完成()第(28)頁INSERTO myemp(empno,ename,job,mgm,deptno)VALUES (7899,清潔工,7369,14-2 月-1995,

32、9000,300,40) ;INSERTO 表名稱(字段名稱 1,字段名稱 2,) VALUES (值 1,值 2,.) ;SELECT * FROM myemp ;CREATE TABLE myemp AECT * FROM emp ;創(chuàng)建完成之后,下面進(jìn)行查詢操作,觀察是否已經(jīng)在 myemp 表之中:必須再次提醒的是: 對于數(shù)字,不用加“”,而字符串必須加上“”。 使用簡略寫法(并不),因為現(xiàn)在是要添加所有字段的內(nèi)容,所以此處可以不寫上任何的字段名稱,只要值的數(shù)量及順序與數(shù)據(jù)表中的一致即可。范例:現(xiàn)在要求一個新的雇員,但是此雇員暫時沒有,沒有獎金 第一種做法:不明確的寫出要的字段第(29)

33、頁INSERTO myemp(empno,ename,job,hiredate,sal,deptno)VALUES (7889,清潔工,14-2 月-1995,9000,40) ;INSERTO myemp VALUES (8899,清潔工,7369,14-2 月-1995,9000,300,40) ;SELECT * FROM myemp ;從查詢結(jié)果中可以發(fā)現(xiàn),新的數(shù)據(jù)里面沒有,沒有獎金 第二種做法:如果時沒有明確的寫出字段名稱的話,則使用 null 表示其具體內(nèi)容。之前數(shù)據(jù)的時候,日期的格式是使用了表中固定好的一種格式,如果現(xiàn)在有這樣的一個日期“2009-01-16”日期格式,那么現(xiàn)在如

34、何把這種格式的日期進(jìn)去呢? 使用 TO_DATE()函數(shù),將一個字符串類型的數(shù)據(jù)變?yōu)?DATE 類型的數(shù)據(jù)。第(30)頁INSERTO myemp(empno,ename,job,hiredate,sal,deptno)VALUES (8888,保潔工,TO_DATE(2009-01-16,yyyy-mm-dd),9000,40) ;INSERTO myemp VALUES (8889,清潔工,null,14-2 月-1995,9000,null,40) ;3.4.2、修改數(shù)據(jù)在 SQL 語法中使用 UPDATE 語句就可以完成數(shù)據(jù)的修改功能,此語句的語法如下: 但是,從一般的開發(fā)角度上將,修

35、改操作一般都加入修改條件。范例:現(xiàn)在將 myemp 表中的所有雇員的傭金修改為 1000 修改全部從運(yùn)行結(jié)果中可以發(fā)現(xiàn),一共更新了 19 行,下面查詢 myemp 表。第(31)頁UPDATE myemp SET comm=1000 ;修改全部:UPDATE 表名稱 SET 要修改的字段=新值,要修改的字段=新值,. ;修改局部:UPDATE 表名稱 SET 要修改的字段=新值,要修改的字段=新值,. WHERE 修改條件 ;例如:將為 7899 的雇員的工資修改為 5000 指定更新條件第(32)頁UPDATE myemp SET sal=5000 WHERE empno=7899;范例:將

36、為 7899 的雇員的取消: 在進(jìn)行數(shù)據(jù)庫更新的操作時,一定要寫上更新的條件,批量更新。范例:將 7369、8899、7788 的及獎金取消第(33)頁UPDATE myemp SETm=null WHERE empno IN (7369,8899,7788);UPDATE myemp SET mgr=null WHERE empno=7899;3.4.3、刪除數(shù)據(jù)在 SQL 語句中可以使用 DELETE 命令刪除,語法格式如下:范例:刪除是 7899 的雇員信息范例:刪除是 8899、7889、8889、8888 的雇員信息第(34)頁DELETE FROM myemp WHERE empn

37、o IN (8899,7889,8889,8888) ;DELETE FROM myemp WHERE empno=7899 ;刪除全部:DELETE FROM 表名稱 ;刪除局部:DELETE FROM 表名稱 WHERE 刪除條件 ;范例:刪除掉全部領(lǐng)取獎金的雇員范例:刪除表的全部內(nèi)容 刪除的時候不指定刪除條件,則表示刪除表中的全部數(shù)以上的刪除全部的做法,開發(fā)中一般不是很建議,基本上在執(zhí)行刪除命令的時候都要指定刪除條件。3.5、事務(wù)處理范例:創(chuàng)建一個只包含 10 部門雇員的一張臨時表范例:刪除emp10 表中的 7782 雇員第(35)頁DELETE FROM emp10 WHERE em

38、pno=7782 ;CREATE TABLE emp10 AECT * FROM emp WHERE deptno=10 ;DELETE FROM myemp ;DELETE FROM myemp WHERE comm IS NOT NULL ;從當(dāng)前的窗口中發(fā)現(xiàn),此數(shù)據(jù)已經(jīng)被刪除了。但是,現(xiàn)在開啟第二個窗口,再次查詢 emp10 表,觀察效果,發(fā)現(xiàn) 7782 的數(shù)據(jù)還存在,證明沒有刪除,實際上這就是 Oracle 中的事務(wù)處理概念。事務(wù)處理:所謂的事務(wù)處理就是保證數(shù)據(jù)操作的完整性,所有的操作要么同時成功,要么同時失敗。在 Oracle 中對于每接建立一個 ses,即:每接到數(shù)據(jù)庫的窗口(sq

39、lplus、sqlplusw)連接之后實際上都會與數(shù)據(jù)庫的連接到數(shù)據(jù)庫上的用戶都表示創(chuàng)建了一個 ses。一個 ses對數(shù)據(jù)庫所做的修改,不會立刻反映到數(shù)據(jù)庫的真實數(shù)據(jù)之上,是允許回滾的,當(dāng)一個ses提交所有的操作之后,數(shù)據(jù)庫才真正的作出修改。在數(shù)據(jù)庫的操作中提供了以下的兩個主提交事務(wù):commit ;回滾事務(wù):rollback ;令完成事務(wù)的處理:|- 如果數(shù)據(jù)已經(jīng)被提交了,則肯定無法回滾在 Oracle 中關(guān)于事務(wù)的處理上也會存在一種死鎖的概念。 一個 ses如果更新了數(shù)據(jù)庫中的,其他 ses之后才允許更新。是無法立刻更新的,要等待對方提交4、查詢練習(xí)1、 列出至少有一個員工的所有部門。 求出所有部門的員工數(shù)量第(36)頁SELECT deptno,COUNT(empno) FROM empGROUP BY deptno ;列出部門人數(shù)大于 1 的所有部門通過部門表,查詢出部門的信息即可2、 列出薪金比“SMITH”多的所有員工。 求出 SMITH 的工資 以上面的結(jié)果為條件,查詢所有符合條件的雇員信息第(37)頁SELECT * FROM empWHERE sal(SELECT sal FROM emp WHERE ename=SMITH) ;SELECT sal FROM emp WHERE ename=SMITH ;SELECT d.*,ed.co

溫馨提示

  • 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

提交評論