Mysql 语句 insert into 与 replace into 区别

【】insert into 与 replace into 区别

replace into 的运行与insert into 很相似。不同点:

若表中的一个旧记录与一个用于PRIMARY KEY 或 一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。

尤其注意:

除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE INTO 语句没有意义。

因为没有索引被用于确定是否新行复制了其它行。

实例如下:

(1)创建表

-- [1]drop
DROP TABLE `students`; -- [2]create
CREATE TABLE `students` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`sName` VARCHAR (10) NOT NULL,
`sAge` INT (2) UNSIGNED ZEROFILL NOT NULL,
`sAddr` VARCHAR (20) DEFAULT NULL,
`sGrade` INT (2) DEFAULT NULL,
`sStuId` INT (8) DEFAULT NULL,
`sSex` INT (1) UNSIGNED DEFAULT NULL
) ENGINE = INNODB;

(2)插入insert into

SQL语句:

INSERT INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex)
VALUES (1, 'wangchao', 8, 'heyang', 1, 1801111, 0);

执行结果:

Mysql 语句 insert into 与 replace into 区别

查询数据:

Mysql 语句 insert into 与 replace into 区别

(3)插入replace into

SQL语句:

REPLACE INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex)
VALUES (1, 'suntao', 9, 'weinan', 3, 1803110, 1);

执行结果:

Mysql 语句 insert into 与 replace into 区别

注意:共2行受影响,一行被删除,一行被添加。同时具有delete、insert操作。

查询数据:

Mysql 语句 insert into 与 replace into 区别

(4)insert into on duplicate key update

SQL语句:

INSERT INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex)
VALUES (1, 'wangchao', 8, 'heyang', 1, 1801111, 0)
ON DUPLICATE KEY UPDATE
sName = 'wangchao',
sAge = 8,
sAddr = 'heyang',
sGrade = 1,
sStuId = 1801111,
sSex = 0;

执行结果:

Mysql 语句 insert into 与 replace into 区别

注意:共2行受影响,原来行被删除,新的一行被添加。但是主键值id为1保持不变。

查询数据:

Mysql 语句 insert into 与 replace into 区别

Good Good Study,Day Day Up.

顺序 选择 循环 总结

上一篇:关于即来即停app的功能


下一篇:MySQL在INSERT IGNORE未新增记录时避免AUTO_INCREMENT自增