oracle和mysql使用中的异同总结

oracle和mysql使用中的异同总结

在使用中mysql和oracle经常会有不同的地方困扰自己,特地一一总结避免以后再被迷惑。

1、连接方式不一样

①oracle的连接是url 、user、password,这里user是指一个连接下的一个数据库。 而mysql的 在url中就指明了连哪个库,例如这里的mysql

url: jdbc:mysql://localhost:3306/mysql?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
    username: root
    password: 420188
2、时间方式不一样

②对传入时间的比较。比如传入开始时间和结束时间,mysql和oracle也都不一样,主要是时间的转换和时间的表示不一样。

这是mysql:

 <if test="startTime != null and startTime !='' ">
            AND  <![CDATA[ ssw.recordtime >= DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%M:%S')]]>
        </if>
        <if test="endTime != null and endTime !='' ">
            AND  <![CDATA[ ssw.recordtime <= DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%M:%S')]]>
        </if>

这是oracle:

 <if test="startTime != null and startTime !='' ">
            AND  <![CDATA[ ssw.recordtime >= TO_DATE(#{startTime},'yyyy-MM-dd HH24:mi:ss')]]>
        </if>
        <if test="endTime != null and endTime !='' ">
            AND  <![CDATA[ ssw.recordtime <=TO_DATE(#{endTime},'yyyy-MM-dd HH24:mi:ss')]]>
3、批量插入数据时,不一样。

mysql的批量插入

insert into sys_base_fileindex
		(
		name,
		filetypeid,
		filepath,
		businesstypeid,
		uploadtime,
		fileSize
		)
		values
		<foreach collection="list" item="item" index="index" separator=",">
			(
			#{item.fileName},
			#{item.filetypeid},
			#{item.filePath},
			#{item.businesstypeid},
			#{item.uploadtime},
			#{item.fileSize}
			)
		</foreach>

而oracle的批量插入:

<insert id="batchInsert" parameterType="com.ali.modules.filemanagement.entity.EtlDataAccessFileio">
insert into ETL_DATA_ACCESS_FILEIO(NAME,FILE_SIZE,UPLOAD_TIME,STATUS)
<foreach collection="afterDealList" item="item" index="index" seperator="union all">
(select  
#{item.name,jdbcType=VARCHAR},
#{item.fileSize,jdbcType=VARCHAR},
#{item.uploadDate,jdbcType=TIMESTAMP},
#{item.status,jdbcType=DECIMAL} 
from dual)
</foreach>
</insert>

插入数据的异同:
1.oracle的数据插入每个字段需指明类型,字符串用:jdbcType=VARCHAR,时间用:jdbcType=TIMESTAMP,数字用:jdbcType=DECIMAL 而mysql可以不指定。
2、获取集合中的值用select …………from dual (在标签内)
3、字段和值之间没有VALUES这个(单条插入是有values的)。
4、标签中的separator的属性值为union all将查询合并结果。

4、模糊查询不一样:oracle的concat函数只能连接两个参数

mysql用法:

 <if test="name != null">
                and badge_name like concat('%',#{name},'%')
            </if>

oracle的用法:

 <if test="name != null">
                and badge_name like concat(concat('%',#{name}),'%')
            </if>

⑤ 如果null就取0
mysql: ifnull(null,0)
oracle:NVL(null,0)
⑥ 未完待续……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神雕大侠mu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值