SQL,在這裏我理解成SQL Server。三者是目前市場佔有率最高(依安裝量而非收入)的關係數據庫,並且頗有表明性。排行第四的DB2(屬IBM公司),與Oracle的定位和架構很是類似,就不贅述了。算法
簡單的說,同類的軟件,不一樣的品牌。各有所長,適用範圍不一樣。
像電信,金融,氣象 行業,數據量超大,計算量和周邊要求較高的,使用Oracle,就像Linux環境,比較麻煩 ,須要前提條件多,安全性相對高。
像中個企業,須要快速應用,快速解決問題,花費適中,考慮MSSQL。
互聯網使用Mysql的多,由於免費,可定製性強。最重要緣由是互聯網公司初始創業的時候沒有錢買Oralce,鄙視MSSQL,選擇MYSQL方便又簡單。最終作大了,老的代碼不能改,就一直用下去了。sql
MYSQL只是組件沒Oracle那麼多而已,性能上面差點。可是,能夠作到「知足要求」。因此如今用的多。數據庫
簡單的說,同類的軟件,不一樣的品牌。各有所長,適用範圍不一樣。
像電信,金融,氣象 行業,數據量超大,計算量和周邊要求較高的,使用Oracle,就像Linux環境,比較麻煩 ,須要前提條件多,安全性相對高。
像中個企業,須要快速應用,快速解決問題,花費適中,考慮MSSQL。
互聯網使用Mysql的多,由於免費,可定製性強。最重要緣由是互聯網公司初始創業的時候沒有錢買Oralce,鄙視MSSQL,選擇MYSQL方便又簡單。最終作大了,老的代碼不能改,就一直用下去了。windows
MYSQL只是組件沒Oracle那麼多而已,性能上面差點。可是,能夠作到「知足要求」。因此如今用的多。緩存
做者:晨鐘暮鼓
連接:https://www.zhihu.com/question/19866767/answer/125814040
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。安全
Oracle與Mysql的區別:
Oracle:客戶端與命令窗口都是由用戶決定的;是大型數據庫,市場佔有率達40%;價格很是高,佔據特別大的內存空間和其餘機器性能,安裝完後又3G左右
Mysql:客戶端與命令窗口都是由數據庫決定的;是中小型數據庫,市場佔有率是20%,開源且免費的,安裝完後152M
操做上的區別:
一、組函數用法規則:
MySQL中組函數在select語句中能夠隨意使用,但在Oracle中若是查詢語句中有組函數,那其餘列名必須是組函數處理過的,或者是group by子句中的列不然報錯服務器
二、自動增加的數據類型處理:
MySQL有自動增加的數據類型,插入記錄時不用操做此字段,會自動得到數據值。Oracle沒有自動增加的數據類型,須要創建一個自動增加的序列號,插入記錄時要把序列號的下一個值賦於此字段。
三、單引號的處理:
mySql用雙引號包起字符串,Oracle裏用單引號包起字符串,在插入和修改字符串前必須作單引號的替換:把全部出現的一個單引號替換成兩個單引號。
四、翻頁的SQL語句的處理:
語句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 條件1 ORDER BY 條件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 條件3;架構
語句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (SELECT [FIELD_NAME,...] FROM TABLE_NAME WHERE 條件1 ORDER BY 條件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 條件3;
五、長字符串的處理:
插入修改記錄前必定要作進行非空和長度判斷,不能爲空的字段值和超出長度字段值都應該提出警告
六、主鍵
MySQL通常使用自動增加類型,在建立表時只要指定表的主鍵爲auto increment,插入記錄時,不須要再指定該記錄的主鍵值,MySQL將自動增加;Oracle沒有自動增加類型,主鍵通常使用的序列,插入記錄時將序列號的下一個值付給該字段便可;只是ORM框架是隻要是native主鍵生成策略便可。
七、字符串的模糊比較
mySql裏字段名like%'字符串'%,用字符串比較函數instr(字段名,'字符串')>0會獲得更精確的查找結果。
八、空字符的處理
MySQL的非空字段也有空的內容,Oracle裏定義了非空字段就不允許有空的內容。按MySQL的NOT NULL來定義Oracle表結構,導數據的時候會產生錯誤。所以導數據時要對空字符進行判斷,若是爲NULL或空字符,須要把它改爲一個空格的字符串。併發