韓順平_玩轉(zhuǎn)oracle_10g_實(shí)戰(zhàn)教程第3講.ppt_第1頁(yè)
韓順平_玩轉(zhuǎn)oracle_10g_實(shí)戰(zhàn)教程第3講.ppt_第2頁(yè)
韓順平_玩轉(zhuǎn)oracle_10g_實(shí)戰(zhàn)教程第3講.ppt_第3頁(yè)
韓順平_玩轉(zhuǎn)oracle_10g_實(shí)戰(zhàn)教程第3講.ppt_第4頁(yè)
韓順平_玩轉(zhuǎn)oracle_10g_實(shí)戰(zhàn)教程第3講.ppt_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,主講:韓順平,email:,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle第3講,1. java程序如何操作oracle 2. 如何在oracle中操作數(shù)據(jù) 3. oracle事務(wù)處理 4. sql函數(shù)的使用,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,java連接oracle, 介紹 前面我們一直在plsql中操作oracle,那么如何在java程序中操作數(shù)據(jù)庫(kù)呢?,下面我們舉例說(shuō)明,寫(xiě)一個(gè)ShowEmp.java(jsp),分頁(yè)顯示emp表的用戶(hù)信息。,java連接oracle odbc橋連接: Class.forName

2、(sun.jdbc.odbc.JdbcOdbcDriver); Connection ct=DriverManager.getConnection(jdbc:odbc:testsp,scott,m123);,java連接oracle jdbc連接 Class.forName(oracle.jdbc.driver.OracleDriver); Connection ct=DriverManager.getConnection(jdbc:oracle:thin:127.0.0.1:1521:myora1,scott,m123);,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,在oracle中操作

3、數(shù)據(jù)使用特定的格式插入日期, 使用 to_date函數(shù) 請(qǐng)大家思考:如何插入列帶有日期的表,并按照年-月-日的格式插入?,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中操作數(shù)據(jù)使用子查詢(xún)插入數(shù)據(jù), 介紹 當(dāng)使用values子句時(shí),一次只能插入一行數(shù)據(jù),當(dāng)使用子查詢(xún)插入數(shù)據(jù)時(shí),一條insert語(yǔ)句可以插入大量的數(shù)據(jù).當(dāng)處理行遷移或者裝載外部表的數(shù)據(jù)到數(shù)據(jù)庫(kù)時(shí),可以使用子查詢(xún)來(lái)插入數(shù)據(jù).,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中操作數(shù)據(jù)使用子查詢(xún)更新數(shù)據(jù), 介紹 使用update語(yǔ)句更新數(shù)據(jù)時(shí),既可以使用表達(dá)式或者數(shù)值直接修改數(shù)據(jù),也可以使用子查詢(xún)修改數(shù)據(jù)。

4、?希望員工scott的崗位、工資、補(bǔ)助與smith員工一樣,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理, 什么是事務(wù) 事務(wù)用于保證數(shù)據(jù)的一致性,它由一組相關(guān)的dml語(yǔ)句組成,該組的dml語(yǔ)句要么全部成功,要么全部失敗。 如:網(wǎng)上轉(zhuǎn)賬就是典型的要用事務(wù)來(lái)處理,用以保證數(shù)據(jù)的一致性。 事務(wù)和鎖 當(dāng)執(zhí)行事務(wù)操作時(shí)(dml語(yǔ)句),oracle會(huì)在被作用的表上加鎖,防止其它用戶(hù)改表表的結(jié)構(gòu).這里對(duì)我們用戶(hù)來(lái)講是非常重要的。 提交事務(wù) 當(dāng)執(zhí)使用commit語(yǔ)句可以提交事務(wù).當(dāng)執(zhí)行了commit語(yǔ)句子后,會(huì)確認(rèn)事務(wù)的變化、結(jié)束事務(wù)、刪除保存點(diǎn)、釋放鎖,當(dāng)使用commit語(yǔ)句結(jié)束事

