隨業務增長,MySQL 面臨連接緩慢、宕機等瓶頸,需遷移至 Oracle。應用層需同步調整,以下總結七大關鍵差異點。
MySQL: AUTO_INCREMENT。
Oracle: 需創建序列 CREATE SEQUENCE seq_name INCREMENT BY 1 START WITH 1 MAXVALUE 999999 NOCACHE;,插入時用 seq_name.NEXTVAL。
MySQL 支持雙引號,Oracle 僅支持單引號。單引號需轉義為兩個單引號('')。
MySQL: LIMIT offset, count。
Oracle: 需嵌套 ROWNUM 子查詢,典型寫法:
SELECT * FROM (
SELECT ROWNUM rn, t.* FROM (
SELECT * FROM table WHERE 條件 ORDER BY 排序
) t WHERE ROWNUM <= 100
) WHERE rn > 80;
Oracle INSERT/UPDATE 單次操作 ≤4000 字節,超長需用 CLOB 配合 DBMS_LOB 包處理,並做非空、長度校驗。
MySQL: DATE_SUB(NOW(), INTERVAL 7 DAY)。
Oracle: SYSDATE - 7;格式化用 TO_DATE/TO_CHAR,格式串如 YYYY-MM-DD HH24:MI:SS。
MySQL 非空字段可存空字符串 '',Oracle 非空字段不允許 NULL 也不可存空串。導數據時需將空值轉為單空格 ' '。
MySQL LIKE 可用索引(前綴匹配)。Oracle LIKE 不走索引,建議用 INSTR(col, 'str') > 0 獲更佳性能。
存儲過程/函數中操作完需顯式關閉游標、釋放結果集,避免資源洩漏。