MySQL使用UNIQUE实现数据不重复插入

发布时间 - 2026-01-11 01:12:48    点击率:

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  # unique  # key  # add  # mysql 数据表中查找重复记录  # MySQL根据某一个或者多个字段查找重复数据的sql语句  # mysql查找删除重复数据并只保留一条实例详解  # mysql查询表里的重复数据方法  # MySQL 删除数据库中重复数据方法小结  # MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)  # 很全面的MySQL处理重复数据代码  # MySQL数据库中删除重复记录的方法总结[推荐]  # 分享MYSQL插入数据时忽略重复数据的方法  # 一次现场mysql重复记录数据的排查处理实战记录  # 请使用  # 多个  # 如需  # 就会  # 你可以  # 已被  # 均为  # 如果没有  # 不存在  # 请注意  # 每条  # 则更  # 有一个  # 这一段  # TABLE  # CREATE  # NULL  # sql  # int  # varchar 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 东莞市网站制作公司有哪些,东莞找工作用什么网站好?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel怎么为数据库表字段添加索引以优化查询  Android自定义控件实现温度旋转按钮效果  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Swift中循环语句中的转移语句 break 和 continue  如何在服务器上配置二级域名建站?  如何用西部建站助手快速创建专业网站?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel如何配置Horizon来管理队列?(安装和使用)  网站优化排名时,需要考虑哪些问题呢?  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  黑客入侵网站服务器的常见手法有哪些?  Python文件操作最佳实践_稳定性说明【指导】  如何在万网主机上快速搭建网站?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何快速搭建高效服务器建站系统?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何在IIS中新建站点并配置端口与物理路径?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel如何处理表单验证?(Requests代码示例)  如何自定义建站之星网站的导航菜单样式?  Python高阶函数应用_函数作为参数说明【指导】  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  JavaScript实现Fly Bird小游戏  原生JS实现图片轮播切换效果  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Python结构化数据采集_字段抽取解析【教程】  EditPlus中的正则表达式 实战(2)  如何快速生成凡客建站的专业级图册?  node.js报错:Cannot find module 'ejs'的解决办法  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  香港网站服务器数量如何影响SEO优化效果?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  php json中文编码为null的解决办法  Python制作简易注册登录系统  如何在VPS电脑上快速搭建网站?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  网站页面设计需要考虑到这些问题  桂林网站制作公司有哪些,桂林马拉松怎么报名?  linux top下的 minerd 木马清除方法  中山网站推广排名,中山信息港登录入口?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何用y主机助手快速搭建网站?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  韩国服务器如何优化跨境访问实现高效连接?