在MySQL中,若想要實(shí)現(xiàn)一個(gè)不存在則插入記錄的操作,我們可以使用INSERT INTO …VALUES()或INSERT INTO …SET語(yǔ)句來實(shí)現(xiàn)。
INSERT INTO 表名 (字段1,字段2,字段3) VALUES (值1,值2,值3)
該語(yǔ)句的功能是向表名為“表名”的數(shù)據(jù)表中插入一條新的記錄,該記錄的字段1的值為“值1”,字段2的值為“值2”,字段3的值為“值3”。如果在表中已經(jīng)存在這樣一條記錄了,則會(huì)插入失敗。
INSERT INTO 表名 SET 字段1=值1,字段2=值2,字段3=值3
該語(yǔ)句的功能也是向表名為“表名”的數(shù)據(jù)表中插入一條新的記錄,不同的是這里使用的是SET語(yǔ)法。這個(gè)語(yǔ)法與前面的語(yǔ)句基本相同,只是把值索引變成了字段索引,更容易辨別要插入的字段和相應(yīng)的值。同樣,如果在表中已經(jīng)存在這樣一條記錄了,則會(huì)插入失敗。
如果我們希望如果記錄不存在,則插入,如果記錄已經(jīng)存在,則更新該記錄,該怎么實(shí)現(xiàn)呢?MySQL提供了INSERT INTO …ON DUPLICATE KEY UPDATE語(yǔ)句。
INSERT INTO 表名 (字段1,字段2,字段3) VALUES (值1,值2,值3) ON DUPLICATE KEY UPDATE 字段1=值1,字段2=值2,字段3=值3
這個(gè)語(yǔ)句的意思是,如果在數(shù)據(jù)表中不存在主鍵或唯一鍵與要插入的記錄相同的記錄,則插入一條新的記錄,其值為字段1=值1,字段2=值2,字段3=值3;否則,更新該記錄的字段1為值1,字段2為值2,字段3為值3。注意,這條語(yǔ)句只會(huì)作用于那些通過主鍵或唯一鍵進(jìn)行INDX索引的字段。如果我們?cè)跀?shù)據(jù)表中并沒有定義主鍵或唯一鍵,那么這個(gè)語(yǔ)句是無法正常使用的。
總之,對(duì)于MySQL存在則插入記錄的操作,我們需要結(jié)合主鍵、唯一鍵來完成,同時(shí)也需要根據(jù)實(shí)際情況使用適當(dāng)?shù)恼Z(yǔ)法和操作。