唯讀事務和sql函式

2021-08-09 15:45:05 字數 2788 閱讀 8556

唯讀事務

唯讀事務是指只允許執行

查詢操作,而不允許執行任何的dml(增、刪、改)操作的事務。使用唯讀事務可以確保使用者只能取個時刻的資料。

機票代售業務,每天的乙個時刻統計今天的銷售量,這個就使用唯讀事務,

設定唯讀事務以後,儘管其他繪畫可能會提交事務,但是唯讀事務將不再取最新資料的變化,從而保證可以取的特定時間點的資料資訊。

設定唯讀事務 s

et transaction read only

sql函式的使用

字元函式

字元函式式oracle中最長用的函式:

1. lower(char):將字串轉化成小寫的格式

2. upper(char):

將字串轉化成大寫的格式

3. length(char):

返回字串的長度

4. substr(char,m,n):

取字串的字串

例子1. 將所有員工的名字按照小寫的方式顯

select

lower(ename) from emp;

2. 將所有員工的名字按照大寫的方式顯示

select

upper(ename) from emp;

3. 顯示正好為6個字元的員工的姓名

select

*from

emp

where

length(ename)=6;

4. 顯示所有員工名字的前4個字元

select

substr(ename,1,4)

from

emp ;

5. 以首字母大寫的方式顯示所有員工的姓名

select

upper(substr(ename,1,1))

from

emp;

6. 以首字母大寫後面字母為小寫的方式顯示所有員工的姓名

a. 取出首字母為大寫:

select

upper(substr(ename,1,1))

from

emp;

b. 第二個字元到最後為小寫:select lower(

substr(ename,2,length(ename)-1

)from emp;

c. select

upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;

d. 合併這兩個內容:

select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1))from emp;

replace (修改的字段,『原字元』,『修改後的字元』);

名字中的a替換成&

select replace

(ename ,'a','&')

from

emp ;

instr

(char_1,char_2,[n[,m]])取出字串在字串中的位置

數學函式

數學函式的輸入引數和返回值得資料型別都是數字型別。數學函式包括:

cos,cosh,exp,ln,log,sin,sinh,sqrt,tan,tanh,acos,asin,atan,round,

最常用的:

1. round(n,[m]);

用於執行四捨五入,如果去掉m就是四捨五入到整數,

m為正數的時候,則四捨五入到小數點的

m位後,如果為負數則四捨五入到小數點的

m位前。

select ename ,(round(sal)+round(comm))*13 from emp;

select ename ,

(round(sal,1)

+round(comm))*13 from emp;

2. trunk

(n,[m]);

用於擷取數字,如果省掉m,就擷取小數部分,如過

m是正數就擷取到小數點的

m位後,如果

m是負數,則擷取到小數點的前m位

select ename ,

trunc(comm,2)

, comm from emp where ename='

小雞';

3. mod(m,n);

取模函式

select

mod(10,2)

from dual;\\

dual表是用來測試的表(亞元表)再做

oracle

測試的,虛擬的表

4. floor(n);

返回小於或是等於n的最大整數(再這個整數向下取整)

select ename ,

floor(comm)

,comm

from emp where ename=

』scott』;

5. ceil(n);

返回大於或者等於n的最小整數(再這個整數向上取整)

select ename ,

ceil(comm)

,comm

from emp where ename=

』scott』;

對數字的處理,長用再財務系統和銀行系統中,不同的處理方法,對財務的報表有不同的結果。

顯示在乙個月為30天的情況下所有員工的日薪。忽略餘數。

select

trunc(sal/30)

,ename from emp;

select

floor

(sal/30)

,ename from emp;

事務 唯讀事務

b 沒有事務 b 保證了sql語句級別的讀一致性。即在一條sql語句執行期間,它只會看到執行前點的資料狀態,而不會看到執行期間資料被其他sql改變的狀態。存在的問題 比如你做乙個報表查詢,在執行完第一條sql的時候,執行第二條查詢sql,而這個之間有資料被改變了,第二條資料查詢就有可能不一致 b 唯...

唯讀事務和沒有事務

在專案中看到 transactional readonly true 註解 該屬性用於設定當前事務是否為唯讀事務,設定為 true 表示唯讀,false 則表示可讀寫,預設值為 false 例如 transactional readonly true 了解到是唯讀事務,網上搜了下唯讀事務和沒有事務的...

oracle唯讀事務

一致性讀是oracle區別於其他資料庫的重要特點之一,但一般來說,這個一致性讀是sql級別的,只針對單個sql有效。由於業務邏輯需要,我們可能需要在乙個事務中的多個sql也能實現讀一致性,也就是說,資料來源在事務開始時就定下來了,不受其他會話影響。oracle的唯讀事務可以實現這個功能,它可以在事務...