mysql與oracle使用上的區別

主鍵:

MySql一般使用自動增長類型,在創建表的時候只要指定表的主鍵爲auto increment,插入記錄時就不需要再爲主鍵添加記錄了,主鍵會自動增長。Oracle中沒有自動增長,主鍵一般使用序列,插入記錄時將序列號的下一值付給該字段即可,只是ORM框架只是需要native主鍵生成策略即可。

單引號的處理:

MySql裏可以使用雙引號來包起字符串,Oracle裏要使用單引號包起字符串。

分頁查詢:

這個應該是兩者最明顯的區別了,很多人都知道MySql中分頁很簡單,因爲他有專門的關鍵字limit來實現分頁查詢;

但是Oracle裏面沒有這種關鍵字來實現分頁查詢的,所以它實現起來就比MySql要繁瑣得多了,在每個結果集中只有一個rownum字段標明它的位置,並且只能用rownum<=某個數,不能用rownum>=某個數,因爲ROWNUM是僞列,在使用時所以需要爲ROWNUM取一個別名,變成邏輯列,然後來操作。select * from (select ROWNUM as num,A.* from (select * from test) A where ROWNUM <=40) where num >= 20; 這是這兩者的最大的不同。

數據類型

Oracle中的整型,number(),字符串類型,varchar2()

MySQL中的整型,int(),字符串類型,varchar()

日期

Oracle中的日期,to_date()字符串轉日期,to_char()日期轉字符串,last_day()月的最後一天,add_months()對指定的日期加上指定月,months_between()相差的月,next_day()返回給定日期第二天開始一週內

的指定周幾的日期。

MySQL中的日期,date(),time(),timedate(),timestamp(),Year()

空值

MySQL中的null值處理,用ifnull(),一般用法ifnull(comm,0);

Oracle中的空值處理,用NVL()兩個參數,NVL2()三個參數,其中null在Oracle中最大,在MySQL中最小

去空

MySQL中只有trim(),Oracle中有trim(),ltrim(),rtrim()

分組

group up在Oracle中後面要跟出現的所有字段名,MySQL中可以跟單獨字段

其他

對事務的提交
MySQL默認是自動提交,而Oracle默認不自動提交,需要用戶手動提交,需要在寫commit;指令或者點擊commit按鈕

事務隔離級別
MySQL是read commited(已提交讀)的隔離級別,而Oracle是repeatable read(可重複讀)的隔離級別,默認隔離級別不同

對事務的支持
MySQL在innodb存儲引擎的行級鎖的情況下才可支持事務,而Oracle則完全支持事務

保存數據的持久性
MySQL是在數據庫更新或者重啓,則會丟失數據,Oracle把提交的sql操作線寫入了在線聯機日誌文件中,保持到了磁盤上,可以隨時恢復

備份
MySQL邏輯備份時要鎖定數據,才能保證備份的數據是一致的,影響業務正常的dml使用,Oracle邏輯備份時不鎖定數據,且備份的數據是一致

性能診斷
 MySQL的診斷調優方法較少,主要有慢查詢日誌。
 Oracle有各種成熟的性能診斷調優工具,能實現很多自動分析、診斷功能。比如awr、addm、sqltrace、tkproof等    

權限與安全
 MySQL的用戶與主機有關,感覺沒有什麼意義,另外更容易被仿冒主機及ip有可乘之機。
 Oracle的權限與安全概念比較傳統,中規中矩。

管理工具
 MySQL管理工具較少,在linux下的管理工具的安裝有時要安裝額外的包(phpmyadmin, etc),有一定複雜性。
 Oracle有多種成熟的命令行、圖形界面、web管理工具,還有很多第三方的管理工具,管理極其方便高效。

最重要的區別
 MySQL是輕量型數據庫,並且免費,沒有服務恢復數據。
 Oracle是重量型數據庫,收費,Oracle公司對Oracle數據庫有任何服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章