Mysql 简明教程
MySQL - REPLACE Query
MySQL REPLACE Statement
通常,如果我们希望向现有表添加记录,我们将使用 MySQL INSERT 语句。同样,我们也可以使用 MySQL REPLACE 语句添加新记录或替换现有记录。replace 语句与 insert 语句类似。
唯一的区别是,如果使用 insert 语句插入记录而现有列有 UNIQUE 或 PRIMARY KEY 约束,如果新记录对该列具有相同的值,将生成一个错误。
在 REPLACE 语句的情况下,如果你尝试插入具有 UNIQUE 或 PRIMARY KEY 约束的列的重复值的新列,旧记录将完全由新记录替换。
Syntax
以下是 MySQL REPLACE 语句的语法 −
REPLACE INTO table_name (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
其中,table_name 是你需要向其中插入数据的表的名称,(column1, column2, column3,…columnN) 是列的名称,(value1, value2, value3,…valueN) 是记录中的值。
Example
让我们从在 MySQL 数据库中使用 ID 列为主键约束创建一个名为 CUSTOMERS 的表开始,如下所示 −
CREATE TABLE CUSTOMERS (
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
以下查询向上述创建的表中添加两条记录 −
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 );
执行以下查询以显示 CUSTOMERS 表中存在的所有记录:
select * FROM CUSTOMERS;
以下是 CUSTOMERS 表中的记录:
现在,让我们尝试插入具有 ID 值 2 的另一条记录 −
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(2, 'Kaushik', 23, 'Kota', 2000.00 );
由于 ID 列具有主键约束,因此将生成如下所示的错误 −
ERROR 1062 (23000): Duplicate entry '2' for key 'customers.PRIMARY'
现在,使用 REPLACE 语句替换表中现有的记录 −
REPLACE INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(2, 'Kaushik', 20, 'Kota', 2000.00 );
Inserting records using REPLACE statement
当使用 REPLACE 语句插入记录时,如果该记录与表中任何现有的记录不匹配,那么该记录就会作为一个新记录添加进来。