5、務(wù)子后,其它會(huì)話將可以查看到事務(wù)變化后的新數(shù)據(jù),主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理, 回退事務(wù) 在介紹回退事務(wù)前,我們先介紹一下保存點(diǎn)(savepoint)的概念和作用.保存點(diǎn)是事務(wù)中的一點(diǎn).用于取消部分事務(wù),當(dāng)結(jié)束事務(wù)時(shí),會(huì)自動(dòng)的刪除該事務(wù)所定義的所有保存點(diǎn). 當(dāng)執(zhí)行rollback時(shí),通過(guò)指定保存點(diǎn)可以回退到指定的點(diǎn),這里我們作圖說(shuō)明 事務(wù)的幾個(gè)重要操作 1) 設(shè)置保存點(diǎn) savepoint 保存點(diǎn)名 2) 取消部分事務(wù) rollback to 保存點(diǎn)名 3) 取消全部事務(wù) rollback,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中

6、事務(wù)處理, java程序中如何使用事務(wù) 在java操作數(shù)據(jù)庫(kù)時(shí),為了保證數(shù)據(jù)的一致性,比如轉(zhuǎn)帳操作(圖): (1)從一個(gè)帳戶(hù)減掉10$(2)在另一個(gè)帳戶(hù)上加入10$,我們看看如何使用事務(wù)?,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理 事務(wù)隔離級(jí)別, 事務(wù)隔離級(jí)別 概念:隔離級(jí)別定義了事務(wù)與事務(wù)之間的隔離程度。 ANSI/ISO SQL92標(biāo)準(zhǔn)定義了一些數(shù)據(jù)庫(kù)操作的隔離級(jí)別(這是國(guó)際標(biāo)準(zhǔn)化組織定義的一個(gè)標(biāo)準(zhǔn)而已,不同的數(shù)據(jù)庫(kù)在實(shí)現(xiàn)時(shí)有所不同):,V 可能出現(xiàn) x 不會(huì)出現(xiàn),主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理 事務(wù)隔離級(jí)別, 事務(wù)隔離

7、級(jí)別 臟讀(dirty read):當(dāng)一個(gè)事務(wù)讀取另一個(gè)事務(wù)尚未提交的修改時(shí),產(chǎn)生臟讀。 不可重復(fù)讀(nonrepeatable read):同一查詢(xún)?cè)谕皇聞?wù)中多次進(jìn)行,由于其他提交事務(wù)所做的修改或刪除,每次返回不同的結(jié)果集,此時(shí)發(fā)生非重復(fù)讀。 幻讀(phantom read):同一查詢(xún)?cè)谕皇聞?wù)中多次進(jìn)行,由于其他提交事務(wù)所做的插入操作,每次返回不同的結(jié)果集,此時(shí)發(fā)生幻讀。,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理 事務(wù)隔離級(jí)別, oracle的事務(wù)隔離級(jí)別 ORACLE提供了SQL92標(biāo)準(zhǔn)中的read committed和serializable,同時(shí)提供了

8、非SQL92標(biāo)準(zhǔn)的read-only oracle的 read committed 說(shuō)明: 這是ORACLE缺省的事務(wù)隔離級(jí)別。 保證不會(huì)臟讀;但可能出現(xiàn)非重復(fù)讀和幻像。 oracle的 serializable 說(shuō)明: serializable就是使事務(wù)看起來(lái)象是一個(gè)接著一個(gè)地順序地執(zhí)行(從效果上可以這樣理解) 僅僅能看見(jiàn)在本事務(wù)開(kāi)始前由其它事務(wù)提交的更改和在本事務(wù)中所做的更改 保證不會(huì)出現(xiàn)臟讀、不可重復(fù)讀和幻讀 Serializable隔離級(jí)別提供了read-only事務(wù)所提供的讀一致性(事務(wù)級(jí)的讀一致性),同時(shí)又允許DML操作,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle

9、中事務(wù)處理 事務(wù)隔離級(jí)別, oracle的事務(wù)隔離級(jí)別 oracle的 read only 說(shuō)明: 遵從事務(wù)級(jí)的讀一致性,僅僅能看見(jiàn)在本事務(wù)開(kāi)始前由其它事務(wù)提交的更改。 不允許在本事務(wù)中進(jìn)行DML操作。 read only是serializable的子集。它們都避免了不可重復(fù)讀和幻讀。區(qū)別是在read only中是只讀;而在serializable中可以進(jìn)行DML操作,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理 事務(wù)隔離級(jí)別, oracle的事務(wù)隔離級(jí)設(shè)置 設(shè)置一個(gè)事務(wù)的隔離級(jí)別 設(shè)置整個(gè)會(huì)話的隔離級(jí)別,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中

