mysql和oracle的一些差异

由于本人从事开发以来,一直用的都是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值