有時(shí)候用這兩種數(shù)據(jù)庫(kù)很頭痛, 總結(jié)了一些它們的不同。希望有心人更正補(bǔ)全,方便自己,方便大家*.
*. 做單獨(dú)的查詢時(shí), Orcale使用一個(gè)叫DUAL的偽表, 而MySQL不需要.
*. MySQL別名不區(qū)分大小寫, MySQL字符比較也不區(qū)別大小寫.
*. 包含null的任何運(yùn)算(is null 除外), 包括null = null, MySQL返回NULL, Oracle(........待定..).
*. Oracle中, 如果列名長(zhǎng)于列限定字符數(shù), 那么輸出的列名會(huì)被截?cái)?
*. MySQL 4.0以后的版本支持UNION和UNION ALL, 但仍不支持INTERSECT和MINUS.
日期:
*. MySQL只支持類似于2002-3-12或者96-12-1的日期格式.
*. 日期運(yùn)算MySQL是用DATE_ADD(date, interval 2 month)這樣的函數(shù)運(yùn)算, 而Oracle用類似于ADD_MONTHS(date, 2)這樣樣的函數(shù)來(lái)運(yùn)算.
*. Oracle可以使用MONTHS_BETWEEN, NEW_TIME, NEXT_DAY這樣的函數(shù)計(jì)算日期.
*. Oracle使用SYSDATE獲得當(dāng)前時(shí)間, MySQL使用NOW();
字符
*. 字符串引用, Oracle只能用單引號(hào), MySQL還可以用雙引號(hào).
*. 用字符型數(shù)據(jù)使用算術(shù)運(yùn)算符, Oracle報(bào)錯(cuò), MySQL會(huì)先將此數(shù)據(jù)轉(zhuǎn)換為數(shù)值.
*. MySQL中"||"符號(hào)默認(rèn)是"或"運(yùn)算符, 連接字符串用函數(shù)CONCAT.
*. MySQL中取得字符ASCII碼用函數(shù)ASCII(), Oracle用CHR();
*. Oracle可以使用INITCAP函數(shù)讓字符串首字母大字.
*. MySQL中使用REPLACE函數(shù)時(shí)必須要寫全三個(gè)參數(shù).
*. REPLACE函數(shù)中, 第二個(gè)和第三個(gè)任一參數(shù)為NULL, MySQL返回NULL; 而Oracle在第二個(gè)參數(shù)為NULL時(shí)會(huì)返回字符串, 第三個(gè)參數(shù)缺少或?yàn)镹ULL時(shí)會(huì)刪除與第二個(gè)參數(shù)匹配的字符.
*. Oracle中可以使用translate來(lái)進(jìn)行字符串替換.
*. Oracle中不可以對(duì)數(shù)值使用length函數(shù). MySQL自動(dòng)將數(shù)值轉(zhuǎn)換為字符.
GROUP BY 和 HAVING
*. Oracle中, 有GROUP BY子句的查詢, SELECT后只能出現(xiàn)聚合函數(shù)或者GROUP BY子句中作為分組條件的列. MySQL可以使用其它列, 該列的值將等于指分組條件在查詢時(shí)第一個(gè)出現(xiàn)的行的該列的值.
*. MySQL中, 同時(shí)包含GROUP BY和HAVING的子句, 只可以在HAVING中使用聚合函數(shù)或者SELECT中作為列表的列; Oracle中可以使用其它列, 這個(gè)列是指該分組的所有行的列. 比如 HAVING col < 5, 指該分組所有行的col列均小于5.
剛開始寫博客! 呵呵,主要是記錄下自己的一些東西,期望和大家交流.
posted on 2008-03-06 14:41
pinuo 閱讀(1588)
評(píng)論(0) 編輯 收藏 所屬分類:
Database