10、事務(wù)處理 事務(wù)隔離級(jí)別, oracle的事務(wù)隔離級(jí)-案例,我們舉例一個(gè)案例來(lái)說(shuō)明oracle的事務(wù)隔離級(jí)別. 以對(duì)emp表進(jìn)行 操作為例。,sqlplus控制臺(tái),sqlplus控制臺(tái),主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理 事務(wù)隔離級(jí)別, oracle的事務(wù)隔離級(jí)在java程序中如何使用 connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); 特別說(shuō)明: java程序中Connection.XXXXXX有五個(gè),但不是所有的數(shù)據(jù)庫(kù)對(duì)有對(duì)應(yīng)的五個(gè)事務(wù)隔離級(jí)別實(shí)現(xiàn)。 在實(shí)際工

11、作中,我們極少去修改各個(gè)數(shù)據(jù)庫(kù)默認(rèn)的隔離級(jí)別。,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,oracle中事務(wù)處理只讀事務(wù), 只讀事務(wù)實(shí)際運(yùn)用案例 只讀事務(wù)是指只允許執(zhí)行查詢(xún)的操作,而不允許執(zhí)行任何其它dml操作的事務(wù),使用只讀事務(wù)可以確保用戶(hù)只能取得某時(shí)間點(diǎn)的數(shù)據(jù)。假定機(jī)票代售點(diǎn)每天18點(diǎn)開(kāi)始統(tǒng)計(jì)今天的銷(xiāo)售情況,這時(shí)可以使用只讀事務(wù).在設(shè)置了只讀事務(wù)后,盡管其它會(huì)話可能會(huì)提交新的事務(wù),但是只讀事務(wù)將不會(huì)取得最新數(shù)據(jù)的變化,從而可以保證取得特定時(shí)間點(diǎn)的數(shù)據(jù)信息。(圖示) 設(shè)置只讀事務(wù) set transaction read only,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql

12、函數(shù)的使用字符函數(shù), 介紹 字符函數(shù)是oracle中最常用的函數(shù),我們來(lái)看看有哪些字符函數(shù): replace(char1,search_string,replace_string) instr(char1,char2,n,m)取子串在字符串的位置 ?顯示所有員工的姓名,用”我是A”替換所有A“,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用數(shù)學(xué)函數(shù), 介紹 數(shù)學(xué)函數(shù)的輸入?yún)?shù)和返回值的數(shù)據(jù)類(lèi)型都是數(shù)字類(lèi)型的.數(shù)學(xué)函數(shù)包括cos,cosh,exp,ln,log,sin,sinh,sqrt, tan, tanh,acos,asin,atan,round,我們講最常用的 : rou

13、nd(n,m) trunc(n,m) mod(m,n) floor(n) ceil(n) 對(duì)數(shù)字的處理,在財(cái)務(wù)系統(tǒng)或銀行系統(tǒng)中用的最多,不同的處理方法,對(duì)財(cái)務(wù)報(bào)表有不同的結(jié)果。,結(jié)賬系統(tǒng),主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用數(shù)學(xué)函數(shù), 介紹 round(n,m) 該函數(shù)用于執(zhí)行四舍五入,如果省掉m,則四舍五入到整數(shù);如果m是正數(shù),則四舍五入到小數(shù)點(diǎn)的m位后.如果m是負(fù)數(shù),則四舍五入到小數(shù)點(diǎn)的m位前 trunc(n,m) 該函數(shù)用于截取數(shù)字.如果省掉m,就截去小數(shù)部分,如果m是正數(shù)就截取到小數(shù)點(diǎn)的m位后,如果m是負(fù)數(shù),則截取到小數(shù)點(diǎn)的前m位 mod(m,n) floo

