Mysql与Oracle 的对比

MysqlOracle 的对比

区别点

Mysql

Oracle

数据类型

CHAR:定长字符串,适合主键

VARCHAR:变长字符串

FLOAT,     数值型

 DOUBLE,  数值型             

DATE ,      日期型         

 INT         整型  

 

字符类型 char 定长字符类型 varchar可变长的字符类型  varchar2 可变长的字符类型

二进制大对象 BLOB 主要用来存储图片,音频,视频....

文本大对象 CLO主要用来存放大文本

Date

数字类型 number

 

主键自动增长

Auto_increment 主键必须是整型才可以自增长

如creat TABLE t1 (tid INT (10) PRIMARY KEY auto_increment,

tname varchar (10),tage int(2));

Oracle 中给主键设置自增长,先设序列,在设置触发器.

引号的处理

 MYSQL里可以用双引号包起字符串,

ORACLE只可以用单引号包起字符串在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号

分页

limit是mysql的语法
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。limit 2,4
即取出第3条至第6条,4条记

Oracle 中用rownum .取前n条数据,oracle中用rownum < m;

1:其中m-1 等于要取的条数

2:rownum 只能有 < ,<= ,没有 >

3: 如m为6,则取得是前5条数据。

 日期字段

MYSQL日期字段分DATE和TIME两种

ORACLE日期字段只有DATE,包含年月日时分秒信息

空字符的处理

MYSQL的非空字段也有空的内容

如:name != ""这样在mysql下不会报错

ORACLE里定义了非空字段就不容许有空的内容 。 如果为NULL或空字符,需要把它改成一个空格的字符串。如:oracle下的要换成name is not null 

Sql语句group by

Mysql不要求group by 后的字段 一定要出现在select 后面

oracle中sql 的group by 后的字段 一定要出现在select 后面

开源项目

MySQL是开源的项目

付费

SQL语法的不同

MySQL较为灵活

Oracle较为严格

 

 

 

事务

事务的提交

MySQL默认是自动提交

 

Oracle默认不自动提交,需要用户手动提交

 

事务隔离级别

MySQL是可重复读

 

读已提交

对事务的支持

MySQL在innodb存储引擎的行级锁的情况下才可支持事务

Oracle则完全支持事务

 

保存数据的持久性

MySQL是在数据库更新或者重启,则会丢失数据

Oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复

用户权限

放在mysql 自己的mysql 库中

oracle 的权限是跟着表空间走的

原文地址:https://www.cnblogs.com/2016-cxp/p/10702468.html