NVL( string1, replace_with) :如果string1為NULL,則NVL函數(shù)返回replace_with的值,否則返回string1的值,如果兩個參數(shù)都為NULL ,則返回NULL。
SIGN(n) :該函數(shù)用于檢測數(shù)字的正負.如果數(shù)字n小于0,則函數(shù)的返回值位-1;如果數(shù)字n的值等于0,則函數(shù)的返回值等于0,如果數(shù)字n大于0,則函數(shù)的返回值等于1。
CEIL(n) :該函數(shù)用于返回大于等于數(shù)字n的最小整數(shù)。
FLOOR(n):該函數(shù)用于返回小于等于數(shù)字n的最大整數(shù)。
MOD(m,n) :該函數(shù)用于返回兩個數(shù)字相除后的余數(shù).如果數(shù)字n為0,則返回結(jié)果為m。
ROUND(n,[m]) :該函數(shù)用于執(zhí)行四舍五入運算;如果省略m,則四舍五入至整數(shù)位;如果m是負數(shù),則四舍五入到小數(shù)點前m位;如果m是整數(shù),則四舍五入至小數(shù)點后m位。
TRUNC(n,[m]) :該函數(shù)用于截取數(shù)字。如果省略數(shù)字m,則將數(shù)字n的小數(shù)部分截去;如果數(shù)字m是正數(shù),則將數(shù)字n截取到小數(shù)點后的第m位;如果數(shù)字m是負數(shù),則將數(shù)字n截取到小數(shù)點前m位。
TRIM([ { { LEADING | TRAILING | BOTH },截取特定字符串。
ASCII(char):該函數(shù)用于返回字符串首字符的ASCII值。
CHR(char) :該函數(shù)用于將ASCII碼值轉(zhuǎn)變?yōu)樽址?br />
CONCAT:該函數(shù)用于連接字符串,其作用于連接操作符(||)完全相同。
LENGTH(char):該函數(shù)用于返回字符串的長度,如果字符串的類型為CHAR,則其長度包括所有的后綴空格:如果char是null,則返回null。
ADD_MONTHS(d,n):該函數(shù)用于返回特定日期時間 d 之后(或之前)的n個月所對應(yīng)的日期時間(n為正整數(shù)表示之后,n為負整數(shù)表示之前)。
TRUNC(d,[fmt]) :該函數(shù)用于截取日期時間數(shù)據(jù).如果fmt指定年度,則結(jié)果為本年度的1月1日;如果fmt指定月,則結(jié)果為本月1日。
MOTNS_BETWEEN(d1,d2):該函數(shù)用于返回d1和d2之間相差的月數(shù).如果d1小于d2,則返回負數(shù);如果d1和d2的天數(shù)相同,或都是月底,則返回整數(shù);否則Oracle以每月31天為準來計算結(jié)果的小數(shù)部分。
NEXT_DAY(d,char):該函數(shù)用于返回指定日期后的第一個工作日(由char指定)所對應(yīng)的日期。
TO_CHAR(data[,fmt[,nls_param]]) :該函數(shù)用于將日期值轉(zhuǎn)變?yōu)樽址渲衒mt用于指定日期格式,nls_param用于指定nls參數(shù)。
TO_CHAR(n[,fmt[,nls_param]]):用于將數(shù)字值轉(zhuǎn)換為VARCHAR2數(shù)據(jù)類型。
TO_DATE(char[,fmt[,nls_param]]):該函數(shù)用于將符合指定日期的函數(shù)轉(zhuǎn)變?yōu)镈ATE類型的數(shù)值。
DECODE函數(shù)為Oracle專屬。
1)使用符號“||”
SELECT '工號為'||FNumber || '的員工姓名為' || FName FROM T_Employee WHERE FName IS NOT NULL?
2)使用CONCAT()函數(shù)進行拼接,Oracle中的concat函數(shù)僅支持兩個字符串進行拼接,如果要再多,可以嵌套使用。
SELECT CONCAT('工號:',FNumber) FROM T_Employee?
Oracle中使用rownum來進行分頁, 這個是效率最好的分頁方法,hibernate也是使用rownum來進行oralce分頁的
select * from ( select rownum r,a from tabName where rownum <= 20 ) where r > 10
字符類型:CHAR, VARCHAR2, NVARCHAR2
CHAR(12)表示包含12個字節(jié)的信息,CHAR字段最多可存儲2000字節(jié)信息,如果創(chuàng)建表時不指定CHAR長 度,則默認為1。Oracle一個漢字占3個字節(jié),一個字母或數(shù)字占1個字節(jié),CHAR(12)可存儲4個漢字。
VARCHAR2最多可存儲4000字節(jié)的信息,VARCHAR2(n)中的n表示的是字節(jié)
NVARCHAR2也是最多4000字節(jié)信息,NVARCHAR2(n)中的n表示的是字符長度。
數(shù)字類型:NUMBER、 INTEGER
NUMBER(P, S)中P表示的是有效數(shù)字的位數(shù),最多不超過38,S表示小數(shù)的位數(shù)。
INTEGER是NUMBER的子類型,等于NUMBER(38, 0),用來存儲整數(shù)。
浮點數(shù):BINARY_FLOAT類型、BINARY_DOUBLE類型
日期類型:DATE、TIMESTAMP
LOB類型:CLOB、BLOB、NCLOB
CLOB, 最大長度4G
BLOB, 存儲二進制文件,如圖像、聲音、視頻等,最大長度4G
NCLOB, 存儲UNICODE類型數(shù)據(jù),最大長度4G
LONG, RAW, LONG RAW類型
LONG存儲變長字符串,最多2G字符數(shù)據(jù)
LONG RAW存儲2G二進制數(shù)據(jù)
RAW存儲二進制或字符類型數(shù)據(jù)
--轉(zhuǎn)換日期型:to_date(x,y) --y的長度要和x保持一致
eg: to_date(sysdate,'yyyy-mm-dd hh24:mi:ss')
--轉(zhuǎn)換字符型:to_char() --可以單獨去'yyyy''mm''dd'...
--轉(zhuǎn)換數(shù)字型:to_number()
delete from grade t2
where rowid != (select max(rowid)
from grade t
where t.name = '張三'
and t.subject = 'chinese')
and t2.name = '張三'
and t2.subject = 'chinese';
commit;
Truncate 和delete都可以將數(shù)據(jù)實體刪掉,truncate 的操作并不記錄到 rollback日志,所以操作速度較快,但同時這個數(shù)據(jù)不能恢復(fù)
Delete操作不騰出表空間的空間
Truncate 不能對視圖等進行刪除
Truncate是數(shù)據(jù)定義語言(DDL),而delete是數(shù)據(jù)操縱語言(DML)
tablespace --表空間對應(yīng)用戶數(shù)據(jù)的存儲,在創(chuàng)建用戶時一般會指定表空間,如果沒,默認為users.存儲用戶的所有對象。
表空間包括:數(shù)據(jù)段segemnet --數(shù)據(jù)區(qū)extents --數(shù)據(jù)塊data block,一個數(shù)據(jù)文件只能存儲在一個表空間中。
function為函數(shù),procedure為存儲過程。
1)函數(shù)是存儲過程的一種。
2)函數(shù)可以沒有參數(shù),但是一定需要一個返回值,存儲過程可以沒有參數(shù),不需要返回值
3)函數(shù)return返回值沒有返回參數(shù)模式,存儲過程通過out參數(shù)返回值, 如果需要返回多個參數(shù)則建議使用存儲過程
4)在sql數(shù)據(jù)操縱語句中只能調(diào)用函數(shù)而不能調(diào)用存儲過程。