MySQL使用UNIQUE實現(xiàn)數(shù)據(jù)不重復插入
SQL UNIQUE 約束
UNIQUE 約束唯一標識數(shù)據(jù)庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
下面的 SQL 在 “Persons” 表創(chuàng)建時在 “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 約束,以及為多個列定義 UNIQUE 約束,請使用下面的 SQL 語法:
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) )
當表已被創(chuàng)建時,如需在 “Id_P” 列創(chuàng)建 UNIQUE 約束,請使用下列 SQL:
ALTER TABLE Persons ADD UNIQUE (Id_P)
如需命名 UNIQUE 約束,并定義多個列的 UNIQUE 約束,請使用下面的 SQL 語法:
ALTER TABLE Persons ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
如需撤銷 UNIQUE 約束,請使用下面的 SQL:
ALTER TABLE Persons DROP INDEX uc_PersonID
這樣每次插入重復記錄時MySQL就會提示Duplicate entry value1-value2 for key uni_que,當然你可以在insert的時候加入ignore來忽略掉
現(xiàn)在保證了無重復記錄后,我們要開始記錄不存在則插入,存在則更新操作
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...
這個語句的意思是,插入值,如果沒有該記錄執(zhí)行
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
這一段,如果存在該記錄,那么執(zhí)行
UPDATE field1='value1', field2='value2', field3='value3', ...
- mysql 數(shù)據(jù)表中查找重復記錄
- MySQL根據(jù)某一個或者多個字段查找重復數(shù)據(jù)的sql語句
- mysql查找刪除重復數(shù)據(jù)并只保留一條實例詳解
- mysql查詢表里的重復數(shù)據(jù)方法
- MySQL 刪除數(shù)據(jù)庫中重復數(shù)據(jù)方法小結(jié)
- MySQL查詢重復數(shù)據(jù)(刪除重復數(shù)據(jù)保留id最小的一條為唯一數(shù)據(jù))
- 很全面的MySQL處理重復數(shù)據(jù)代碼
- MySQL數(shù)據(jù)庫中刪除重復記錄的方法總結(jié)[推薦]
- 分享MYSQL插入數(shù)據(jù)時忽略重復數(shù)據(jù)的方法
- 一次現(xiàn)場mysql重復記錄數(shù)據(jù)的排查處理實戰(zhàn)記錄
相關(guān)文章
mysql和sqlserver查詢數(shù)據(jù)庫表的數(shù)量方法詳解
這篇文章主要介紹了mysql和sqlserver查詢數(shù)據(jù)庫表的數(shù)量方法詳解,本文給大家分享SQL語句寫法,文末補充介紹了查詢sqlserver 數(shù)據(jù)庫中各表條數(shù)的語句,需要的朋友可以參考下2023-07-07MySQL登錄時出現(xiàn) Access denied for user ‘
今天打開mysql的時候突然提示:Access denied for user 'root'@'localhost' (using password: YES) 在網(wǎng)上搜索了很多文章,本文就來做一下總結(jié),介紹了幾種場景的解決方法,感興趣的可以了解一下2024-03-03MySQL關(guān)于字符串中數(shù)字排序的問題分析
這篇文章主要介紹了MySQL關(guān)于字符串中數(shù)字排序的問題,結(jié)合實例形式分析了mysql按照數(shù)值排序的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-06-06解決 phpmyadmin #2002 無法登錄 MySQL 服務(wù)器
我以前使用phpmyadmin都是很正常的,從來沒有出現(xiàn)過問題。但是今天出現(xiàn)了提示#2002無法登陸到MYSQL服務(wù)器2012-04-04深入理解sqlserver中的字符編碼、排序規(guī)則、nvarchar和varchar
本文主要介紹了深入理解sqlserver中的字符編碼、排序規(guī)則、nvarchar和varchar,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09MySQL使用觸發(fā)器實現(xiàn)數(shù)據(jù)自動更新的應(yīng)用實例
觸發(fā)器是非常常見的自動化數(shù)據(jù)庫操作方式,無論是在數(shù)據(jù)更新、刪除還是需要自動添加一些內(nèi)容到數(shù)據(jù)表上,觸發(fā)器都可以發(fā)揮作用,熟悉 SQL 的基本語法和一些常見的用例,可以幫助你合理地設(shè)置自己的數(shù)據(jù)庫操作流程,2024-01-01連接MySql速度慢的解決方法(skip-name-resolve)
這篇文章主要介紹了連接MySql速度慢的解決方法(skip-name-resolve),需要的朋友可以參考下2015-09-09MySQL存儲過程之流程控制while,repeat,loop循環(huán)
這篇文章主要介紹了MySQL存儲過程之流程控制while,repeat,loop循環(huán),循環(huán)中的代碼會運行特定的次數(shù),或者是運行到特定條件成立時結(jié)束循環(huán)2022-07-07