14、r(n) 返回小于或是等于n的最大整數(shù) ceil(n) 返回大于或是等于n的最小整數(shù) 案例數(shù)據(jù): 2345.56 45.94,?顯示在一個(gè)月為30天的情況所有員工的日薪金,忽略余數(shù).,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用數(shù)學(xué)函數(shù), 介紹 其它的數(shù)學(xué)函數(shù),有興趣的同學(xué)可以自己去看看: abs(n) 返回?cái)?shù)字n的絕對(duì)值 select abs(-13) from dual; acos(n) :返回?cái)?shù)字的反余旋值 asin(n): 返回?cái)?shù)字的反正旋值 atan(n): 返回?cái)?shù)字的反正切 cos(n) exp(n): 返回e的n次冪 log(m,n)返回對(duì)數(shù)值 power(m

15、,n):返回m的n次冪,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用日期函數(shù), 介紹 日期函數(shù)用于處理date類(lèi)型的數(shù)據(jù). 默認(rèn)情況下日期格式是dd-mon-yy 即12-7月-78 (1)sysdate: 該函數(shù)返回系統(tǒng)時(shí)間 (2)add_months(d,n) (3)last_day(d):返回指定日期所在月份的最后一天 ?查找已經(jīng)入職8個(gè)月多的員工 ?顯示滿10年服務(wù)年限的員工的姓名和受雇日期. ?對(duì)于每個(gè)員工,顯示其加入公司的天數(shù). ?找出各月倒數(shù)第3天受雇的所有員工.,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用轉(zhuǎn)換函數(shù), 介紹 轉(zhuǎn)換函數(shù)用于將

16、數(shù)據(jù)類(lèi)型從一種轉(zhuǎn)為另外一種.在某些情況下,oracle server允許值的數(shù)據(jù)類(lèi)型和實(shí)際的不一樣,這時(shí)oracle server會(huì)隱含的轉(zhuǎn)化數(shù)據(jù)類(lèi)型,比如: create table t1(id number); insert into t1 values(10) -這樣oracle會(huì)自動(dòng)的將10-10 create table t2 (id varchar2(10); insert into t2 values(1); -這樣oracle 就會(huì)自動(dòng)的將1-1; 我們要說(shuō)的是盡管oracle可以進(jìn)行隱含的數(shù)據(jù)類(lèi)型的轉(zhuǎn)換,但是它 并不適應(yīng)所有的情況,為了提高程序的可靠性,我們應(yīng)該使用轉(zhuǎn)換函 數(shù)

17、進(jìn)行轉(zhuǎn)換,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用轉(zhuǎn)換函數(shù), to_char 你可以使用 select ename,hiredate,sal from emp where deptno=10; 顯示信息,可是,在某些情況下,這個(gè)并不能滿足你的需求。 ?日期是否可以顯示 時(shí)/分/秒 ?薪水是否可以顯示指定的貨幣符號(hào),yy: 兩位數(shù)字的年份 2004-04 yyyy: 四位數(shù)字的年份 2004年 mm :兩位數(shù)字的月份 8月-08 dd: 2位數(shù)字的天 30號(hào)-30 hh24: 8點(diǎn)20 hh12: 8點(diǎn)08 mi、ss -顯示分鐘秒,9:顯示數(shù)字,并忽略前面0 0:顯示數(shù)

18、字,如位數(shù)不足,則用0補(bǔ)齊 .:在指定位置顯示小數(shù)點(diǎn) ,: 在指定位置顯示逗號(hào) $: 在數(shù)字前加美元 L: 在數(shù)字前加本地貨幣符號(hào) C: 在數(shù)字前加國(guó)際貨幣符號(hào) G:在指定位置顯示組分隔符、 D:在指定位置顯示小數(shù)點(diǎn)符號(hào)(.) select ename,to_char(sal,L99G999D99) from emp ;,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用轉(zhuǎn)換函數(shù), 小練習(xí)(to_char) ?顯示1980年入職的所有員工 ?顯示所有12月份入職的員工 to_date 函數(shù)to_date用于將字符串轉(zhuǎn)換成date類(lèi)型的數(shù)據(jù). ?能否按照中國(guó)人習(xí)慣的方式年-月-日添加日期,主講 韓順平,玩轉(zhuǎn)oracle 10g實(shí)戰(zhàn)教程,sql函數(shù)的使用系

溫馨提示

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

評(píng)論

0/150

提交評(píng)論