一、语法的不同
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 ORACLEBLOB(220) RAW(220)BLOB (20) RAW(20)BLOG(1024) RAW(1024)VARCHAR(n) VARCHAR2(n)CHAR CHARFLOAT(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