1、Oracle数据库产品是闭源同时也是收费的,MySQL是开源的项目(免费);
2、Oracle是大型数据库,Mysql是中小型数据库;
3、Oracle可以设置用户权限、访问权限、读写权限等,MySQL没有;
4、Oracle有表空间的概念,MySQL没有;
5、Oracle默认不自动提交,需要用户手动提交。Mysql默认是自动提交。
6、Oracle逻辑备份时不锁定数据,且备份的数据是一致的。Mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常使用。
7、Oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等;Mysql的诊断调优方法较少,主要有慢查询日志。
8、Oracle容量无限,根据配置决定;而MySQL使用MyISAM存储引擎,最大表尺寸为65536TB。 MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由MySQL内部限制决定。
9、Oracle在Linux下的性能,在少量数据时速度低于MySQL,在千万级时速度快于MySQL。
10、Oracle全面,完整,稳定,但一般数据量大,对硬件要求较高 ;而MySQL使用CPU和内存极少,性能很高,但扩展性较差。
11、MySQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数。Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80。
12、MySQL日期字段分DATE和TIME两种,Oracle日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE, 精确到秒。
SQL语句的区别:
1、mysql可以没有from,oracle必须有,可以写成from dual;
2、mysql使用concat()函数连接字符串,oracle不仅有concat()函数,还可以使用||;
3、mysql没有全外连接,使用集合连接代替,oracle有全外连接,而且左右外连接有自己的语法:(+);
4、mysql分页使用limit,oracle分页得借助rownum关键字;
5、mysql自动增长auto_increment,oracle使用序列代替;
6、mysql直接书写循环判断语句,oracle得借助PLSQL语句;
7、mysql判断使用elseif,oracle使用elsif;
8、mysql可以直接增删改,oracle需要commit;
9、group by,在下oracle下用group by的话,group by后面的字段必须在select后面出现,不然会报错的,而mysql却不会;