SQL UNIQUE 約束
UNIQUE 約束唯一標識數據庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
下面的 SQL 在 “Persons” 表創建時在 “Id_P” 列創建 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)
)
當表已被創建時,如需在 “Id_P” 列創建 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來忽略掉
現在保證了無重復記錄后,我們要開始記錄不存在則插入,存在則更新操作
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...) ON DUPLICATE KEY UPDATE field1='value1', field2='value2', field3='value3', ...
這個語句的意思是,插入值,如果沒有該記錄執行
INSERT INTO tablename (field1, field2, field3, ...) VALUES ('value1', 'value2','value3', ...)
這一段,如果存在該記錄,那么執行
UPDATE field1='value1', field2='value2', field3='value3', ...
您可能感興趣的文章:- mysql 數據表中查找重復記錄
- MySQL根據某一個或者多個字段查找重復數據的sql語句
- mysql查找刪除重復數據并只保留一條實例詳解
- mysql查詢表里的重復數據方法
- MySQL 刪除數據庫中重復數據方法小結
- MySQL查詢重復數據(刪除重復數據保留id最小的一條為唯一數據)
- 很全面的MySQL處理重復數據代碼
- MySQL數據庫中刪除重復記錄的方法總結[推薦]
- 分享MYSQL插入數據時忽略重復數據的方法
- 一次現場mysql重復記錄數據的排查處理實戰記錄