一、并发性(行锁的区别)
mysql的InnoDB存储引擎虽然支持行锁,但是当表无索引或者sql语句索引失效时,
行锁会变成表锁。
oracle行锁,不依赖于表的索引
二、事务
mysql的MyISAM存储引擎不支持事务,在InnoDB存储引擎下才支持事务
oracle完全支持事务
三、事务隔离级别
mysql默认的隔离级别是:可重复读 repeatable read
oracle默认的隔离级别是:不可重复读 read commited
四、备份
mysql要加锁
oracle不用加锁
五、异常恢复
mysql在主机或者数据库异常时,可能会造成数据丢失
oracle若出现执行主机或数据库异常时,会执行在线日志恢复数据。
六、在sql处理上的区别
1、单引号的处理
oracle中的字符串,不能用双引号包裹,只能用单引号
mysql中的字符串,可以用双引号
2、自增长字段
mysql支持自增长的数据类型
oracle不支持,它的自增长功能是通过建立一个自增长的序号来完成
--创建序列
create sequence SEQ_T_RECV
minvalue 1
maxvalue 9999999
start with 1
increment by 1
cache 50;
--查看序列当前值
select seq_t_recv.nextval from dual;
3、事务的处理
mysql的事务默认是自动提交的
oracle事务默认要手动提交
4、sql灵活性
mysql
支持一次insert多条记录
oracle 一次只能insert一条数据
5、翻页处理方式不同
mysql用limit关键字可以方便处理翻页功能
select * from table limit (pageNo-1)*pageSize,
pageSize
;
其中
pageNo
是页码,
pageSize
是每页显示的条数
oracle翻页比较复杂
(
SELECT
ROWNUM AS NUMROW,
c.*
FROM
(
SELECT
[ FIELD_NAME ,...]
FROM
TABLE_NAME
WHERE
条件1
ORDER BY
条件2
) c
)
WHERE
NUMROW > 80
AND NUMROW < 100