Oracle和MySQL的区别
刚进公司接触到了Oracle,记录一下他们的区别,面试的时候也有问到过,而且上来就是千万级别的数据调优,嘻嘻,我只是一个3年java。题外话,甚至有一些公司会问我java跟C、python的区别,以及具体区别的例子,然后我如果回答上来了,他们会告诉我,这边只做后端而且只用java,笑嘻了
就本人最近的使用和了解,整理了一下:
基本区别、大小写敏感、事务、时间日期、分页、常用字段类型
基本区别
数据库类型:
Oracle是对象关系数据库管理系统(ORDBMS => 基于对象模型,存储数据及其方法,数据存储在对象中,用于存储复杂的数据)
MySQL是开源的关系数据库管理系统(RDBMS => 基于关系模型, 存储数据,数据存储在实体里面,用于处理比较简单的数据)
默认端口和用户名:
Oracle默认端口:1521 默认用户:system
MySQL默认端口:3306 默认用户:root
安全:
Oracle使用了许多安全功能(本地身份验证,外部身份验证,高级安全增强等)
MySQL使用三个参数来验证用户,即用户名,密码和位置
性能:
MySQL在读取和写入方面性能通常比Oracle高
并发:
Oracle支持大并发访问量,是OLTP(联机事务处理 => 事务性非常高的系统,一般都是高可用的在线系统。比如银行、电商)最好的工具
MySQL并发小,面对大访问量可以做分表分库优化
临时表:
Oracle默认所有会话内可见(可设置当前会话内或事务内可见),创建后需要显式删除。
MySQL只在当前会话可见,一旦会话关闭就自动删除。
大小写敏感
Oracle默认是大写,在双引号""下,大小写敏感
MySQL默认是小写,大小写不敏感
事务
Oracle默认不自动提交,需要用户手动提交
提交命令:
BEGIN:事务块开始的标志(要么全部执行成功,要么全部失败回滚)
COMMIT:提交事务(对数据库的修改是可见的)
ROLLBACK:取消尚未提交的事务,将数据库恢复到事务开始之前的状态
SAVEPOINT:在事务中创建一个保存点,在事务执行过程中可以回滚到该保存点
SET TRANSACTION:设置事务的属性(事务的隔离级别、读写权限等)
MySQL中innoDB支持事务,默认自动提交(关闭事务提交命令 => set AutoCommit = 0)
提交命令:
START TRANSACTION:开始事务
COMMIT:手动提交
时间日期
Oracle使用 DATE 数据类型来存储日期和时间
# 获取当前DATE
SELECT SYSDATE
# 格式 'yyyy-mm-dd hh24:mi:ss'
SELECT TO_CHAR(createDate, 'yyyy-mm-dd hh24:mi:ss') FROM tableName;
MySQL日期和时间通常使用 DATE,DATETIME,TIMESTAMP 数据类型存储
# 获取当前时间戳
select unix_timestamp()
# 获取当前日期 格式 'YYYY-MM-DD'
select date(now())
# 获取当前日期时间,格式 'YYYY-MM-DD hh:mm:ss'
select now()
分页
Oracle
# rownum从1开始
select * from
(select rownum rn, t.* from (select * from tableName order by id desc) t )
where rn>=1 and rn<=5;
MySQL
# 从第0条开始,取5条数据
select * from tableName order by id desc limit 0,5
常用字段类型
Oracle | MySQL | |
---|---|---|
数字 | NUMBER | int、bigint、decimal |
字符串 | CHAR、NCHAR、VARCHAR2、NVARCHAR2 | char、varchar |
日期 | DATE | date、time、datetime、timestamp |