1.MySQL的字符串类型是varchar:CODE VARCHAR(40),Oracle中是varchar2:CODE VARCHAR2(40)。
2.MySQL的数值类型是decimal,FLOAT,DOUBLE,Oracle中是NUMBER。
3.MySQL支持在建表时同时增加字段注释:id int NOT NULL COMMENT '主键';oracle不支持在建表时同时增加字段注释:comment on column predict_data.id is '主键'。
4.mysql在建立表的时候,不能使用as,oracle可以。
5.drop table if exists 表名只能在mysql中使用,不能在Oracle中使用,不过drop table 表名在mysql和Oracle中都可以使用。
6.MySQL时间数据格式为TIMESTAMP和DATETIME时,可以用CURRENT_TIMESTAMP,now()作为默认(MySQL5.6以后), MySQL会自动返回记录插入的确切时间。TIMESTAMP是UTC时间戳,与时区相关。DATETIME的存储格式是一个YYYYMMDD HH:MM:SS的整数,与时区无关,DATE数据类型来保存日期。默认的日期格式是yyyy-mm-dd;
oracle中表示时间DATE是最常用的数据类型,存储日期和时间信息,TIMESTAMP是7字节或12字节的定宽日期/时间数据类型,可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位,可以使用sysdate
7.char(2)这样的定义,在oracle中2代表两个字节,mysql中代表两个字符
8.主键递增操作,oracle使用自增序列,mysql可以使用 auto_increment
9.MySQL非空约束,唯一约束,主键约束,都可以,但是检查约束语法可以执行,但不一定会遵守,可以使用enum枚举。
10. Oracle中的length(str)是获取字符串长度的函数,MySQL 中对应的函数为char_length(str)。
11. Oracle中可通过sys_guid()函数是生成随机序列,MySQL通过UUID()生成随机序列。
12.将时间转换为字符串型时间 MySQL date_format(NOW(),'%Y-%m-%d') 对应Oracle的 Oracle中的 to_char(sysdate, 'YYYY-MM-DD');
将字符串型时间转换为时间类型 MySQL str_to_date('2019-01-01','%Y-%m-%d') 对应Oracle中的 to_date('2019-01-01', 'YYYY-MM-DD');
包括时分秒的函数转换:DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'),str_to_date('2019-01-01','%Y-%m-%d %H:%i:%s') 对应Oracle中的 to_date('2019-01-01', 'YYYY-MM-DD HH:MM:SS')。
13. nvl(tab.columnName, 0):如果tab.columnName值为空,则返回值取0,否则取tab.columnName;对应的MySQL函数为:ifnull(tab.columnName, 0)。
14.nvl2(expr1,expr2,expr3):如果expr1不为null,则返回expr2,否则返回expr3;对应的MySQL函数为:if(expr1,expr2,expr3)。
15.DECODE(value, val1, val2, val3):如果value等于val1,则返回val2,否则返回val3;MySQL可用IF函数表示:if(value=val1, val2, val3);
16.DECODE(value, if1, val1, if2,val2,...,ifn,valn,val):如果value等于if1,则返回val1,如果value等于if2,则返回value2...如果value等于ifn,
则返回valn,否则返回val;MySQL对于这种判断可以通过case when then else end;l来判断,即:case when value=if1 then val1 when value=if2 then val2,,,when value=ifn then valn else val end;
17.MySQL可识别双引号和单引号,Oracle只能识别单引号
18. Oracle 可用'||'来连接字符串,但MySQL不支持'||'连接,MySQL可通过concat()函数链接字符串。
19.Oracle可通过rownum获取前n条记录,MySQL通过limit来获取前n条记录,在Oracle中rownum作为where条件的一部分,而MySQL中limit不是where条件的一部分。
20.Oracle左连接,右连接可以使用(+)来实现. MySQL只能使用left join ,right join等关键字。
21.MySQL的删除语句,必须有from,oracle可以不要。
22.MySQL不支持(start with connect by prior)的这种递归查询,oracle支持:select * from BASE_ORGANIZATION start with id='01472856351469211712' CONNECT by PRIOR PARENT_ID=id;查询id是01472856351469211712的所有父类组织(包含自身)。
23. Oracle 中可用with来构建一个临时表,但MySQL不支持with,对应临时表,MySQL可通过小括号的方式来处理,但构建的临时表必须设置临时表名。
24.mysql的is not null 只包括了(NULL)值数据,不包括空字符串的数据,oracle包括了null值的数据和空字符串数据