Oracle與Mysql比較

常見區(qū)別

1. 連接字符串在Oracle中用“||”或者concatt('a','b'),SqlServer中用+,MySQL中用concat('a','b','c')纳鼎。

2. orcale 生成唯一序列是 select sys.guid() from dual 颅悉,mysql是 select uuid() from dual。

3. mysql可以實現(xiàn)自增長主鍵(通過字段的auto_increment屬性)芋齿;Oracle則需要通過序列(Sequence)來實現(xiàn)。

4. mysql可以用雙引號來引用字符串(當然單引號也行);Oracle只能用單引號漠吻。

5. mysql在查詢語句中可以通過limit [offset,] 來直接分頁赵誓;而Oracle需要使用rownum打毛。

6. mysql對于真假的判斷,0為假1為真俩功;Oracle則是用true/false幻枉。

7. mysql的查詢可以 select sysdate(); ;而Oracle需要引用虛表(select sysdate from dual;)诡蜓。

8. mysql對于like的查詢熬甫,CONCAT('%', #{name,jdbcType=VARCHAR},'%') ;Oracle則是用LIKE '%'||#{name,jdbcType=VARCHAR}||'%'

9. mysql的查詢可以 select sysdate(); 蔓罚;而Oracle需要引用虛表(select sysdate from dual;)椿肩。

10. mysql中備份命令:mysqldump,執(zhí)行結(jié)果是一個sql文件脚粟;oracle備份命令:dpdump覆旱,執(zhí)行結(jié)果是一個dmp文件。前者是文本sql命令核无,可以直接導(dǎo)入到其它mysql數(shù)據(jù)庫扣唱,甚至可以稍作修改導(dǎo)入到其它類型的數(shù)據(jù)庫;后者導(dǎo)出文件是二進制的团南,只能Oracle自己用(甚至還有版本限制)噪沙。

11. mysql中的命令默認是直接commit的;Oracle默認不是

12. mysql中日期的轉(zhuǎn)換用dateformat()函數(shù)吐根;Oracle用to_date()與to_char()兩個函數(shù)正歼。

13. mysql在Windows環(huán)境下大小寫是不敏感的;unix/linux環(huán)境下拷橘,對數(shù)據(jù)庫名局义、表名大小寫敏感,列名大小寫不敏感冗疮。Oracle則不論環(huán)境大小寫都不敏感萄唇。

14. mysql支持枚舉類型(enum)、集合類型(set)术幔;Oracle不直接支持另萤,需要使用外鍵等其它手段實現(xiàn)。

常見函數(shù)區(qū)別

1. 功能: 返回不小于 X 的最小整數(shù)

用法:

mysqls: select ceiling(-1.001) value

oracle: select ceil(-1.001) value from dual

2. 功能: 在字符串 str 中所有出現(xiàn)的字符串 from_str 均被 to_str 替換,然后返回這個字符串.

用法:

mysql: SELECT REPLACE('abcdef', 'bcd', 'ijklmn') value

oracle: SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

3. 函數(shù)名稱不同:

ORACLE: select substr('abcd',2,2) value from dual

MYSQL: select substring('abcd',2,2) value

4. 函數(shù)名稱不同:

instr -> locate(注意:locate的子串和總串的位置要互換)

ORACLE: SELECT instr('abcdefg', 'ab') VALUE FROM DUAL

MYSQL: SELECT locate('ab', 'abcdefg') VALUE

5. 函數(shù)名稱不同:

ORACEL: SELECT length('AAAASDF') VALUE FROM DUAL

MYSQL: SELECT char_length('AAAASDF') VALUE

6. 函數(shù)名稱不同(根據(jù)不同的作用進行選擇):

ORACLE: select u.email_address, nvl(u.email_address, 10) value from sd_usr u (如果u.email_address=NULL,就在DB中用10替換其值)

MYSQL: select u.email_address, IFNULL(u.email_address, 10) value from sd_usr u(如果u.email_address=NULL,顯示結(jié)果中是10四敞,而不是在DB中用10替換其值)

select u.email_address, ISNULL(u.email_address) value from sd_usr u(如果u.email_address是NULL, 就顯示1,否則就顯示0)

7. decode說明:

(1). decode(條件,值1,翻譯值1,值2,翻譯值2,...值n,翻譯值n,缺省值)

該函數(shù)的含義如下:

IF 條件=值1 THEN

RETURN(翻譯值1)

ELSIF 條件=值2 THEN

RETURN(翻譯值2)

......

ELSIF 條件=值n THEN

RETURN(翻譯值n)

ELSE

RETURN(缺省值)

END IF

(2). mysql If語法說明

功能: 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL)泛源,則 IF()的返回值為expr2;

否則返回值則為 expr3。IF() 的返回值為數(shù)字值或字符串值忿危,具體情況視其所在

語境而定达箍。

用法:

mysql: SELECT IF(1>2,2,3);

8. 函數(shù)名稱不同

ORACLE> select to_char(sysdate,'yyyy-mm-dd') from dual;

ORACLE> select to_char(sysdate,'hh24-mi-ss') from dual;

mysql> select date_format(now(),'%Y-%m-%d');

mysql> select time_format(now(),'%H-%i-%S');

9. 函數(shù)名稱不同:

ORACLE:SELECT to_date('2009-3-6','yyyy-mm-dd') VAULE FROM DUAL

MYSQL: SELECT STR_TO_DATE('2004-03-01', '%Y-%m-%d') VAULE

10. 函數(shù)名稱不同:

TRUNC函數(shù)為指定元素而截去的日期值。

