Oracle和MySql之前的区别

本文对比了Oracle和MySQL数据库的市场占有率、安装空间、并发能力、操作差异(如主键、单引号处理、翻页SQL、长字符串处理、空字符处理、模糊比较等),并详细阐述了两者在数据库管理、数据安全、性能优化等方面的区别。
1.  Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。
2. Oracle支持大并发,大访问量,是OLTP最好的工具。
3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。
4.Oracle也Mysql操作上的一些区别
①主键
Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
②单引号的处理
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
③翻页的SQL语句的处理
MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80
④ 长字符串的处理
长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。
⑤空字符的处理
MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
⑥字符串的模糊比较
MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快。
⑦Oracle实现了ANSII SQL中大部分功能,如,事务的隔离级别、传播特性等而Mysql在这方面还是比较弱的
### Oracle MySQL 中主键的区别 #### 主键定义方式差异 在数据库设计中,Oracle MySQL 对于主键的定义存在一些不同之处。对于 Oracle 数据库而言,在创建表时可以通过 `CREATE TABLE` 语句中的 `PRIMARY KEY` 约束来指定列作为主键[^1]。 而在 MySQL 中同样支持通过类似的语法结构声明主键,不过值得注意的是,默认情况下 MySQL 使用 InnoDB 存储引擎会自动为未显式提供整数类型的主键字段添加隐藏自增属性[^2]。 ```sql -- Oracle 创建带主键的表 CREATE TABLE employees ( employee_id NUMBER PRIMARY KEY, first_name VARCHAR2(50), last_name VARCHAR2(50) ); -- MySQL 创建带主键的表 (InnoDB 引擎默认行为) CREATE TABLE employees ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50) ); ``` #### 自动编号机制的不同实现 当涉及到自动增长特性时,两种数据库管理系统有着不同的处理逻辑。Oracle 提供序列(Sequence)对象用于生成唯一数值,并且可以触发器配合使用以确保每次插入新记录时都能获得新的主键值;而 MySQL 则更倾向于内置此功能到其数据类型本身当中去,比如上述例子中的 `AUTO_INCREMENT` 关键字就是用来指示该列为自动生成递增值的主键列。 #### 锁定策略影响下的性能考量 由于锁定策略上的区别也会影响到主键操作效率方面的问题。正如之前提到过关于锁开销数据安全之间的权衡关系一样,在高并发场景下如何有效地管理这些资源变得尤为重要。通常来说,大多数商用级的关系型数据库服务器都会采用行级别锁定方案以便更好地平衡两者间的需求。然而具体到 Oracle 或者 MySQL 上,则可能因为内部架构以及优化措施等因素造成实际表现有所偏差。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值