INSERT IGNORE 与INSERT INTO的差别

2020-03-30 万国名师 阅读

  INSERT IGNORE 与INSERT INTO的差别就是INSERT IGNORE会疏忽数据库中曾经存在 的数据,假设数据库没有数据,就拔出新的数据,假设有数据的话就跳过这条数据。如许便可以保管数据库中曾经存在数据,到达在间隙中拔出数据的目标。

  eg: insert ignore into table(name) select name from table2

  mysql中经常使用的三种拔出数据的语句:

  insert into表现拔出数据,数据库会检查主键(PrimaryKey),假设出现重复会报错;

  replace into表现拔出交换数据,需求表中有PrimaryKey,或许unique索引的话,假设数据库曾经存在数据,则用新数据交换,假设没有数据后果则和insert into一样; REPLACE语句会前去一个数,来指导受影响的行的数量。该数是被删除和被拔出的行数的和。假设关于一个单行REPLACE该数为1,则一行被拔出,同时没有行被删除。假设该数大年夜于1,则在新行被拔出前,有一个或多个旧行被删除。假设表包罗多个唯一索引,而且新行复制了在分歧的唯一索引中的分歧旧行的值,则有能够是一个单一行交换了多个旧行。 insert ignore表现,假设中曾经存在相反的记录,则疏忽以后新数据;

  下面经过代码说明之间的差别,以下:

  create table testtb( id int not null primary key, name varchar(50), age int );

  insert into testtb(id,name,age)values(1,"bb",13);

  select * from testtb; insert ignore into testtb(id,name,age)values(1,"aa",13);

  select * from testtb;//还是1,“bb”,13,因为id是主键,出现主键重复但应用了ignore则毛病被疏忽 replace into testtb(id,name,age)values(1,"aa",12); select * from testtb; //数据变成1,"aa",12

标签: