MySql和oracle的不同

本文对比了MySQL与Oracle两种数据库管理系统在语法上的不同之处,包括分页、自增字段、空值判断等方面的区别,并提供了从MySQL到Oracle的表类型转换指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、语法的不同

  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

转载于:https://www.cnblogs.com/george93/p/7808490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值