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);
执行结果:
查询数据:
(3)插入replace into
SQL语句:
REPLACE INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex) VALUES (1, 'suntao', 9, 'weinan', 3, 1803110, 1);
执行结果:
注意:共2行受影响,一行被删除,一行被添加。同时具有delete、insert操作。
查询数据:
(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;
执行结果:
注意:共2行受影响,原来行被删除,新的一行被添加。但是主键值id为1保持不变。
查询数据:
Good Good Study,Day Day Up.
顺序 选择 循环 总结