近期使用Oracle数据库的一些吐槽(兼与MySQL的对比)

mysql 和 oracle (11g版本)的一些差异

mysql的写法比oracle自由很多,兼容性比较强

  1. oracle的表名起别名不能用as,列的别名可以用as;mysql没有限制
  2. oracle的日期时间只有两种类型,1date(精确到时分秒),2timestamp(更高精度)
    而且,存储的时间格式比较怪,要转为习惯的格式的话,是这样的写的 to_char(date,'yyyy-mm-dd hh24:mi:ss')
    对应的Java是这样的 yyyy-MM-dd HH:mm:ss
  3. 用了聚合函数,group by要接很多字段(几乎全部)
  4. Oracle和mysql的很多函数不一样,字符和时间转换相关的,Oracle中是to_char和to_date
  5. Oracle表建立后,字段位置不允许改变,而MySQL可以,参见 https://blog.csdn.net/ttxsely/article/details/74842716
  6. MySQL和Oracle自增字段的不同。MySQL默认innodb引擎,可以实现主键自增;而Oracle要实现相同的功能则比较麻烦,需要创建列对应的序列,并创建列对应的触发器
    此外,Oracle的插入语句,自增主键也不能为空,需要填入自增的主键值,要用序列来获得,序列名.nextval。
  7. Oracle和mysql的字符串连接方式不一样。Oracle多个字符串连接,使用||连接符 或 concat函数(concat函数只能连接两个字符串);
    mysql中的+号仅作运算符,故mysql中的字符串连接使用concat函数,可以连接多个字符串

oracle的一些保留字:
date、user

  1. Oracle实现自增长主键比较麻烦,需要创建对应字段的序列sequence,还要创建对应的触发器;不像MySQL那样可以简单的auto increase(且Oracle进行insert的时候,不能忽略主键,具体参见上面的6)
    所以,Oracle主键的话,个人感觉,适合使用UUID(oracle的sql developer软件,可以使用列序列,这样可以一键创建自增长主键)
  2. Oracle中可变字符串类型,推荐使用varchar2
posted @ 2019-07-01 16:51  AloeAndClover  阅读(399)  评论(0编辑  收藏  举报