`

MySQL中的insert ignore into, replace into等的一些用法总结(转)

 
阅读更多

在MySQL中进行条件插入数据时,可能会用到以下语句,现小结一下。我们先建一个简单的表来作为测试:

CREATE TABLE `books` (

  `id` INT(11) NOT NULL AUTO_INCREMENT,

  `name` VARCHAR(200) NOT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `NewIndex1` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.insert ignore into

当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也

 

会被忽略掉。例如:

INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')

2.on duplicate key update

当primary或者unique重复时,则执行update语句,在原有记录基础上,更新指定字段内容,其它字段内容保留。如update后为无用语

 

句,如id=id,则同1功能相同,但错误不会被忽略掉。例如,为了实现name重复的数据插入不报错,可使用一下语句:

INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id

3.insert … select … where not exist

根据select的条件判断是否插入,可以不光通过primary 和unique来判断,也可通过其它条件。例如:

INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

4.replace into

如果存在primary or unique相同的记录,则先删除掉。再插入新记录。如果记录有多个字段,在插入的时候如果有的字段没有赋值,

 

那么新插入的记录这些字段为空。

REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books

分享到:
评论

相关推荐

    Mysql中replace与replace into的用法讲解

    MySQL数据库中,`REPLACE` 和 `REPLACE INTO` 是两个非常重要的SQL命令,它们主要用于数据的插入和更新操作,特别是在处理唯一性约束时。在理解这两个命令之前,我们需要了解MySQL的基本插入操作`INSERT INTO`。 `...

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

    方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下: INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES (‘test9@...

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

    在案例中,如果使用`REPLACE INTO`代替`INSERT IGNORE`,那么对于`t3`表中的键值 `(5, 'cc', 4)`,原有的记录会被删除,然后插入新的记录 `(5, 'cc', 4)`,从而保持了表中数据的唯一性。 3. **`INSERT ON DUPLICATE...

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

    MySQL是世界上最流行的开源关系型数据库管理系统之一,其高级SQL操作主要涉及数据的增、删、改、查等操作。在实际应用中,批量处理数据往往能显著提高效率,尤其是在大量数据处理时。以下是对批量插入、蠕虫复制以及...

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

    MySQL数据库的更新语句主要涉及两个关键操作:`INSERT`和`REPLACE`。这两个语句主要用于向数据库表中添加新的数据,但它们在处理重复数据时有所不同。 1. `INSERT`语句: - 通常形式:`INSERT INTO tablename ...

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

    MySQL是世界上最流行的关系型数据库管理系统之一,其高级SQL操作涵盖了数据的增、删、改、查等核心功能。本文将详细解析这些操作,特别是数据批量处理的策略。 **数据新增** 1. **批量插入** - **全字段批量插入*...

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

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

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

    在MySQL中,插入数据通常使用`INSERT INTO`语句。例如,向表`emp`插入数据,基本语法如下: ```sql INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...); ``` `REPLACE INTO`语句在插入时会检查唯一索引或主键...

    MySql数据导入导出

    MySQL 是一种广泛使用的开源关系型数据库管理系统,因其高效、稳定及易用性等特点被广大开发者所青睐。在日常维护与管理MySQL数据库的过程中,数据的导入导出是一项基本且重要的操作。本文将详细介绍MySQL数据导入...

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

    总的来说,理解并正确使用`REPLACE INTO`和`INSERT [IGNORE] INTO`是MySQL数据库管理中的重要技能,它们可以帮助你有效地处理重复数据,保持数据的整洁和一致性。在实际工作中,应根据业务需求和数据特性来选择最...

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

    - **冲突替换**:`replace into 表名 [(字段列表)] values(值列表)`,如果主键冲突,MySQL会先删除原有记录,然后插入新的记录。这种方法效率较低,因为它涉及到删除和插入两个步骤。 这三种方法都会对性能产生...

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

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

    防止mysql重复插入记录的方法

    防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,...

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

    MySQL数据库系统提供了多种数据导入导出的方法,这在数据库管理和迁移过程中至关重要。本文主要讨论两种常用的技术:批处理和`LOAD DATA INFILE`命令。 批处理是一种非交互式的MySQL操作方式,适用于执行大量预定义...

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

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

    数据库常见操作语句小结

    在MySQL中,可以通过INSERT IGNORE、REPLACE INTO以及ON DUPLICATE KEY UPDATE等方法来处理主键冲突。而在Oracle中,则需要使用MERGE语句来实现类似的逻辑。MERGE语句可以根据数据源和目标表之间的匹配情况,决定是...

    MySQL小技巧

    在MySQL数据库中,`INSERT`语句是最常用的用于向表中插入数据的方法之一。根据给定文件中的描述,我们可以看到`INSERT`语句有多种格式和用法,能够满足不同的需求场景。 #### 二、基本格式 `INSERT`语句的基本格式...

    MySQL中处理各种重复的一些方法

    如果已经存在重复数据,可以使用`INSERT IGNORE`或`REPLACE`语句来处理。`INSERT IGNORE`会在遇到重复记录时忽略错误,不会插入新记录。而`REPLACE`语句则会删除已存在的重复记录并插入新的记录。 ```sql -- 使用...

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

    总结一下,`INSERT INTO`适用于新数据插入,`REPLACE INTO`适用于完全替换已有数据,`INSERT IGNORE INTO`避免覆盖数据,而`ON DUPLICATE KEY UPDATE`则允许在冲突时更新已有记录。在跨服务器的数据迁移时,需要额外...

Global site tag (gtag.js) - Google Analytics