ORACLE: select trunc(-1.002) value from dual

MYSQL:select cast(-1.002 as SIGNED) value

MYSQL:

字符集轉(zhuǎn)換 :?? CONVERT(xxx? USING?? gb2312)

類型轉(zhuǎn)換和SQL Server一樣,就是類型參數(shù)有點點不同? : CAST(xxx? AS?? 類型)? ,?? CONVERT(xxx,類型)癌蚁,類型必須用下列的類型:

可用的類型

二進制,同帶binary前綴的效果 : BINARY

字符型,可帶參數(shù) : CHAR()

日期 : DATE

時間: TIME

日期時間型 : DATETIME

浮點數(shù) : DECIMAL

整數(shù) : SIGNED

無符號整數(shù) : UNSIGNED

11. 函數(shù)名稱不同

ORACLE:SELECT TO_NUMBER('123') AS VALUE FROM DUAL;

MYSQL: SELECT CAST("123" AS SIGNED INTEGER) as value;

SIGNED INTEGER:帶符號的整形

12. 寫法不同:

ORACLE:select SYSDATE value from dual

MYSQL:select now() value / select sysdate() value

13. 函數(shù)名稱不同:

ORACLE: SELECT ADD_MONTHS(sysdate, 2) as value from DUAL;

MYSQL: SELECT DATE_ADD(sysdate(), interval 2 month) as value from DUAL;

14. 功能: 返回兩個日期之間的天數(shù)幻梯。

用法:

mysql: SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate

oracle: 直接用兩個日期相減(比如d1-d2=12.3)

15. Oracle內(nèi)置函數(shù)SQLCODE和SQLERRM是特別用在OTHERS處理器中,分別用來返回Oracle的錯誤代碼和錯誤消息努释。

MYSQL: 可以從JAVA中得到錯誤代碼碘梢,錯誤狀態(tài)和錯誤消息

16. Oracle內(nèi)置函數(shù)SQLCODE和SQLERRM是特別用在OTHERS處理器中,分別用來返回Oracle的錯誤代碼和錯誤消息伐蒂。

MYSQL: 可以從JAVA中得到錯誤代碼煞躬,錯誤狀態(tài)和錯誤消息

17. 在MYSQL中是自動增長列. 如下方法獲取最新ID:

START TRANSACTION;

INSERT INTO user(username,password)

VALUES (username,MD5(password));

SELECT LAST_INSERT_ID() INTO id;

COMMIT;

ORACLE中是使用 SEQUENCE;

oracle所有函數(shù)

1. ascii??

返回與指定的字符對應(yīng)的十進制數(shù);

SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

A???????? A????? ZERO???? SPACE

--------- --------- --------- ---------

65??????? 97??????? 48??????? 32

2.CHR

給出整數(shù),返回對應(yīng)的字符;

SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C

-- -

趙 A

3.INITCAP

返回字符串并將字符串的第一個字母變?yōu)榇髮?

SQL> select initcap('smith') upp from dual;

UPP

-----

Smith

4.LOWER

返回字符串,并將所有的字符小寫

SQL> select lower('AaBbCcDd')AaBbCcDd from dual;

AABBCCDD

--------

aabbccdd

5.UPPER

返回字符串,并將所有的字符大寫

SQL> select upper('AaBbCcDd') upper from dual;

UPPER

--------

AABBCCDD

6.RPAD和LPAD(粘貼字符)

RPAD? 在列的右邊粘貼字符

LPAD? 在列的左邊粘貼字符

SQL> select lpad(rpad('jack',10,'*'),17,'*')from dual;

LPAD(RPAD('JACK',1

-----------------

*******jack******

不夠字符則用*來填滿

7.LTRIM和RTRIM

LTRIM? 刪除左邊出現(xiàn)的字符串

RTRIM? 刪除右邊出現(xiàn)的字符串

SQL> select ltrim(rtrim('? jack? ',' '),' ') from dual;

LTRIM(RTRIM('

-------------

jack

所有函數(shù)鏈接:http://www.shouce.ren/api/oracle/#

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逸邦,一起剝皮案震驚了整個濱河市恩沛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缕减,老刑警劉巖雷客,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桥狡,居然都是意外死亡搅裙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門裹芝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來部逮,“玉大人,你說我怎么就攤上這事嫂易⌒峙螅” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵怜械,是天一觀的道長颅和。 經(jīng)常有香客問我,道長缕允,這世上最難降的妖魔是什么融虽? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮灼芭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘般又。我一直安慰自己彼绷,他們只是感情好巍佑,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著寄悯,像睡著了一般萤衰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猜旬,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天脆栋,我揣著相機與錄音,去河邊找鬼洒擦。 笑死椿争,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的熟嫩。 我是一名探鬼主播秦踪,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掸茅!你這毒婦竟也來了椅邓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤昧狮,失蹤者是張志新(化名)和其女友劉穎景馁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體逗鸣,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡合住,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了慕购。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聊疲。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沪悲,靈堂內(nèi)的尸體忽然破棺而出获洲,到底是詐尸還是另有隱情,我是刑警寧澤殿如,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布贡珊,位于F島的核電站,受9級特大地震影響涉馁,放射性物質(zhì)發(fā)生泄漏门岔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一烤送、第九天 我趴在偏房一處隱蔽的房頂上張望寒随。 院中可真熱鬧,春花似錦、人聲如沸妻往。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讯泣。三九已至纫普,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間好渠,已是汗流浹背昨稼。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拳锚,地道東北人假栓。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像晌畅,于是被迫代替她去往敵國和親但指。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容