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)
⑥ 未完待续……