oracle&mysql對(duì)比

oracle&mysql對(duì)比


數(shù)據(jù)類型對(duì)比

1.字符型

mysql的字符型根據(jù)長(zhǎng)度和是否定長(zhǎng)分為了很多類型,常見(jiàn)的有char,varchar,以及各種不定長(zhǎng)的text和blob(tiny,medium,long)炒瘸。

oracle常用的字符型就是nvarchar2和varchar2,其實(shí)還有數(shù)據(jù)類型是varchar和nvarchar,但是實(shí)在舊版本的oracle里面使用,而且無(wú)法解析中文,因此我們常用的是nvarchar2和varchar,對(duì)于比較大的字符串干旧,會(huì)在后面提到長(zhǎng)字符串的處理雨女。

2.數(shù)字型

mysql內(nèi)根據(jù)根據(jù)整數(shù)和浮點(diǎn)數(shù)分為了int和double,根據(jù)數(shù)據(jù)范圍類似字符型也分為了tiny,medium,long之類的松忍。

oracle里主要使用number(p,s)和float(126位二進(jìn)制)致开。

3.日期類型

mysql內(nèi)的數(shù)據(jù)類型包括date,datetime,timestamp三種類型弦撩,且插入方式可以是字符串或者時(shí)間文虏。

oracle內(nèi)的時(shí)間類型分為date和timestamp,插入時(shí)必須把時(shí)間格式的字符串轉(zhuǎn)換成時(shí)間類型文件瞒瘸。

同樣的,從oracle里取出時(shí)間的時(shí)候,如果不進(jìn)行處理,會(huì)根據(jù)不同的IDE將它解析成不同的格式,因此取出時(shí)間的時(shí)候需要將它轉(zhuǎn)換成字符串(to_char函數(shù))坷备。

4.長(zhǎng)字符串處理

長(zhǎng)字符串常用的字段類型是clob和blob,區(qū)別在于clob直接存儲(chǔ)文字情臭,blob是按照二進(jìn)制存儲(chǔ)省撑。

無(wú)論是clob還是blob的存儲(chǔ)范圍都是0-4G。

因此在存儲(chǔ)的時(shí)候俯在,純文本信息(如文章或者較長(zhǎng)的文字)直接使用clob存儲(chǔ)竟秫。而音樂(lè)、圖片跷乐、文件等信息先轉(zhuǎn)換成二進(jìn)制肥败,再存儲(chǔ)進(jìn)blob。


自增主鍵問(wèn)題

