bigint移植oracle报错,MySql和oracle的不同

本文详细对比了MySQL与Oracle在语法、字段类型和使用习惯上的主要区别,包括分页方式、自增主键、空值判断、数据类型转换等方面,并提供了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

原文:http://www.cnblogs.com/george93/p/7808490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值