MySql和oracle的不同

Posted George93_部落格

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql和oracle的不同相关的知识,希望对你有一定的参考价值。

一、语法的不同

  1、oracle没有offet,limit关键字,所以在oracle中要分页的话,要换成rownum

  2、oracle建表时,没有auto_increment,所有要想让表的主键自增,要自己添加序列。

  3、oracle有一个dual表,当select后没有表时,加上的。不加会报错的。select 1 这个在mysql不会报错的,oracle下会。select 1 from dual这样的话,oracle就不会报错了。

  4、对空值的判断,name != ""这样在mysql下不会报错的,但是oracle下会报错。在oracle下的要换成name is not null

  5、oracle下对单引号,双引号是有要求的,一般不准用双引号,用了会报错(ERROR at line 1: ORA-00904: "t": invalid identifier),而mysql就没有这样的限制。

  6、oracle表的字段是number型的,如果你$post得到的参数是123456,入库的时候,你需要用to_number,to_date这样的函数来强制转换一下,不然后会被当成字符串来处理。而mysql却不会。

  7、group_concat这个函数,oracle是没有的,如果要想用自已写方法。

  8、mysql的用户权限管理,是放到mysql自动带的一个数据库mysql里面的,而oracle是用户权限是根着表空间走的。(这点我感觉要好好理解下)

  9、在oracle下用group by的话,group by后面的字段必须在select后面出现,不然会报错的,而mysql却不会。

  10、mysql存储引擎有好多,常用的mysiam,innodb等,而创建oracle表的时候,好像只有一个存储引擎。

  11、oracle字段无法选择位置,alter table add column before|after,这样会报错的,即使你用sql*plus这样的工具,也没法改字段的位置。

  12、oracle的表字段类型也没有mysql多,并且有很多不同,例如:mysql的int,float对应oracle的number型等。

  13、oracle查询时from 表名后面 不能加上as不然会报错的,select t.username from test as t而在mysql下是可以的。

  14、oracle中是没有substring这个函数的,mysql是有的。

 

二、mysql移植到oracle中的表类型转换

MYSQL                  ORACLE
BLOB(220)             RAW(220)
BLOB (20)             RAW(20)
BLOG(1024)             RAW(1024)
VARCHAR(n)             VARCHAR2(n)
CHAR                   CHAR
FLOAT(22,6)            NUMBER(22,6)
DOUBLE(44,12)          NUMBER(44,12)
TINYINT (3)            NUMBER(3)
SMALLINT(5)            NUMBER(5)
MEDIUMINT(8)           NUMBER(8)
INT(10)                NUMBER(10)
BIGINT(20)             NUMBER(20)
DATATIME               DATA

 

 

附录:

      参见大神的博客: http://www.cnblogs.com/HondaHsu

以上是关于MySql和oracle的不同的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Toad for Oracle 中使用自定义代码片段?

oracle和mysql获取当前时间的不同

MySql和Oracle的日期转换到底有哪些不同?我们来比较一下

oracle的批量插入和mysql的批量插入不一致,mybatis要怎么做兼容

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

MySQL和Oracle在索引名称唯一性方面的不同设计