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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

12、函數(shù)的使用字符函數(shù), 介紹 字符函數(shù)是oracle中最常用的函數(shù),我們來看看有哪些字符函數(shù): replace(char1,search_string,replace_string) instr(char1,char2,n,m)取子串在字符串的位置 ?顯示所有員工的姓名,用”我是A”替換所有A“,主講 韓順平,玩轉(zhuǎn)oracle 10g實戰(zhàn)教程,sql函數(shù)的使用數(shù)學函數(shù), 介紹 數(shù)學函數(shù)的輸入?yún)?shù)和返回值的數(shù)據(jù)類型都是數(shù)字類型的.數(shù)學函數(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) 對數(shù)字的處理,在財務(wù)系統(tǒng)或銀行系統(tǒng)中用的最多,不同的處理方法,對財務(wù)報表有不同的結(jié)果。,結(jié)賬系統(tǒng),主講 韓順平,玩轉(zhuǎn)oracle 10g實戰(zhàn)教程,sql函數(shù)的使用數(shù)學函數(shù), 介紹 round(n,m) 該函數(shù)用于執(zhí)行四舍五入,如果省掉m,則四舍五入到整數(shù);如果m是正數(shù),則四舍五入到小數(shù)點的m位后.如果m是負數(shù),則四舍五入到小數(shù)點的m位前 trunc(n,m) 該函數(shù)用于截取數(shù)字.如果省掉m,就截去小數(shù)部分,如果m是正數(shù)就截取到小數(shù)點的m位后,如果m是負數(shù),則截取到小數(shù)點的前m位 mod(m,n) floo

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

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論