Oracle和MySQL在实际使用中的区别

简介

在应用上Oracle是属于大型数据库,而MySQL是属于中小型数据库。

MySQL比较小,而且免费,开源的缘故,现在也很健壮,若不是大型应用的话,MySQL足以应付一切。

oracle比较庞大,整个体系都很健全。

简单的说MySQL是实用很好用,oracle就是很好很强大。

PL/SQL Developer

PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。不能连接其他数据库。 PL/SQL有一些很实用的功能,本文也是通过PL/SQL连接Oracle数据库进行简述。

一、事务提交

在MySQL中是默认自动提交,如需手动提交需要进行设置。

#查看是否开启自动提交功能
SHOW VARIABLES LIKE 'autocommit';
#手动禁用自动提交功能
SET autocommit = 0;

在Oracle里每执行一个数据操作语句都需要手动进行提交

该图为PL/SQL(数据库可视化工具)中部分功能

第一个图标运行代码 第二个图标提交事务 第三个图标回滚事务

二、数据类型

字符型

MySQL通常使用varchar作为字符串的数据类型,Oracle一般使用的是varchar2,为了与其他数据库的兼容性也可以使用varchar。

varchar和varchar2的区别:

goodsname  varchar(20);#可以存储空字符串
goodstype  varchar2(20);#Oracle独有的数据类型,不可以存储空字符串,用null来替代

数值类型

MySQL有整型(例如:SMALLINT、INT)、浮点型(例如:FLOAT(D,M)、DOUBLE(D,M))等诸多区分。

而Oracle一般使用number为数值类型定义,虽然Oracle也有部分专门定义某种数据类型的关键字(例如:SMALLINT、INT、INTEGER、DOUBLE PRECISION)但这些都是number的同义词,一般不使用。

日期类

MySQL关于日期的数据类型有DATE、TIME、DATETIME、TIMESTAMP、YEAR等,而Oracle定义日期通常使用DATE,若需要使用日期类中的一部分进行筛选数据可以使用to_char方法来转换。若要存储高精度的时间也可以使用timestamp(小数秒最高精度可达到9位,比MySQL要高2位)

to_char(order_time,'yyyymmdd')#取出order_time中的年月日并转为字符串
​
#获取当前时间
NOW();        #MySQL
sysdate;      #Oracle

文本类

MySQL可以使用TINYTEXT、TEXT、MEDIUMTEX、LONGTEXT来定义文本类型,其中LONGTEXT最多支持4GB字节,而Oracle使用CLOB最高可支持4GB个数据块,数据块大小为2KB-32KB。

小结:数据类型的区别不止罗列出来的这些,但不难看出MySQL使用多种不同的数据类型来定义,而Oracle喜欢把多种类似的数据类型整合为一种,并且能表示的范围更大精度更高。

三、基本语法

#变量赋值
#oracle 变量赋值使用:=  
lv_inputstr := iv_inputstr
#mysql 使用赋值使用set关键字. 将一个值赋给一个变量时使用"="
SET lv_inputstr = iv_inputstr
​
​
#字符串的连接
#Oracle 使用"||"来连接字符串,也可使用concat关键字,但是使用concat关键字直接连接两个字符串
result := v_int1||v_int2;
#Mysql 使用concat方法连接字符串. MySQL的concat函数可以连接一个或者多个字符串
set result = concat(v_int1,v_int2);
​
​
#替换空值
#Oracle 使用nvl(E1,E2)、nvl2(E1,E2,E3)
nvl(E1,E2)                  #若E1不为空则返回E1,未空,则返回E2
nvl2(E1,E2,E3)              #若若E1不为空则返回E2,未空,则返回E3
#MySQL 使用IFNULL(E1,E2)或COALESCE(value,…)
IFNULL(E1,E2)               #和Oracle的nvl一样
COALESCE(value,…)           #返回第一个不为NULL的参数
​
​
#时间函数
#时间转换为字符串型时间
date_format(NOW(),’%Y-%m-%d’)           #MySQL
to_char(sysdate, ‘YYYY-MM-DD’)          #Oracle
#字符串型时间转换为时间类型
date_format(NOW(),’%Y-%m-%d’)           #MySQL
to_date(‘2020-12-01’, ‘YYYY-MM-DD’)     #Oracle
​
​
#分页查询
#MySQL可以使用limit关键字实现分页查询
select * from emp limit 3 # 查询前三条数据
#Oracle中没有limit这个关键字,所以需要分页查询的时候会比较麻烦,只能使用rownum实现分页查询
select t.*
from
(
       select rownum rn,t.*  
       from  
       ( 
              select * from t_user 
       ) t where rownum <= M
        
 ) t where rn > N
​
​
#引号
MySQL不严格区分单引号和双引号,都可以使用
但Oracle通常只使用单引号,只有少数情况可以使用双引号(单引号中的内容需要引号时)
​
​
#查询格式
#MySQL可以不加from来进行查询,如
SELECT NOW()                    #MySQL查询当前时间
#Oracle中查询语句必须有from,若查询的数据不需要指定表,则添加from deal
SELECT SYSDATE FROM dual        #Oracle查看当前时间

四、存储过程调试

MySQL不提供调试存储过程的功能,对存储过程难以进行测试维护。

Oracle可以使用PL/SQL Developer工具很方便的对存过进行调试,类似于我们使用IDEA的bebug功能去调试java代码。

调试方法

在包中找到需要调试的存过,选中单击右键,并点击测试到调试页面。

在调试页面点击绿色按钮即可开始调试,后面的按键与IDEA的debug类似,可以直接运行存过,也可以逐行运行存过,还可以一直运行,直到出现异常,可以方便我们定位存过出错的位置。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OracleMySQL 是两种不同的数据库管理系统,它们在语法上有很多的不同点,下面是一些比较明显的区别: 1. 数据类型不同:OracleMySQL 支持的数据类型有一些不同,例如 Oracle 支持 LONG 和 RAW 类型,而 MySQL 不支持。同时 Oracle 支持的日期格式也比 MySQL 多。 2. SQL 语句不同:OracleMySQL ,一些 SQL 语句的写法也有所不同。例如,Oracle 使用的是 SELECT * FROM 表名,而 MySQL 常用的是 SELECT 字段名 FROM 表名。 3. 存储过程写法不同:OracleMySQL 的存储过程写法也有所不同。例如,在 Oracle ,存储过程使用的关键字是“IS”和“BEGIN”,而在 MySQL 使用的是“BEGIN”和“END”。 4. 触发器写法不同:OracleMySQL 的触发器写法也有所不同。例如,在 Oracle ,触发器使用的关键字是“FOR EACH ROW”,而在 MySQL 使用的是“FOR EACH ROW BEGIN...END”。 5. 索引的命名不同:在 Oracle ,索引的名称是全局唯一的,而在 MySQL 是在表级别上唯一。 6. 存储引擎不同:MySQL 支持多种存储引擎,例如 InnoDB、MyISAM、MEMORY 等,而 Oracle 只有一种存储引擎。 7. 连接查询写法不同:在 Oracle ,连接查询使用的是“JOIN”关键字,而在 MySQL 使用的是“LEFT JOIN”、“RIGHT JOIN”、“INNER JOIN”等。 以上是 OracleMySQL 在语法上的一些较为明显的区别,但实际上两种数据库管理系统之间的语法差异还有很多,需要具体情况具体分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值