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的语法 |
Oracle 中用rownum .取前n条数据,oracle中用rownum < m; 1:其中m-1 等于要取的条数 2:rownum 只能有 < ,<= ,没有 > 3: 如m为6,则取得是前5条数据。 |
|
日期字段 |
MYSQL日期字段分DATE和TIME两种 |
ORACLE日期字段只有DATE,包含年月日时分秒信息 |
|
空字符的处理 |
MYSQL的非空字段也有空的内容 如:name != ""这样在mysql下不会报错 |
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 的权限是跟着表空间走的 |