现在的位置: 首页 > 数据库 > 正文

Oracle与Mysql有什么区别

2020年02月03日 数据库 ⁄ 共 1209字 ⁄ 字号 评论关闭

  Oracle与Mysql的区别:


  Oracle:客户端与命令窗口都是由用户决定的;是大型数据库,市场占有率达40%;价格非常高,占据特别大的内存空间和其他机器性能,安装完后又3G左右;


  Mysql:客户端与命令窗口都是由数据库决定的;是中小型数据库,市场占有率是20%,开源且免费的,安装完后152M。


  操作上的区别:


  1、组函数用法规则:


  MySQL中组函数在select语句中可以随意使用,但在Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错。


  2、自动增长的数据类型处理:


  MySQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。


  3、单引号的处理:


  mySql用双引号包起字符串,Oracle里用单引号包起字符串,在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。


  4、翻页的SQL语句的处理:


  语句一:


  SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;


  语句二:


  SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (SELECT [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;


  5、长字符串的处理:


  插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告。


  6、主键:


  MySQL一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,MySQL将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。


  7、字符串的模糊比较:


  mySql里字段名like%'字符串'%,用字符串比较函数instr(字段名,'字符串')>0会得到更精确的查找结果。


  8、空字符的处理:


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

抱歉!评论已关闭.