您的位置:首页 > 数据库 > Oracle

oracle和MySQL两个数据库的区别

2018-02-23 14:41 357 查看
上一次面试的时候,面试经理问我oracle和MySQL的区别,由于以前没有总结过,所以回答的并不是特别好,只是凭借使用这两个数据库的感觉,简单说了一下。现在总结如下:
1、oracle是大型数据库,市场占有率达到40%,而MySQL是中小型数据库,市场占有率也只有20%左右;
2、MySQL是开源数据库,而oracle价格非常高;
3、oracle支持大并发,大访问量,是OLTP最好的工具;
4、安装使用的空间:MySQL只需要152M,而oracle则需要3G左右,且使用的时候oracle占用特别大的内存空间和机器性能;
5、oracle和MySQL在操作上的区别:
        1)主键
        MySQL一般使用自动增长类型,创建表时制定表的主键为auto increment,插入数据库时,MySQL将自动增长;而oracle中没有自动增长类型,主键一般使用的序列,插入序列号时将序列号的下一个值赋给该字段即可(ORM框架只要是native主键生成策略即可);
        2)单引号的处理

        MySQL中的字符串使用双引号,oracle中的字符串需使用单引号;

        3)长字符串的处理

        长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,如果插入更大字节,请考虑字段使用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。

        4)空字符串的处理

        MySQL的非空字段也有空的内容,oracle中定义的非空字段就不可以有空的内容。按MySQL的NOT NULL来定义oracle的表结构,导数据的时候会产生错误,因此导数据时要对空字符进行判断,如果为NULL或者空字符,需要把它改成一个空格的字符串;

        5)字符串的模糊比较

        MySQL里用 字段名 like ‘%字段名%’,oracle里也可以用 字段名 like ‘%字段名%’,但这种方法不能使用索引,速度不快;

        6)翻页的SQL语句的处理

        MySQL处理翻页的SQL语句非常简单,用limit开始位置,记录个数;oracle处理翻页的SQL语句就比较复杂了 。每个
4000
结果集只有一个ROWNUM字段表明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80;

        7)oracle实现了ANSII SQL中大部分功能,如:事物的隔离级别,传播特性等;而MySQL在这方面还比较若。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: