MySQL與Oracle的區別之我見


1. 大的方面(宏觀)

Oracle為商用數據庫,行業中占據相當的地位:市場占比2012年為40%。開發、管理資源相當豐富,有自己的metalink,我也曾用過,有什么問題,都能在那里得到較快速度的解決。開發用了近10年,雖然有些功能用起來挺雞肋的(像分頁),但它在OLTP/OLAP等方面確實都非常出色。我們一般項目中至少有兩個Oracle數據庫:聯機事務處理(OLTP)數據庫,聯機分析處理數據庫(OLAP),通過配置實現這兩個數據庫的同步。

Oracle具有良好的兼容性、可移植性、可連接性和高生產率使Oracle RDBMS具有良好的開放性。

MySQL為非商用開源數據庫,雖然目前也有商用版本,但具體情況不了解,沒用過商用的,只用過免費版本。也沒試過大數據量。所以,感覺還行吧。中、小型項目使用絕對沒問題。據說facebook這樣的大型網站也用MySQL做數據庫了,但我在大型項目中真心沒用過,無發言權。

2. 小的方面(語法等)

  • mysql可以實現自增長主鍵(通過字段的auto_increment屬性);Oracle則需要通過序列(Sequence)來實現。
  • mysql可以用雙引號來引用字符串(當然單引號也行);Oracle只能用單引號。
  • mysql在查詢語句中可以通過limit [offset,] <row count>來直接分頁;而Oracle需要使用rownum偽列,且需要注意陷阱,具體參考:Oracle中ROWNUM的使用技巧(轉)
  • mysql對於真假的判斷,0為假1為真;Oracle則是用true/false。
  • mysql的查詢可以 select sysdate(); ;而Oracle需要引用虛表(select sysdate from dual;)。
  • mysql一個數據庫在我的理解,相當於Oracle的一個用戶(schema)。
  • mysql中備份命令:mysqldump,執行結果是一個sql文件;oracle備份命令:dpdump,執行結果是一個dmp文件。前件是文本sql命令,可以直接導入到其它mysql數據庫,甚至可以稍作修改導入到其它類型的數據庫;后者導出文件是二進制的,只能Oracle自己用(甚至還有版本限制)。
  • mysql中的命令默認是直接commit的;Oracle默認不是。
  • mysql中注釋行以“#“開始;Oracle以“--“開始。
  • mysql中日期的轉換用dateformat()函數;Oracle用to_date()與to_char()兩個函數。
  • mysql中多個字符串的連接用concat();一般Oracle中用“||“連接多個字符串,它也有concat(),但它只能有兩個參數。
  • mysql中查詢信息多用:show tables;格式的命令;Oracle中用select * from user_tables;格式的命令查詢數據。
  • mysql在Windows環境下大小寫是不敏感的;unix/linux環境下,對數據庫名、表名大小寫敏感,列名大小寫不敏感。Oracle則不論環境大小寫都不敏感。
  • mysql執行銳腳本命令:mysql>source a.sql; ;Oracle中執行外部命令:SQL>@a.sql
  • mysql支持枚舉類型(enum)、集合類型(set);Oracle不直接支持,需要使用外鍵等其它手段實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM