mysql与oracle使用上的区别

主键:

MySql一般使用自动增长类型,在创建表的时候只要指定表的主键为auto increment,插入记录时就不需要再为主键添加记录了,主键会自动增长。Oracle中没有自动增长,主键一般使用序列,插入记录时将序列号的下一值付给该字段即可,只是ORM框架只是需要native主键生成策略即可。

单引号的处理:

MySql里可以使用双引号来包起字符串,Oracle里要使用单引号包起字符串。

分页查询:

这个应该是两者最明显的区别了,很多人都知道MySql中分页很简单,因为他有专门的关键字limit来实现分页查询;

但是Oracle里面没有这种关键字来实现分页查询的,所以它实现起来就比MySql要繁琐得多了,在每个结果集中只有一个rownum字段标明它的位置,并且只能用rownum<=某个数,不能用rownum>=某个数,因为ROWNUM是伪列,在使用时所以需要为ROWNUM取一个别名,变成逻辑列,然后来操作。select * from (select ROWNUM as num,A.* from (select * from test) A where ROWNUM <=40) where num >= 20; 这是这两者的最大的不同。

数据类型

Oracle中的整型,number(),字符串类型,varchar2()

MySQL中的整型,int(),字符串类型,varchar()

日期

扫描二维码关注公众号,回复: 11338667 查看本文章

Oracle中的日期,to_date()字符串转日期,to_char()日期转字符串,last_day()月的最后一天,add_months()对指定的日期加上指定月,months_between()相差的月,next_day()返回给定日期第二天开始一周内

的指定周几的日期。

MySQL中的日期,date(),time(),timedate(),timestamp(),Year()

空值

MySQL中的null值处理,用ifnull(),一般用法ifnull(comm,0);

Oracle中的空值处理,用NVL()两个参数,NVL2()三个参数,其中null在Oracle中最大,在MySQL中最小

去空

MySQL中只有trim(),Oracle中有trim(),ltrim(),rtrim()

分组

group up在Oracle中后面要跟出现的所有字段名,MySQL中可以跟单独字段

其他

对事务的提交
MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮

事务隔离级别
MySQL是read commited(已提交读)的隔离级别,而Oracle是repeatable read(可重复读)的隔离级别,默认隔离级别不同

对事务的支持
MySQL在innodb存储引擎的行级锁的情况下才可支持事务,而Oracle则完全支持事务

保存数据的持久性
MySQL是在数据库更新或者重启,则会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复

备份
MySQL逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用,Oracle逻辑备份时不锁定数据,且备份的数据是一致

性能诊断
 MySQL的诊断调优方法较少,主要有慢查询日志。
 Oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等    

权限与安全
 MySQL的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
 Oracle的权限与安全概念比较传统,中规中矩。

管理工具
 MySQL管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。
 Oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。

最重要的区别
 MySQL是轻量型数据库,并且免费,没有服务恢复数据。
 Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。

猜你喜欢

转载自blog.csdn.net/qq_38186465/article/details/102728367