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不直接支持,需要使用外鍵等其它手段實現。
