REPLACE 的运行与 INSERT 很相似。只有一点例外,假如表中的一个旧记录与一个用于 PRIMARY KEY 或一个 UNIQUE 索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除
。
注意,除非表有一个 PRIMARY KEY 或 UNIQUE 索引,否则,使用一个 REPLACE 语句没有意义
。该语句会与 INSERT 相同,因为没有索引被用于确定是否新行复制了其它的行。
所有列的值均取自在 REPLACE 语句中被指定的值。
所有缺失的列被设置为各自的默认
值,这和 INSERT 一样。您不能从当前行中引用值, 也不能在新行中使用值。如果您使用一个例如 "SET col_name =
col_name + 1" 的赋值,则对位于右侧的列名称的引用会被作为 DEFAULT(col_name) 处理。因此,该赋值相当于 SET
col_name = DEFAULT(col_name) + 1。
为了能够使用 REPLACE,您必须同时拥有表的 INSERT 和 DELETE 权限。
REPLACE 语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行 REPLACE 该数为1,则
一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中
的不同旧行的值,则有可能是一个单一行替换了多个旧行。
受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换)。
如果您正在使用C API,则可以使用mysql_affected_rows()函数获得受影响的行数。
目前,您不能在一个子查询中,向一个表中更换,同时从同一个表中选择。
下文时算法的详细说明(此算法也用于LOAD DATA…REPLACE):
1. 尝试把新行插入到表中
2. 当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:
a. 从表中删除含有重复关键字值的冲突行
b. 再次尝试把新行插入到表中
使用格式如下:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},…),(…),…
或:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
或:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT …
分享到:
相关推荐
在SQL语句中,`REPLACE INTO` 和 `INSERT INTO` 都是用来向数据库表中添加数据的命令,但它们之间存在重要的区别。本文将详细阐述这两种操作的区别以及使用场景。 首先,`INSERT INTO` 是最常用的插入数据的方式。...
在MySQL数据库中,`REPLACE INTO` 和 `INSERT INTO` 是两种不同的数据插入语句,它们各有其特定的用途和行为。理解它们的区别对于优化数据库操作至关重要。 首先,`INSERT INTO` 是最基本的数据插入语句,它用于在...
在SQL Server中,有时我们需要将现有表中的特定数据导出为INSERT语句,以便在其他数据库或备份中重建这些记录。这通常在迁移数据、创建测试数据或者进行数据备份时非常有用。以下是如何将SQL Server表中指定数据转化...
根据提供的文件信息,我们可以构建一个详细的SQL Server存储过程来实现将表中的数据转换为`INSERT INTO`脚本的功能。此存储过程将适用于多种数据类型,并能够动态生成插入语句,以便用户可以方便地导出数据作为脚本...
MySQL中的`REPLACE`和`REPLACE INTO`是两种用于数据插入或更新的SQL语句,它们在处理数据冲突时有独特的策略。首先,我们来分别解析这两个命令。 `REPLACE`函数通常指的是字符串处理函数,它在MySQL中用于替换字符...
根据提供的文件信息,本文将详细解释 MySQL 中 `REPLACE INTO` 的使用方法及特性,并对比其与 `INSERT INTO` 的不同之处。 ### MySQL REPLACE INTO 介绍 #### 1. REPLACE INTO 的基本概念 `REPLACE INTO` 是 ...
在MySQL中,`REPLACE INTO` 和 `INSERT INTO ON DUPLICATE KEY UPDATE` 是两种处理数据插入时冲突的方法,主要用于处理当试图插入一条记录时,若已有相同唯一键值的记录存在,应该如何操作的情况。 1. **REPLACE ...
PL/SQL语句是Oracle数据库中的一种编程语言,用于创建存储过程、函数、触发器等数据库对象。PL/SQL语句可以用于实现复杂的业务逻辑,提高数据库的性能和安全性。 知识点一:存储过程的创建和管理 * 存储过程是PL/...
本主题聚焦于如何利用C#从Excel导入数据并生成SQL语句,如INSERT、DELETE和UPDATE,以实现数据的高效管理。 首先,我们需要了解C#中处理Excel的基本步骤。C#提供了多种库来读取Excel文件,如EPPlus、NPOI和...
2. **INSERT语句**:用于向数据库表中插入新记录,可以插入单行数据,也可以使用INSERT INTO SELECT从其他查询结果中插入数据。 3. **UPDATE语句**:用于更新现有数据,通常与WHERE子句配合使用,以确定要更新哪些...
MySQL中的`REPLACE INTO`语句是一个非常实用的数据库操作,它在特定场景下能替代`INSERT`和`UPDATE`的组合使用。本篇文章将深入浅出地解析`REPLACE INTO`的原理、使用方法以及适用场景,并通过实例来演示其工作方式...
MySQL中的`REPLACE INTO`语句是一个非常实用的命令,它结合了`INSERT`和`UPDATE`的功能,简化了在数据库表中处理已有数据的工作流程。这个语句主要用于当你要插入一条新记录,但该记录的主键或唯一索引字段与现有...
本文档介绍了一种通过编写存储过程来实现这一目标的方法:将数据库中的数据转换为SQL INSERT语句。 #### 一、存储过程概述 **存储过程**是一种在数据库服务器上预先编译好的SQL程序块,它能够接受输入参数,并返回...
根据给定的文件信息,以下是对Oracle SQL语句集锦中的关键知识点的详细解析: ### Oracle SQL基础操作 #### 数据定义语言(DDL) - **创建表(Create Table)**: `CREATE TABLE`语句用于在数据库中创建一个新的表...
本篇文章将深入探讨SQL语句和PL/SQL的相关知识,旨在帮助读者理解和掌握这两种强大的数据库操作工具。 SQL语句主要分为以下几类: 1. **数据查询语言 (DQL)**:DQL用于从数据库中获取数据。最基础的查询语句是`...
SQL语句插入数据中含有单引号的解决方法 在 SQL 语句中插入数据时,如果数据中含有单引号,可能会导致语句执行错误。这是因为单引号是 SQL 语句中的特殊字符,用于定义字符串的开始和结束。如果插入的数据中包含单...
ORACLE 常用 SQL 语句 ORACLE 是一种关系数据库管理系统,它... Insert Into Table1 Values('Weather'); 将创建一个表,并插入一条记录。 这些 ORACLE SQL 语句可以帮助用户更好地操作和管理数据库,提高工作效率。