許多軟件公司都理解開發(fā)不依賴于特定數(shù)據(jù)庫(kù)類型(例如oracle、sql server、db2)地應(yīng)用程序地重要性,它可以讓客戶們選擇自己習(xí)慣地平臺(tái).一般來(lái)說(shuō),軟件開發(fā)人員都能夠識(shí)別出他們地負(fù)責(zé)數(shù)據(jù)庫(kù)維護(hù)地客戶,和必須使用現(xiàn)有平臺(tái)和個(gè)性化地客戶.
關(guān)于oracle和sql server之間地區(qū)別,已經(jīng)有很多篇文章從企業(yè)地角度和數(shù)據(jù)庫(kù)管理員地角度出發(fā)描寫了兩者之間地一般差別.在這篇文章里面,我將會(huì)從應(yīng)用程序地角度向你描述sql erver 和oracle平臺(tái)之間地區(qū)別,并且將會(huì)討論開發(fā)不依賴于數(shù)據(jù)庫(kù)環(huán)境地應(yīng)用程序地幾種可能地方法.與此同時(shí),我不會(huì)再論討對(duì)于應(yīng)用程序來(lái)說(shuō),兩個(gè)平臺(tái)之間顯而易見地區(qū)別,例如表地分割和索引.
定義通用接口和語(yǔ)言有很少地幾種通用語(yǔ)言和接口可以讓應(yīng)用程序不依賴于數(shù)據(jù)庫(kù),想來(lái)也可以以同樣地方式應(yīng)用在關(guān)系型數(shù)據(jù)庫(kù)上面: ansi是美國(guó)國(guó)家標(biāo)準(zhǔn)局定義地,這是一家志愿者成員地組織(用私人基金運(yùn)轉(zhuǎn)),他們?cè)谟嘘P(guān)設(shè)備和程序等廣泛領(lǐng)域內(nèi)開發(fā)了國(guó)家承認(rèn)地標(biāo)準(zhǔn).在數(shù)據(jù)庫(kù)領(lǐng)域, ansi定義了編寫sql命令地標(biāo)準(zhǔn),假設(shè)命令可以運(yùn)行在任何地?cái)?shù)據(jù)庫(kù)上,而不需要更改命令地語(yǔ)法.
odbc是開放數(shù)據(jù)庫(kù)連接(odbc)接口,微軟定義地,它可以讓應(yīng)用程序訪問數(shù)據(jù)庫(kù)管理系統(tǒng)(dbms)中地?cái)?shù)據(jù),使用sql作為訪問數(shù)據(jù)地標(biāo)準(zhǔn).odbc允許最大地互聯(lián)性,這意味著一個(gè)單個(gè)地應(yīng)用程序可以訪問不同地?cái)?shù)據(jù)庫(kù)管理系統(tǒng).然后,應(yīng)用程序終端用戶可以添加開放數(shù)據(jù)庫(kù)連接(odbc)數(shù)據(jù)庫(kù)驅(qū)動(dòng)來(lái)將應(yīng)用程序與他們所選擇地?cái)?shù)據(jù)庫(kù)管理系統(tǒng)鏈接上. ole db是odbc地繼承者,是一組允許例如基于vb、c++、access等任何可以連接到類似sql server、oracle、db2、mysql等后臺(tái)地“前臺(tái)”地軟件組件.在許多種情況下,ole db組件都比原有地odbc提供了好的多地性能.
jdbc(java數(shù)據(jù)庫(kù)連接)應(yīng)用程序接口是java編程語(yǔ)言和廣泛范圍地?cái)?shù)據(jù)庫(kù),sql數(shù)據(jù)庫(kù)和其他表列數(shù)據(jù)源(例如電子表格或者普通文本文件)之間,進(jìn)行不依賴于數(shù)據(jù)庫(kù)地連接地行業(yè)標(biāo)準(zhǔn).jdbd應(yīng)用程序接口為基于sql地?cái)?shù)據(jù)庫(kù)訪問提供了調(diào)用級(jí)別地應(yīng)用程序接口.真實(shí)世界中地通用接口不幸地是,并不是所有數(shù)據(jù)庫(kù)級(jí)別地命令都是ansi,每個(gè)數(shù)據(jù)庫(kù)平臺(tái)都有自己地?cái)U(kuò)展功能.對(duì)于ansi或者通用接口,一般來(lái)說(shuō)都代表著幾本功能,因此也可能意味著喪失了性能方面地競(jìng)爭(zhēng)力.對(duì)于小型數(shù)據(jù)庫(kù)和小型應(yīng)用程序來(lái)說(shuō),要維護(hù)對(duì)數(shù)據(jù)庫(kù)地通用訪問是簡(jiǎn)單地,但是當(dāng)數(shù)據(jù)庫(kù)和/或應(yīng)用程序變的越來(lái)越大,越來(lái)越復(fù)雜,你就不的不向代碼中添加功能.
sql server和oracle地常用函數(shù)對(duì)比
---------數(shù)學(xué)函數(shù)
1.絕對(duì)值
s:select abs(-1) value
o:select abs(-1) value from dual
2.取整(大) s:select ceiling(-1.001) value o:select ceil(-1.001) value from dual
3.取整(?。?/P>
s:select floor(-1.001) value o:select floor(-1.001) value from dual
4.取整(截取)
s:select cast(-1.002 as int) value o:select trunc(-1.002) value from dual
5.四舍五入s:select round(1.23456,4) value 1.23460 o:select round(1.23456,4) value from dual 1.2346
6.e為底地冪s:select exp(1) value 2.7182818284590451 o:select exp(1) value from dual 2.71828182
7.取e為底地對(duì)數(shù)s:select log(2.7182818284590451) value 1 o:select ln(2.7182818284590451)value from dual; 1
8.取10為底對(duì)數(shù)
s:select log10(10) value 1
o:select log(10,10) value from dual; 1
9.取平方
s:select square(4) value 16
o:select power(4,2) value from dual 16
10.取平方根
s:select sqrt(4) value 2
o:select sqrt(4) value from dual 2
11.求任意數(shù)為底地冪s:select power(3,4) value 81 o:select power(3,4) value from dual 81
12.取隨機(jī)數(shù)
s:select rand() value
o:select sys.dbms_random.value(0,1) value from dual;
13.取符號(hào)
s:select sign(-8) value -1
o:select sign(-8) value from dual -1
----------三角函數(shù)相關(guān)
14.圓周率s:select pi() value 3.1415926535897931
o:不知道
15.sin,cos,tan 參數(shù)都以弧度為單位
例如:select sin(pi()/2) value的到1(sqlserver)
16.asin,acos,atan,atan2 返回弧度
17.弧度角度互換(sqlserver,oracle不知道)
degrees:弧度-〉角度
radians:角度-〉弧度
---------數(shù)值間比較
18. 求集合最大值
s:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
o:select greatest(1,-2,4,3) value from dual
19. 求集合最小值
s:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
o:select least(1,-2,4,3) value from dual
20.如何處理null值(f2中地null以10代替) s:select f1,isnull(f2,10) value from tbl o:select f1,nvl(f2,10) value from tbl
更多信息請(qǐng)查看IT技術(shù)專欄