oracle沒(méi)有自增主鍵的設(shè)置愕提,如果需要設(shè)置自增主鍵馒稍,需要自己來(lái)通過(guò)自加序列和觸發(fā)器來(lái)配合設(shè)置自增主鍵。(http://blog.csdn.net/chaishen10000/article/details/12219103

CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加幾個(gè) 

START WITH 1 -- 從1開(kāi)始計(jì)數(shù)

NOMAXVALUE -- 不設(shè)置最大值

NOCYCLE -- 一直累加浅侨,不循環(huán)

NOCACHE -- 不建緩沖區(qū) 

以上代碼完成了一個(gè)序列(sequence)的建立過(guò)程纽谒,名稱為emp_sequence,范圍是從1開(kāi)始到無(wú)限大(無(wú)限大的程度是由你機(jī)器決定的)仗颈,nocycle是決定不循環(huán)佛舱,如果你設(shè)置了最大值那么你可以用cycle,使seq到最大之后循環(huán)椎例。

對(duì)于nocache,如果你給出了cache值那么系統(tǒng)將自動(dòng)讀取你的cache值大小個(gè)seq,這樣在反復(fù)操作時(shí)會(huì)加快運(yùn)行速度,但如果遭遇意外情況如當(dāng)機(jī)了或oracle死了请祖,則下次取出的seq值將和上次的不連貫(如果連不連貫無(wú)所謂建議用cache)订歪。

其次建立觸發(fā)器,在向表內(nèi)部插入數(shù)據(jù)前觸發(fā)肆捕。(以表'example'為例)

CREATE TRIGGER trigger_name 
BEFORE 
    INSERT ON example FOR EACH ROW WHEN (new.id is null) 
begin 
    select emp_sequence.nextval into :new.id from dual; 
end; 

也可以不通過(guò)觸發(fā)器刷晋,直接在sql語(yǔ)句內(nèi)部實(shí)現(xiàn)。(不建議)

INSERT INTO example(id,Name,phone,address) 
Values(emp_sequence.nextval,'wxb','54483','wh')慎陵;

分頁(yè)問(wèn)題

1.mysql中的分頁(yè)

較為簡(jiǎn)單的做法(隨著數(shù)據(jù)量的增大眼虱,效率會(huì)變低)

select * from tablename order by id desc 
limit (page-1)*pageSize, pageSize;  

較為高效的做法

select * from tablename 
where id>=
(
    select id from tablename order by id limit (page-1)*pageSize, 1
) 
limit pageSize;  
2.oracle中的分頁(yè)

在oracle中分頁(yè)處理比較麻煩

每個(gè)結(jié)果集只有一個(gè)ROWNUM字段標(biāo)明它的位置, 并且只能用類似ROWNUM<100, 而不能用ROWNUM>80。

select * from 
(
    select t.*,rownum as rn from 
    (select * from tablename) as t where rownum<=page*pageSize
) 
where rn>(page-1)*pageSize; 

組函數(shù)用法規(guī)則

組函數(shù)(如count,max,min)之類的函數(shù)在mysql里面可以隨意使用席纽,但是如果在oracle里面使用捏悬,其他的字段必須處理過(guò),或者經(jīng)過(guò)group by子句經(jīng)過(guò)分類润梯。

例如:

select name,max(age) from user;

這行sql在mysql里面是可以正常執(zhí)行的过牙,但是在oracle里面不能執(zhí)行。

select name,max(age) from user group by name;

而經(jīng)過(guò)加入group by 將列name進(jìn)行分組之后就可以正常執(zhí)行了纺铭。


空字符的處理

mysql非空字段的內(nèi)容可以有空的內(nèi)容寇钉,而oracle里面非空字段不容許有空的內(nèi)容,因此導(dǎo)入數(shù)據(jù)的時(shí)候需要對(duì)空字符判斷舶赔。


Mybatis JdbcType與Oracle扫倡、MySql數(shù)據(jù)類型對(duì)應(yīng)列表

Mybatis JdbcType Oracle MySql
JdbcType ARRAY
JdbcType BIGINT BIGINT
JdbcType BINARY
JdbcType BIT BIT
JdbcType BLOB BLOB BLOB
JdbcType BOOLEAN
JdbcType CHAR CHAR CHAR
JdbcType CLOB CLOB CLOB
JdbcType CURSOR
JdbcType DATE DATE DATE
JdbcType DECIMAL DECIMAL DECIMAL
JdbcType DOUBLE NUMBER DOUBLE
JdbcType FLOAT FLOAT FLOAT
JdbcType INTEGER INTEGER INTEGER
JdbcType LONGVARBINARY
JdbcType LONGVARCHAR LONG VARCHAR
JdbcType NCHAR NCHAR
JdbcType NCLOB NCLOB
JdbcType NULL
JdbcType NUMERIC NUMERIC/NUMBER NUMERIC/
JdbcType NVARCHAR
JdbcType OTHER
JdbcType REAL REAL REAL
JdbcType SMALLINT SMALLINT SMALLINT
JdbcType STRUCT
JdbcType TIME TIME
JdbcType TIMESTAMP TIMESTAMP TIMESTAMP
JdbcType TINYINT TINYINT
JdbcType UNDEFINED
JdbcType VARBINARY
JdbcType VARCHAR VARCHAR VARCHAR

mapper中的對(duì)比

1. 模糊查詢
oracle:

<select id="searchUserBySearchName" parameterType="java.lang.String"      resultType="com.urm.entity.User">  
  select * from t_user where user_name like CONCAT('%',#{search_name},'%')  
</select>  

<select id="searchUserBySearchName" parameterType="java.lang.String" resultType="com.urm.entity.User">  
  select * from t_user where user_name like '%'||#{search_name}||'%'   
</select>  

mysql:
<select id="searchUserBySearchName" parameterType="java.lang.String" resultType="com.urm.entity.User">  
  select * from t_user where user_name like CONCAT('%',#{search_name},'%')  
</select>  
2. 批量更新
oracle:
<updateidupdateid="batchUpdate" parameterType="java.util.List">  

     <foreach collection="list" item="item" index="index" open="begin" close="end;" separator=";">  
              updatetest  
              <set>  
                test=${item.test}+1  
              </set>  
              whereid = ${item.id}  
     </foreach>  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市竟纳,隨后出現(xiàn)的幾起案子撵溃,更是在濱河造成了極大的恐慌,老刑警劉巖蚁袭,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件征懈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡揩悄,警方通過(guò)查閱死者的電腦和手機(jī)卖哎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)删性,“玉大人亏娜,你說(shuō)我怎么就攤上這事〉磐Γ” “怎么了维贺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵浇衬,是天一觀的道長(zhǎng)蛋叼。 經(jīng)常有香客問(wèn)我鱼喉,道長(zhǎng)窍帝,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任垃沦,我火速辦了婚禮客给,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肢簿。我一直安慰自己靶剑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布池充。 她就那樣靜靜地躺著桩引,像睡著了一般。 火紅的嫁衣襯著肌膚如雪收夸。 梳的紋絲不亂的頭發(fā)上坑匠,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音咱圆,去河邊找鬼笛辟。 笑死功氨,一個(gè)胖子當(dāng)著我的面吹牛序苏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捷凄,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼忱详,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了跺涤?” 一聲冷哼從身側(cè)響起匈睁,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桶错,沒(méi)想到半個(gè)月后航唆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡院刁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年糯钙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片退腥。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡任岸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狡刘,到底是詐尸還是另有隱情享潜,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布嗅蔬,位于F島的核電站剑按,受9級(jí)特大地震影響疾就,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艺蝴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一虐译、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吴趴,春花似錦漆诽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至撇叁,卻和暖如春供鸠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陨闹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工楞捂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趋厉。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓寨闹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親君账。 傳聞我的和親對(duì)象是個(gè)殘疾皇子繁堡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,795評(píng)論 0 11
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法乡数,內(nèi)部類的語(yǔ)法椭蹄,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法净赴,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,587評(píng)論 18 399
  • 什么是數(shù)據(jù)庫(kù)绳矩? 數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫(kù)具有一個(gè)或多個(gè)不同的API玖翅,用于創(chuàng)建翼馆,訪問(wèn),管理...
    chen_000閱讀 4,030評(píng)論 0 19
  • 以前的看電影烧栋,據(jù)分析還是小青年擠眉弄眼写妥,談情說(shuō)愛(ài),曖昧表白的時(shí)候审姓,那時(shí)候珍特,大城市及港臺(tái)文化沖擊也不小,也教壞了一批...
    瑀軒閱讀 319評(píng)論 0 0
  • 我有一杯水足以慰風(fēng)塵魔吐。 曾扎筒、放在心尖尖上的那人如今在身側(cè)么莱找? 若、回頭重走當(dāng)時(shí)路會(huì)做出哪樣的選擇嗜桌? 我曾渴望永恒奥溺、...
    三水目閱讀 187評(píng)論 0 0