[mysql]
insert into 和 replace into 两者的区别是
insert into 是向一张表中插入记录
replace into 则是有插入和覆盖的功能,插入和insert into 是一样的,覆盖则是以主键,其次是唯一键为准的,即:
数据表中有以下数据:
主键ID | 名称 | 备注 |
1 | admin | 这是管理员 |
2 | user1 | 这是操作员 |
执行了 replace into 表名 values (1,'root','这是管理员');后
数据即修改为:
主键ID | 名称 | 备注 |
1 | root | 这是管理员 |
2 | user1 | 这是操作员 |
以上简单的说明replace into的作用
mysql 中insert into 批量添加的作用
场景:
有一存放学生对象的List集合,size为10000,需要持久化到数据库中
做法一:
遍历该List集合,将对象一个一个取出来执行insert into语句,相信这种做法是一般程序员采用的,很简单。
做法二:
利用mysql的insert into 表名 values (.....),(.....),(.....),(.....) 特性一次性大批量的插入数据,提高效率
[java]
备注:我用的是ibatis
业务层:
private void batchInsertAct(List<ProgramDetail> acts) throws DataBaseException { Map<Integer, List<ProgramDetail>> map = this.groupListBySize(acts, GROUP_SIZE); if ((map != null) && !map.isEmpty()) { for (Integer key : map.keySet()) { Map<String, Object> paramaters = new HashMap<String, Object>(); paramaters.put("acts", map.get(key)); this.programDetailDao.batchInsertAct(paramaters); } } }
数据库层:
<insert id="batchInsertAct" parameterClass="map"> <![CDATA[ INSERT INTO T_PROGRAMDETAIL(PROGRAMDETAILID,PROGRAMLISTID,PROGRAMTIME,PROGRAMNAME,VISIBLE,COLLATESTATE,VIDEOSTARTTIME,VIDEOENDTIME) VALUES ]]> <iterate property="acts" conjunction=","> <![CDATA[ (null,#acts[].programListId#, #acts[].programTime#, #acts[].programName#, 0, #acts[].collateState#, #acts[].videoStartTime#, #acts[].videoEndTime#) ]]> </iterate> </insert>
利用mysql的replace into 表名 values (.....),(.....),(.....),(.....) 特性一次性大批量的修改数据,提高效率
业务层:
private void batchUpdateAct(List<ProgramDetail> acts) throws DataBaseException { Map<Integer, List<ProgramDetail>> map = this.groupListBySize(acts, GROUP_SIZE); if ((map != null) && !map.isEmpty()) { for (Integer key : map.keySet()) { Map<String, Object> paramaters = new HashMap<String, Object>(); paramaters.put("acts", map.get(key)); this.programDetailDao.batchUpdateAct(paramaters); } } }
数据库层:
<insert id="batchUpdateAct" parameterClass="map"> <![CDATA[ REPLACE INTO T_PROGRAMDETAIL(PROGRAMDETAILID,PROGRAMLISTID,PROGRAMTIME,PROGRAMNAME,VISIBLE,COLLATESTATE,VIDEOSTARTTIME,VIDEOENDTIME) VALUES ]]> <iterate property="acts" conjunction=","> <![CDATA[ (#acts[].programDetailId#,#acts[].programListId#, #acts[].programTime#, #acts[].programName#, 0, #acts[].collateState#, #acts[].videoStartTime#, #acts[].videoEndTime#) ]]> </iterate> </insert>
呵呵 随笔而已,格式有点乱,有什么问题或疑问,各位大神请联系我!
相关推荐
在SQL语句中,`REPLACE INTO` 和 `INSERT INTO` 都是用来向数据库表中添加数据的命令,但它们之间存在重要的区别。本文将详细阐述这两种操作的区别以及使用场景。 首先,`INSERT INTO` 是最常用的插入数据的方式。...
在MySQL数据库中,`REPLACE INTO` 和 `INSERT INTO` 是两种不同的数据插入语句,它们各有其特定的用途和行为。理解它们的区别对于优化数据库操作至关重要。 首先,`INSERT INTO` 是最基本的数据插入语句,它用于在...
### MySQL中的SELECT INTO和INSERT INTO SELECT详解 #### 一、引言 在数据库管理与应用开发过程中,数据的复制是一项非常常见的需求。特别是在进行数据迁移、备份或创建新表时,能够快速有效地复制数据是非常重要...
INSERT 和 REPLACE 语句在 MySQL 中的使用和区别 INSERT 语句是 MySQL 中最基本的数据插入语句,它有两种基本形式:INSERT INTO 语句和 INSERT SET 语句。INSERT INTO 语句的基本语法是 INSERT INTO tablename(列名...
- 避免在`SELECT`子句中使用函数,因为这可能会阻止MySQL使用索引,降低性能。 - 分批插入大数量的数据,而不是一次性插入所有数据,可以降低锁表时间,减少对数据库的影响。 6. **应用场景** - 数据迁移:从一...
mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql insert语句mysql ...
MySQL中的`REPLACE INTO`和`INSERT INTO ... ON DUPLICATE KEY UPDATE`是两种处理数据冲突的方法,它们在处理已有键值冲突时的行为有所不同。这两种语句都是在插入新记录时,如果发现存在相同的唯一键值,则采取不同...
MySQL中的`REPLACE`和`REPLACE INTO`是两种用于数据插入或更新的SQL语句,它们在处理数据冲突时有独特的策略。首先,我们来分别解析这两个命令。 `REPLACE`函数通常指的是字符串处理函数,它在MySQL中用于替换字符...
根据提供的文件信息,本文将详细解释 MySQL 中 `REPLACE INTO` 的使用方法及特性,并对比其与 `INSERT INTO` 的不同之处。 ### MySQL REPLACE INTO 介绍 #### 1. REPLACE INTO 的基本概念 `REPLACE INTO` 是 ...
MySQL中的INSERT和REPLACE语句是数据操作的重要组成部分,它们都用于向数据库表中添加新的数据,但在处理重复数据时有所不同。INSERT语句主要用于插入新的记录,而REPLACE语句则在遇到重复键值时,会删除原有记录并...
在MySQL中,`REPLACE INTO` 和 `INSERT INTO ON DUPLICATE KEY UPDATE` 是两种处理数据插入时冲突的方法,主要用于处理当试图插入一条记录,而该记录的唯一键或主键已经在表中存在的情况。这两种方法都可以实现如果...
"Insert Into"是SQL语言中的一个关键操作,用于向数据库表中插入新的数据记录。这个命令的基本语法结构是`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`,其中`table_name`是你要...
以下的文章主要介绍的是MySQL INSERT INTO语句的实际用法以及MySQL INSERT INTO语句中的相关语句的介绍,MySQL INSERT INTO语句在实际应用中是经常使用到的语句,所以对其相关的内容还是多多掌握为好。 INSERT [LOW...
根据提供的描述,一次插入1190条数据时,使用 `INSERT INTO...VALUES` 需要大约510毫秒,而使用 `INSERT INTO...SELECT` 只需约16毫秒,这表明在处理大量数据时,`INSERT INTO...SELECT` 的性能显著优于 `INSERT ...
在MySQL数据库中,`INSERT` 与 `SELECT` 的嵌套使用是一种强大的功能,它允许我们在一条SQL语句中从一个或多个数据源提取数据并将其插入到目标表中。这种技术尤其适用于需要合并不同表的数据或者创建数据备份的情况...
replace into语句会根据唯一键/主键删除原有的一条记录, 并且插入一条新的记录来替换原记录。如果没有表不存在唯一键/主键 或者 插入的数据唯一键/主键没有重复的,那么会新增一条记录。 新建一个test表,三个字段...
MySQL中的`REPLACE INTO`语句是一个非常有用的命令,它的工作方式类似于`INSERT`,但带有一种自动删除和替换的功能。当试图插入的数据与表中已存在的唯一索引(包括 PRIMARY KEY 或 UNIQUE 索引)冲突时,`REPLACE ...
MySQL中的`REPLACE INTO`语句是一个非常实用的命令,它结合了`INSERT`和`UPDATE`的功能,简化了在数据库表中处理已有数据的工作流程。这个语句主要用于当你要插入一条新记录,但该记录的主键或唯一索引字段与现有...