實踐總結: mysql到oracle的一些開發區別

最近與某行合做, 必須用oracle, 幾年沒用了, 因而經歷了mysql到oracle開發上的一些轉換, 簡單總結一下:mysql

1, 數據類型sql

oracle比mysql粗放, 好比mysql的tinyint、bigint、bigdecimal, 在oracle下只能用NUMBER類型來表示了.oracle

2, 空值null和''函數

oracle下null和''是等同的, mysql下二者不等同.ci

3, 自增主鍵 開發

oracle沒有自增主鍵, 不過能夠經過「序列+觸發器」的方式實現.字符串

4, 日期類型的字段嚴謹性it

mysql下日期格式的字符串能夠直接賦值給日期類型, 而oracle下字符串必須顯示轉換成日期類型.table

5, 時間戳自動賦值/更新分頁

mysql的timestamp類型能夠實現自動賦值/更新, oracle沒這個類型和功能.

6, 單引號、雙引號

mysql下字符串的值, 用'' 和"" 均可以, 而oracle字符串的值,只能用單引號''.

7, 分頁

mysql的limit很方便, oracle則必須藉助rownum,並且rownum只適用<=, 所以就有了下面這種臃腫的分頁

SELECT * FROM 
(
SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM TABLE_NAME) A 
WHERE ROWNUM <= 20
)
WHERE RN >= 11

8, 內置函數

這個確定有區別, 好比mysql下的ifNull對應oracle下的NVL

9, DDL

mysql下咱們用慣了drop table if exists的語法, 在oracle下你只能人工去判斷了,這個很不友好.

mysql下字段的註釋能夠緊跟在字段後, 在oracle下你只能在建完表以後再去添加字段註釋.

10, DML

大部分DML語法同樣, 但有一些仍是不一樣, 好比批量插入

//區別遠不止上面這些, 一句話oracle是重量級的.

相關文章
相關標籤/搜索