由于本人从事开发以来,一直用的都是mysql的数据库,然后面试到了一家数据库用oracle数据库的公司,本来想着数据库大同小异,增删改查逻辑都一样,后来到了公司之后发现确实差别不大,但伴随着开发,慢慢发现了一些差异,因此有了这篇文章
一、关于String格式存入数据
1、数据量小的数据
mysql一般用的是varchar,内容最大是255,如果超过会转为TEXT类型
oracle一般用的是VARCHAR2,限长为4000,超过这个长度是存不进去的
2、数据量大的数据
mysql分为两种,一种是text,存储字符型65535个字符,一种是BLOB,存储65535字节
oracle分为两种,一种是CLOB,存储超过4000字符时,需要特殊语句进行存储,一种是BLOB,存储字节
二、关于集合mybatis使用foreach
oracle的根据对象List查询
select ID as XXID,XXXX as XXXX FROM XXXX
<where>
<foreach collection="XXXList" index="index" item="XXX" open="" close="" separator="or">
(XXXX=#{XXXX.XXXX} and XXXX=#{XXXX.XXXX})
</foreach>
</where>
mysql根据对象List查询
<foreach collection="relationTestSuiteDtoList" index="index" item="relation" open="" close="" separator="or">
select ID as XXXId,XXX as XXXX FROM XXXX where
XXX =#{xxx.XXXX and XXX=#{XXX.XXXX}
</foreach>
差别点在于mysql可以识别到多个select查询,放在一个返回集里,而oracle不行
如果oracle用mysql这个写法,就会报ORA-00911: 无效字符错误,而这个问题当时困扰我很久,我以为我纯菜,sql写不会
三、关于分页
mysql的分页挺好用,就是limit 0,20 查询第0行开始20条数据,所以用分页查询也比较好写,但可能就会出现经典问题limit 100000,10问题
oracle得分页需要用到内置的rowNum去做between 1 and 20这种(注意可能会出现上下页数据相等的情况)
注:如有问题,欢迎评论
---To be continue