Mysql与Oracle 的对比 | |||
区别点 | Mysql | Oracle | |
数据类型 | CHAR:定长字符串,适合主键 VARCHAR:变长字符串 FLOAT, 数值型 DOUBLE, 数值型 DATE , 日期型 INT 整型
| 字符类型 char 定长字符类型 varchar可变长的字符类型 varchar2 可变长的字符类型 二进制大对象 BLOB 主要用来存储图片,音频,视频.... 文本大对象 CLO主要用来存放大文本 Date 数字类型 number
| |
主键自动增长 | Auto_increment 主键必须是整型才可以自增长 如creat TABLE t1 (tid INT (10) PRIMARY KEY auto_increment, tname varchar (10),tage int(2)); | Oracle 中给主键设置自增长,先设序列,在设置触发器. | |
单引号的处理 | MYSQL里可以用双引号包起字符串, | ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号 | |
分页 | limit是mysql的语法select * from table limit m,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条。limit 2,4即取出第3条至第6条,4条记录 | Oracle 中用rownum .取前n条数据,oracle中用rownum < m; 1:其中m-1 等于要取的条数 2:rownum 只能有 < ,<= ,没有 > 3: 如m为6,则取得是前5条数据。
| |
日期字段 | MYSQL日期字段分DATE和TIME两种 | ORACLE日期字段只有DATE,包含年月日时分秒信息 | |
空字符的处理 | MYSQL的非空字段也有空的内容 如:name != ""这样在my下不会报错 | ORACLE里定义了非空字段就不容许有空的内容 。 如果为NULL或空字符,需要把它改成一个空格的字符串。如:在oracle下的要换成name is not null | |
Sql语句group by | Mysql不要求group by 后的字段 一定要出现在select 后面。 | oracle中sql 的group by 后的字段 一定要出现在select 后面 | |
开源项目 | MySQL是开源的项目 | 付费 | |
SQL语法的不同 | MySQL较为灵活 | Oracle较为严格 | |
事务 | 事务的提交 | MySQL默认是自动提交
| Oracle默认不自动提交,需要用户手动提交
|
事务隔离级别 | MySQL是可重复读
| 读已提交 | |
对事务的支持 | MySQL在innodb存储引擎的行级锁的情况下才可支持事务 | Oracle则完全支持事务
| |
保存数据的持久性 | MySQL是在数据库更新或者重启,则会丢失数据 | Oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复 | |
用户权限 | 放在mysql 自己的mysql 库中 | oracle 的权限是跟着表空间走的 |