MySQL中你知道几种防止数据重复的方法?
2023-03-14 22:22:25 时间
很多时候在日常的项目中,有些数据是不允许重复的,例如用户信息中的登陆名,一旦存在同一个登陆名,必然不知道到底是哪个用户执行登陆操作,导致系统异常。
常常在防止数据重复的情况下,我们都采用唯一索引去解决,如下
- CREATE TABLE `login` (
- `id` bigint unsigned NOT NULL AUTO_INCREMENT,
- `name` varchar(255) DEFAULT NULL,
- `password` varchar(255) DEFAULT NULL,
- PRIMARY KEY (`id`),
- UNIQUE KEY `idx_name` (`name`) USING BTREE
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
当我们执行同样的name的数据时则会报如下错误
除了这个方法,你还知道其他的吗?
下面我们介绍另外几种方法
insert ignore into
插入数据时,如果数据存在,则忽略此次插入
INSERT ignore INTO login(`name`,`password`) VALUES("ganhuojun","password")
replace into
插入数据时,如果数据存在,则删除再插入
REPLACE INTO login(`name`,`password`) VALUES("ganhuojun","password")
执行后发现,2行生效,其中一行删除,1行新增
insert if not exists
sql的语法为insert into … select … where not exist ...,该语句先判断mysql数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略
- INSERT INTO login ( `name`, `password` ) SELECT
- 'ganhuojun',
- 'password'
- FROM
- login
- WHERE
- NOT EXISTS (
- SELECT
- `name`
- FROM
- login
- WHERE
- `name` = 'ganhuojun'
- )
on duplicate key update
插入数据时,如果数据存在,则执行更新操作
- INSERT INTO login ( `name`, `password` )
- VALUES
- ( "ganhuojun", "password" )
- ON DUPLICATE KEY UPDATE PASSWORD = 'passwd'
相关文章
- MySQL如何查看未提交的事务SQL
- 数据库审核工具SQLE部署及使用
- 数据库审核工具SQLE接口调用
- MySQL 降序索引简介?
- 虾皮二面:为什么数据库连接池不采用 IO 多路复用?
- 知识图谱技术还能阻止人类自杀?究竟是如何实现的?
- 深拷贝 和 浅拷贝 的区别 ?
- 你需要知道的无代码数据分析工具
- 怎样快速地迁移 MySQL 中的数据?
- Redis缓存的特殊用法以及与本地缓存一起构建多级缓存的实现
- 振弦采集模块配置工具VMTool通用串口调试模块
- Mysql入门基础,增删改查
- 使用管控平台管理redis集群
- 系统分析师案例必备知识点汇总---2023系列文章四
- 热点综述 | 肿瘤微环境中的细胞间通信推断和分析:数据资源和计算策略
- 故障分析 | 库表名-大小写不规范,运维两行泪
- 空转工具盘点 | 空间转录组细胞类型聚类方法综合比较
- 故障分析 | cassandra 集群数据故障转移
- 技术分享 | MySQL Shell 收集 MySQL 诊断报告(上)
- 超详细 | 生物医学研究和临床应用中scRNA-seq的数据分析指南