mysql和oracle的sql区别有什么_java和oracle的关系

mysql和oracle的sql区别有什么_java和oracle的关系一、mysql和oracle宏观上的区别:1、mysql与oracle都是关系型数据库,应用于各种平台。mysql最开始是一个瑞典公司开发的,但后来被sun公司收购,后来sun又被oracle收购,所以现在可以说mysql属于甲骨文公司了,mysql开源免费的,而oracle则是收费的,并且价格非常高。mysql默认端口:3306,默认用户:rootoracle默认端口:1521,默认用户:systemmysql的安装卸载很简单,oracle很麻烦,安装所用的空间差别也是很大的,mysql安装后

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、mysql和oracle宏观上的区别:

1、mysql与oracle都是关系型数据库,应用于各种平台。mysql最开始是一个瑞典公司开发的,但后来被sun公司收购,后来sun又被oracle收购,所以现在可以说mysql属于甲骨文公司了,mysql开源免费的,而oracle则是收费的,并且价格非常高。

  • mysql默认端口:3306,默认用户:root
  • oracle默认端口:1521,默认用户:system

mysql的安装卸载很简单,oracle很麻烦,安装所用的空间差别也是很大的,mysql安装后差不多一两百兆,而oracle则有3G左右,且使用的时候oracle占用特别大的内存空间和其他机器性能。

  • mysql登录:mysql -hlocalhost -uroot -p密码(h:host、u:user、p:password)
  • oracle登录:sqlplus user_name/password@IP:port/instance_name;(其中可以把IP地址,端口号,实例名写在一个TNS文件中取一个别名,登陆的时候输入这个别名就行了)

初学阶段,图形化工具,mysql可以使用Navicat,Oracle一般用PLSQL,也可以用sqlyog等;

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

oracle支持大并发,大访问量,是OLTP最好的工具。

2、数据库的层次结构:

  • mysql:默认用户是root,用户下可以创建好多数据库,每个数据库下还有好多表,一般情况下都是使用默认用户,不会创建多个用户;
  • oracle:创建一个数据库,数据库下有好多用户:sys、system、scott等,不同用户下有好多表,一般情况下只创建一个数据库用。

二、操作区别:

1、数据库中表字段类型:

  • mysql:int、float、double等数值型,varchar、char字符型,date、datetime、time、year、timestamp等日期型。
  • oracle:number(数值型),varchar2、varchar、char(字符型),date(日期型)等…

其中char(2)这样定义,这个单位在oracle中2代表两个字节,mysql中代表两个字符。
其中varchar在mysql中,必须给长度例如varchar(10)不然插入的时候出错。

2、主键:

  • mysql一般使用自动增长类型,在创建表时只要指定表的主键auto increment,插入记录时,不需要再指定该记录的主键值,mysql将自动增长。
  • oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值赋给该字段即可,只是ORM框架是只要是native主键生成策略即可。

3、单引号处理:mysql里可以用双引号包起字符串,oracle只可以用单引号包起字符串。

4、分页处理:

  • mysql是直接在SQL语句中使用limit就可以实现分页
  • oracle则是需要用到伪劣ROWNUM和嵌套查询

5、对事务提交:

  • mysql默认是自动提交,可以修改为手动提交
  • oracle默认不自动提交,需要手动提交,需要在写commit指令或点击commit按钮。

6、对事务的支持:mysql在innodb存储引擎的夯机所的情况下才支持事务,而oracle则完全支持事务。

7、事务隔离级别:

  • mysql是repeatable read的隔离级别,而oracle是read commited的隔离级别;
  • 同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的读一致性。每个session提交后其它session才能看到提交的更改;
  • oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo空间中为这个session构造它查询时的旧的数据块;
  • mysql没有类似oracle的构造多版本数据的机制,只支持read commited的隔离级别,一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据;session更新数据时,要加上排它锁,其他session无法访问数据。

8、并发性:

  • mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然Innodb引擎表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁;
  • oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖于索引,所以oracle对并发性的支持要好很多。

9、逻辑备份:mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用,oracle逻辑备份时不锁定数据,且备份的数据是一致的。

10、复制:

  • mysql:复制服务器配置很简单,但主库出问题时,从库可能丢失一定的数据,且需要手工切换从库到主库;
  • oracle:既有堆或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出问题时,可以自动切换备库到主库,但配置管理较复杂。

11、性能诊断:

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

12、保存数据的持久性:

  • mysql默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据;
  • oracle把提交的sql操作先写入了在线联机日志文件中,保持到了硬盘上,可以随时恢复。

13、热备份:

  • oracle有成熟的热备份工具rman,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
  • mysql:
    • myisam引擎:用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作;
    • innodb引擎:它会备份innodb的表和索引,但是不会备份.frm文件,用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其它用户使用数据库,但此工具是收费的。
    • innobackup是结合ibbackup使用的一个脚本,它会协助对.frm文件的备份。

13、日期转换:

  • mysql中日期转换用dateformat()函数;
  • oracle用to_date()to_char()两个函数。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193787.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月18日 下午5:22
下一篇 2025年11月18日 下午6:01


相关推荐

  • activity生命周期的七种方法_九分之五大还是九分之四大

    activity生命周期的七种方法_九分之五大还是九分之四大Activity生命周期是指一个Activity从创建到销毁的全过程。下图是Activity的生命周期模型。一、生命周期五种状态(1)启动状态:Activity的启动状态很短暂,当Activity启动后便会进入运行状态。(2)运行状态:Activity在此状态时处于屏幕最前端,它是可见、有焦点的,可以与用户进行交互。如单击、长按等事件。即使出现内存不足的情况,Android…

    2022年8月30日
    7
  • 没有中兴的智谱,被民间华强北盯上了

    没有中兴的智谱,被民间华强北盯上了

    2026年3月12日
    2
  • callee和caller的区别_caller中文

    callee和caller的区别_caller中文Javascriptarguments.callee和caller的区别一、callee  在学习callee之前,需要先学习arguments。  arguments:含义:该对象代表正在执行的函数和调用它的函数的参数。 语法: 1 [function.]arguments[n]   参数:function:当前正在执行的Func…

    2025年6月20日
    8
  • 美化包软件_美化桌面的软件

    美化包软件_美化桌面的软件前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月31日
    11
  • PAT乙级考后杂谈

    PAT乙级考后杂谈上周末去隔壁大学参加了PAT乙级的考试,结果没想到第一次考试就出了点小问题…本来考试是在1.30全国各个考点都同时开始(因为要排名),结果快到1.30的时候机房连不上网络,最后我们这个考点直接移后到将近2.30才开始考试,虽然结束时间也移后了,不过这多年不遇的突发情况直接让我遇到也太真实了。。。小插曲过后,再说下考试内容,乙级确实难度不大,三小时五道题,前两道题基本是送分题,虽然作者本人比较菜…

    2022年4月30日
    49
  • 用python画出爱心_Python编出爱心

    用python画出爱心_Python编出爱心Python中可以使用turtle库来画图,通过控制画笔运动来实现在画布上画图案。使用Python画爱心代码如下:#!/usr/bin/envpython#-*-coding:utf-8-*-importturtleimporttime#画心形圆弧defhart_arc():foriinrange(200):turtle.right(1)turtle.forward(2)de…

    2025年9月26日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号