差别:
- 大小写:
- Oracle推荐使用大写,Mysql推荐使用小写,Oracle表名字段名默认是转换成大写查询,如果不想转换,在查询列上加双引号””即可,不加双引号会报找不到表名或者字段名,(推荐Oracle使用大写,因为Oracle中即使大写,小写也能查的到,相反如果小写,就必须强制加双引号,而且对切换Mysql无侵入性,不需要更改,符号Mysql规范和Oracle规范(Mysql规范定义数据库名字段名用小写))
错误示例:
正确示例:
- 数据类型

- 常见的几种:
- 数字类型
- Oracle(NUMBER) Mysql(int DECIMAL ),都是数字类型,在Java当中都是int或者Integer,差别不大,不过需要在配置映射关系的需要指定
- 字符串类型
- Oracle(Varchar2(n)Varchar) Mysql(Varchar) Mysql当中是没有Varchar2这种类型,只有一种Varchar,他们通用的都只有Varchar类型
- 时间类型:
- Oracle(DATE) Mysql(DATATIME)Mysql日期字段分DATE和TIME两种,Oracle日期字段只有DATE,包含年月日时分秒信息
- NULL空值
- 空字符的处理 Mysql的非空字段也有空的内容,Oracle里定义了非空字段就不容许有空的内容。按Mysql的NOT NULL来定义Oracle表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
- 数字类型
- 自动增长序列:
- Mysql有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
- 语法区别:
- 删除语句:
- Oracle: delate from myuser ; —-from 可有可无
- Mysql: delete from myuser; —-必须有from
- 外键约束
- Oracle是constraints,Mysql是constraint
- 分页语句:
- Oacle
- : select from(select rownum rr,a. from (select * from emp order by sal) a )where rr>5 and rr<=10;
- 没有offet和limit,要换成rownum
- Mysql
- select * from help_category order by parent_category_id limit 10,5
- Oacle
- 删除语句:
- 函数区别:
- 字符串函数:
- Oracle(SUBSTR) Mysql(substring)
- 函数名称不同:
- Oracle: select substr(‘abcd’,2,2) value from dual
Mysql: select substring(‘abcd’,2,2) value
- Oracle: select substr(‘abcd’,2,2) value from dual
- 函数名称不同:
- Oracle(instr) Mysql(locate):
- 函数名称不同:instr -> locate(注意:locate的子串和总串的位置要互换)
- Oracle: SELECT instr(‘abcdefg’, ‘ab’) VALUE FROM DUAL
- Mysql: SELECT locate(‘ab’, ‘abcdefg’) VALUE
- 函数名称不同:instr -> locate(注意:locate的子串和总串的位置要互换)
- Oracle(length) Mysql(char_length):
- 函数名称不同:
- Oracle: SELECT length(‘AAAASDF’) VALUE FROM DUAL
Mysql: SELECT char_length(‘AAAASDF’) VALUE
- Oracle: SELECT length(‘AAAASDF’) VALUE FROM DUAL
- 函数名称不同:
- Oracle(SUBSTR) Mysql(substring)
- 控制流函数:
- Oracle(TO_CHAR) Mysql(date_format/time_format)
- 函数名称不同:
- SQL> select to_char(sysdate,’yyyy-mm-dd’) from dual;
- SQL> select to_char(sysdate,’hh24-mi-ss’) from dual;
- mysql> select date_format(now(),’%Y-%m-%d’);
- mysql> select time_format(now(),’%H-%i-%S’);
- 函数名称不同:
- Oracle(TO_CHAR) Mysql(date_format/time_format)
- 类型转换函数:
- Oracle(to_date) Mysql(STR_TO_DATE)
- 函数名称不同:
- Oracle: SELECT to_date(‘2009-3-6’,’yyyy-mm-dd’) VAULE FROM DUAL
Mysql: SELECT STR_TO_DATE(‘2004-03-01’, ‘%Y-%m-%d’) VAULE
- Oracle: SELECT to_date(‘2009-3-6’,’yyyy-mm-dd’) VAULE FROM DUAL
- 函数名称不同:
- Oracle(trunc) Mysql(cast)
- 函数名称不同,传值不一样:
- TRUNC函数为指定元素而截去的日期值。
- Oracle: select trunc(-1.002) value from dual
Mysql:select cast(-1.002 as SIGNED) valueMYSQL:
- Oracle: select trunc(-1.002) value from dual
- TRUNC函数为指定元素而截去的日期值。
- 函数名称不同,传值不一样:
- Oracle(TO_NUMBER) Mysql(CAST)
- 函数名称不同,传值不一样:
- Oracle: SELECT TO_NUMBER(‘123’) AS VALUE FROM DUAL;
Mysql: SELECT CAST(“123” AS SIGNED INTEGER) as value;
SIGNED INTEGER:带符号的整形
- Oracle: SELECT TO_NUMBER(‘123’) AS VALUE FROM DUAL;
- 函数名称不同,传值不一样:
- Oracle(SYSDATE) Mysql(now() / SYSDATE())
- 写法不同:
- Oracle: select SYSDATE value from dual
Mysql:select now() value
select sysdate() value
- Oracle: select SYSDATE value from dual
- 写法不同:
- Oracle(to_date) Mysql(STR_TO_DATE)
- 日期函数:
- Oracle(Next_day(sysdate,7)) Mysql(自定义一个函数:F_COMMON_NEXT_DAY(date,int))
- 函数名称不同:
- Oralce: SELECT Next_day(sysdate,7) value FROM DUAL
- Mysql: SELECT F_COMMON_NEXT_DAY(SYSDATE(), 3) value from DUAL;
- (3:指星期的索引值)返回的指定的紧接着下一个星期的日期
- 函数名称不同:
- Oracle(ADD_MONTHS(sysdate, 2)) Mysql(DATE_ADD(sysdate(), interval 2 month))
- 函数名称不同:
- Oracle: SELECT ADD_MONTHS(sysdate, 2) as value from DUAL;
- Mysql: SELECT DATE_ADD(sysdate(), interval 2 month) as value from DUAL;
- 函数名称不同:
- Oracle(Next_day(sysdate,7)) Mysql(自定义一个函数:F_COMMON_NEXT_DAY(date,int))
- 字符串函数:
