MySQL使用UNIQUE實(shí)現(xiàn)數(shù)據(jù)不重復(fù)插入
SQL UNIQUE 約束
UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
請(qǐng)注意,每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
下面的 SQL 在 “Persons” 表創(chuàng)建時(shí)在 “Id_P” 列創(chuàng)建 UNIQUE 約束:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (Id_P) )
如果需要命名 UNIQUE 約束,以及為多個(gè)列定義 UNIQUE 約束,請(qǐng)使用下面的 SQL 語(yǔ)法:
CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName) )
當(dāng)表已被創(chuàng)建時(shí),如需在 “Id_P” 列創(chuàng)建 UNIQUE 約束,請(qǐng)使用下列 SQL:
ALTER TABLE Persons ADD UNIQUE (Id_P)
如需命名 UNIQUE 約束,并定義多個(gè)列的 UNIQUE 約束,請(qǐng)使用下面的 SQL 語(yǔ)法:
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
如需撤銷 UNIQUE 約束,請(qǐng)使用下面的 SQL:
ALTER TABLE Persons DROP INDEX uc_PersonID
這樣每次插入重復(fù)記錄時(shí)MySQL就會(huì)提示Duplicate entry value1-value2 for key uni_que,當(dāng)然你可以在insert的時(shí)候加入ignore來(lái)忽略掉
現(xiàn)在保證了無(wú)重復(fù)記錄后,我們要開始記錄不存在則插入,存在則更新操作
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...
這個(gè)語(yǔ)句的意思是,插入值,如果沒(méi)有該記錄執(zhí)行
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
這一段,如果存在該記錄,那么執(zhí)行
UPDATE field1='value1', field2='value2', field3='value3', ...
- mysql 數(shù)據(jù)表中查找重復(fù)記錄
- MySQL根據(jù)某一個(gè)或者多個(gè)字段查找重復(fù)數(shù)據(jù)的sql語(yǔ)句
- mysql查找刪除重復(fù)數(shù)據(jù)并只保留一條實(shí)例詳解
- mysql查詢表里的重復(fù)數(shù)據(jù)方法
- MySQL 刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)方法小結(jié)
- MySQL查詢重復(fù)數(shù)據(jù)(刪除重復(fù)數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))
- 很全面的MySQL處理重復(fù)數(shù)據(jù)代碼
- MySQL數(shù)據(jù)庫(kù)中刪除重復(fù)記錄的方法總結(jié)[推薦]
- 分享MYSQL插入數(shù)據(jù)時(shí)忽略重復(fù)數(shù)據(jù)的方法
- 一次現(xiàn)場(chǎng)mysql重復(fù)記錄數(shù)據(jù)的排查處理實(shí)戰(zhàn)記錄
相關(guān)文章
MySQL之FIND_IN_SET()的用法及說(shuō)明
這篇文章主要介紹了MySQL之FIND_IN_SET()的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
關(guān)于join?on和where執(zhí)行順序分析
這篇文章主要介紹了join?on和where執(zhí)行順序,如果是inner?join,?放on和放where產(chǎn)生的結(jié)果一樣,?執(zhí)行計(jì)劃也是一樣,但推薦使用on,本文對(duì)join?on和where執(zhí)行順序給大家詳細(xì)講解,需要的朋友可以參考下2023-03-03
MySQL登錄時(shí)出現(xiàn) Access denied for user ‘
今天打開mysql的時(shí)候突然提示:Access denied for user 'root'@'localhost' (using password: YES) 在網(wǎng)上搜索了很多文章,本文就來(lái)做一下總結(jié),介紹了幾種場(chǎng)景的解決方法,感興趣的可以了解一下2024-03-03
MySQL 使用DQL命令查詢數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了MySQL 使用DQL命令查詢數(shù)據(jù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

