mysql中經(jīng)常使用的3種插入數(shù)據(jù)的語(yǔ)句:
insert into表示插入數(shù)據(jù),數(shù)據(jù)庫(kù)會(huì)檢查主鍵(PrimaryKey),如果出現(xiàn)重復(fù)會(huì)報(bào)錯(cuò);
replace into表示插入替換數(shù)據(jù),需求表中有PrimaryKey,或unique索引的話,如果數(shù)據(jù)庫(kù)已存在數(shù)據(jù),則用新數(shù)據(jù)替換,如果沒(méi)有數(shù)據(jù)效果則和insert into1樣;
REPLACE語(yǔ)句會(huì)返回1個(gè)數(shù),來(lái)唆使受影響的行的數(shù)目。該數(shù)是被刪除和被插入的行數(shù)的和。如果對(duì)1個(gè)單行REPLACE該數(shù)為1,則1行被插入,同時(shí)沒(méi)有行被刪除。如果該數(shù)大于1,則在新行被插入前,有1個(gè)或多個(gè)舊行被刪除。如果表包括多個(gè)唯1索引,并且新行復(fù)制了在不同的唯1索引中的不同舊行的值,則有多是1個(gè)單1行替換了多個(gè)舊行。
insert ignore表示,如果中已存在相同的記錄,則疏忽當(dāng)前新數(shù)據(jù);
注:這些都是根據(jù)主鍵來(lái)的。。。
下面通過(guò)代碼說(shuō)明之間的區(qū)分,以下:
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是主鍵,出現(xiàn)主鍵重復(fù)但使用了ignore則毛病被疏忽
replace into testtb(id,name,age)values(1,"aa",12);
select * from testtb; //數(shù)據(jù)變成1,"aa",12