1.主键
Oracle中 PRIMARY KEY 没有自增长属性, 比如主键是ID,插入时需要插入ID,一般都是通过建立序列进行插入
MySQl 中 PRIMARY KEY 可以在建表时设置 AUTO_INCREMENT属性,即自增长。插入数据时,不用care这个主键,如 insert 时,主键列可以忽略,写入其他列即可。
2. 空值NUll的问题
Oracle 中null 和 ''(空字符) 在插入库中都是一个 NULL ,MySql中 null 插入是null ,而 ‘’(空字符) 插入的是 ''(空字符)。
3. 获取当前时间:
oracle中 获取当前时间 select sysdate from dual, 在mysql没有 dual,不能执行 select xx from dual 等。
mysql : select current_date; 或 select current_time; 或 select current_timestamp as CURR_TIME;
oracle中在插入数据insert时 ,日期格式字段 ,直接写值 sysdate 即当前时间, mysql中是 current_date/current_time/current_timestamp,但是一般都是 default current_time。
4. 格式
1)时间
Oracle中 使用 TO_CHAR(Date, 'YYYY-MM-DD') 时间转换成字符; to_date( params, ''YYYY-MM-dd HH:mm:ss ' )字符转换成时间
MySQL中 使用 date_format(t.CREATE_TIME,'%Y-%m-%d %h:%m:%s') 时间转换成字符, STR_TO_DATE(#para(startDate),'%Y%m%d')字符转换成时间。
另外:MySQL中是可以将 时间和字符直接比较大小的,就是说 查询时间范围时不需要转换 可以直接比较。
2)字段符号,Oracle中 使用单引号 '', 而MySql中使用 尖号`` (感叹号左边的那个建)。
5. 函数
1)case when ... then .... end ; 在 Mysql 和Orcale 都适用 。用法 select case when t.sex=1 then ‘男’ when t.sex =0 then ‘女’ end sex from t_user
2)wmsys.wm_contact (字符连接方法',' )
Orace中的函数,Mysql没有。 用法:例如: 学生选课表 t_course,
student_id course_name
---------- ------------------------------
10 诗词鉴赏
10 世界地理
10 影视鉴赏
20 社交英语
20 近代舞
20 中国武术
select student_id, wmsys.wm_contact(course_name) as course_name from t_course group by student_id
执行结果:
student_id course_name
---------- ------------------------------
10 诗词鉴赏, 世界地理,影视鉴赏
20 社交英语, 近代舞 ,中国武术
需要注意的: Oracle在11g之后 wmsys.wm_contact 返回的结果是blob类型,用的时候需要将 类型转换成字符 使用 dbms_lob.substr方法:
即 select student_id, dbms_lob.substr(wmsys.wm_contact(course_name) ) as course_name from t_course group by student_id
在MySql 有和 wmsys.wm_contact 功能一样的方法, group_concat , 用法:
select student_id, group_concat(course_name) as course_name from t_course group by student_id
--- 待补充
最后. 一些异常处理
异常:com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: UDAL - Illegal sql statement: explain total rows is more than 10000 or number of rows from single dn is bigger than 5, affected rows is more than expected,{1}
---原因: 表关联时,没有给关联表的建加上索引导致