`

replace insert into 和insert ignore into

    博客分类:
  • SQL
阅读更多

mysql中常用的三种插入数据的语句:


insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错;


replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引的话,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同 时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的 值,则有可能是一个单一行替换了多个旧行。

 
insert ignore表示,如果中已经存在相同的记录,则忽略当前新数据;


下面通过代码说明之间的区别,如下:

create table testtb(
id int not null primary key,
name varchar(50),
age int
);
insert into testtb(id,name,age)values(1,"bb",13);
select * from testtb;
insert ignore into testtb(id,name,age)values(1,"aa",13);
select * from testtb;//仍是1,“bb”,13,因为id是主键,出现主键重复但使用了ignore则错误被忽略
replace into testtb(id,name,age)values(1,"aa",12);
select * from testtb; //数据变为1,"aa",12

 

分享到:
评论

相关推荐

    Mysql中replace与replace into的用法讲解

    而 `REPLACE` 的效率相比 `INSERT IGNORE` 或 `INSERT ON DUPLICATE KEY UPDATE` 在某些情况下可能会更高,因为它不需要检查每一行是否存在冲突,而是直接进行替换。 总结来说,`REPLACE` 和 `REPLACE INTO` 是...

    MySQL 高级SQL操作(数据的增、删、改、查) (2).pdf

    INSERT IGNORE INTO t_3 VALUES ('username', 'password', 12345678); ``` - 记录用户登录时间,如果存在则更新,不存在则新增,可以利用`ON DUPLICATE KEY UPDATE`来实现。 ```sql CREATE TABLE t_4 (username ...

    MySQL 高级SQL操作(数据的增、删、改、查).docx

    insert ignore into t_3 values ('username', '12345678', 12345678); create table t_4 ( username varchar(50) primary key, logintime int unsigned ) charset utf8; insert into t_4 values ('username', ...

    MySQL数据库之UPDATE更新语句精解.docx

    - `REPLACE`的行为类似于`INSERT IGNORE`和`DELETE`的组合,当遇到冲突时,它会删除已存在的行,然后插入新的行。 在实际应用中,选择使用`INSERT`还是`REPLACE`取决于业务需求。如果你希望保留原始数据并忽略新...

    MySql避免重复插入记录的几种方法

    方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录...还有个应用就是复制表,避免重复记录: 代码如下: INSERT IGNORE INTO `table_1` (`name`) SELECT `name` FROM `table_2`; 方案二:使用

    MySql三种避免重复插入数据的方法

    当遇到主键或唯一键冲突的情况,有三种主要的插入方法可以帮助我们避免重复数据,分别是`INSERT IGNORE`、`REPLACE INTO`和`INSERT ON DUPLICATE KEY UPDATE`。下面我们将详细探讨这三种方法的用法及其区别。 1. **...

    MySQL 高级SQL操作(数据的增、删、改、查) (2).docx

    - **忽略冲突**:`insert ignore into 表名 [(字段列表)] values(值列表)`,冲突的记录将被忽略,原有的记录保持不变。 - **冲突更新**:`insert into 表名 [(字段列表)] values(值列表) on duplicate key update ...

    MySQL 高级SQL操作(数据的增、删、改、查).pdf

    3. 冲突替换:使用`replace into`语句,它会先删除已存在的记录,然后插入新的记录,但效率相对较低,因为它需要检查冲突。 举例说明,假设我们有一个用户注册表`t_3`,其中`username`为主键,我们可以使用`insert ...

    分享MYSQL插入数据时忽略重复数据的方法

    本篇文章将详细介绍两种有效的方法,即使用`REPLACE INTO`和`INSERT [IGNORE] INTO`语句,以及它们在处理重复数据时的工作原理。 首先,我们来看`REPLACE INTO`方法。这个SQL命令的作用是如果新插入的行与表中已有...

    完美解决Thinkphp3.2中插入相同数据的问题

    本文将详细探讨如何在ThinkPHP 3.2版本中处理插入重复数据的问题,以及MySQL中的两种解决方案——`ON DUPLICATE KEY UPDATE` 和 `REPLACE INTO`。 首先,我们需要理解问题背景。在使用ThinkPHP 3.2进行数据插入时,...

    mysql不同数据库不同数据表导入数据

    本文将详细讨论如何在不同的数据库和数据表之间导入数据,重点关注`INSERT INTO`、`REPLACE INTO`以及它们的不同使用场景。 首先,我们来看基础的`INSERT INTO`语句。当目标数据库的表中不存在与导入数据匹配的记录...

    数据库系统及原理及MYSQL应用教程表数据的维护实验报告

    `INSERT IGNORE INTO`则会在遇到冲突时忽略错误,继续执行其他插入操作。 ```sql INSERT IGNORE INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ``` **数据更新** 更新表数据使用`UPDATE`语句,结合`WHERE`...

    MySQL小技巧

    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] ``` 其中,`tbl_name`...

    mysql双主主键冲突处理办法.docx

    综上所述,处理 MySQL 双主主键冲突通常涉及查找冲突数据、修改现有数据、使用 REPLACE INTO 或 INSERT IGNORE INTO 语句,以及优化复制策略。根据具体需求和业务场景,选择最适合的解决方案以确保数据的一致性和...

    MySQL数据导入导出方法知识.pdf

    INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Block"); INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL, "Newton"); INSERT INTO Customers (Customer_ID, Last_Name) VALUES(NULL,...

    mysql insert if not exists防止插入重复记录的方法

    在MySQL中,当我们需要向数据库表中插入数据时,但又希望避免插入已经存在的记录,可以采用`INSERT IGNORE`、`REPLACE INTO`或者结合`SELECT`与`NOT EXISTS`子句的方式来实现。这里我们将详细探讨`NOT EXISTS`子句在...

    sqlite避免重复插入数据

    INSERT OR IGNORE INTO users (username, password) VALUES ('example_username', 'example_password'); ``` 这样,即使多次执行相同的插入语句,也不会导致数据库中的重复数据问题。 #### 5. 总结 通过上述介绍...

Global site tag (gtag.js) - Google Analytics