常用功能差異 1. 鎖差異 : • Oracle鎖加在數據塊上 • InnoDB 是在索引上加鎖,所以MySQL鎖的粒度沒有Oracle 精細。 2. 導入導出 : • Oracle採用EXP /IMP ,EXPDP/IMPDP導入導出。 • MySQL採用mysqldump導出,導入可以採用管道或 ...
常用功能差異
- 鎖差異:
• Oracle鎖加在數據塊上
• InnoDB 是在索引上加鎖,所以MySQL鎖的粒度沒有Oracle 精細。 - 導入導出:
• Oracle採用EXP /IMP ,EXPDP/IMPDP導入導出。
• MySQL採用mysqldump導出,導入可以採用管道或source。 - commit:
• Oracle預設手動提交
• MySQL預設自動提交 - SQL 緩存:MySQL只能緩存結果集,不能緩存SQL解析結果
- 資料庫對象:
• Oracle將資料庫對象編譯存儲,直接執行二進位碼
• MySQL只存儲代碼,臨時解析執行,所以MySQL觸發器、存儲過程、函數等對象創建時僅檢查語法,不檢查邏輯 - 事務:
• MySQL不是所有引擎都支持,建議優先使用InnoDB,相比其他引擎有更好的併發性
SQL寫法差異
- 空字元串處理:
• 而Oracle 只有NULL的概念
• MySQL有空字元串 '' 和NULL,空串不等於NULL - 結果集行數限制:
• Oracle使用rownum
• MySQL使用limit; - 執行SQL:
• Oracle需要select func() from dual;
• MySQL可以直接select func(); - 修改欄位類型或長度:
• Oracle:alter table tablename modify column ...;
• MySQL:alter table tablename modify (...); - 複製數據:
• Oracle的as是必選,create table table1 as select * from table2;
• MySQL的as是可選,create table table1 select * from table2; - 字元串處理:
• Oracle里用單引號包起字元串
• MySQL用雙引號包起字元串