在使用mysql數(shù)據(jù)庫(kù)時(shí),我們經(jīng)常需要插入數(shù)據(jù)到數(shù)據(jù)庫(kù)表中。但是,有時(shí)候我們并不想插入某些數(shù)據(jù)。這時(shí)候,就需要使用mysql插入語(yǔ)句有就不插入的特性了。
INSERT INTO table_name (column1, column2, column3, …) VALUES (value1, value2, value3, …) ON DUPLICATE KEY UPDATE column1=value1, column2=value2, …;
上述mysql插入語(yǔ)句中,如果表中存在一個(gè)相同的主鍵(或唯一組合鍵)數(shù)據(jù),則會(huì)執(zhí)行更新操作,而不是插入操作。
以下是一個(gè)例子:
CREATE TABLE student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT, CONSTRAINT uc_student UNIQUE (name, age) ); INSERT INTO student(name, age)VALUES('Tom', 18) ON DUPLICATE KEY UPDATE age=19;
在上述例子中,表student中的name和age列組成了一個(gè)唯一組合鍵。當(dāng)執(zhí)行插入操作時(shí),如果表中已經(jīng)存在相同的name和age組合,則會(huì)執(zhí)行更新操作。在更新時(shí),將age更新為19。否則,會(huì)執(zhí)行插入操作,將數(shù)據(jù)插入到表中。
總之,mysql插入語(yǔ)句有就不插入的特性非常實(shí)用,能夠有效地避免重復(fù)插入數(shù)據(jù),節(jié)省了數(shù)據(jù)庫(kù)存儲(chǔ)空間和維護(hù)成本。