最近与某行合作, 必须用oracle, 几年没用了, 于是经历了mysql到oracle开发上的一些转换, 简单总结一下:
1, 数据类型
oracle比mysql粗放, 比如mysql的tinyint、bigint、bigdecimal, 在oracle下只能用NUMBER类型来表示了.
2, 空值null和''
oracle下null和''是等同的, mysql下两者不等同.
3, 自增主键
oracle没有自增主键, 不过可以通过“序列+触发器”的方式实现.
4, 日期类型的字段严谨性
mysql下日期格式的字符串可以直接赋值给日期类型, 而oracle下字符串必须显示转换成日期类型.
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是重量级的.