数据库唯一索引

前言

数据库唯一索引,保证索引字段的组合值在表中唯一,而且可以借助唯一索引,保证字段唯一性,使得重复数据不用重复插入

唯一索引使用

唯一索引

以下以MySQL为例子

sql 复制代码
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE sys_user (
  id bigint NOT NULL AUTO_INCREMENT,
  name VARCHAR(255),
  delete_flag INT,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY unique_name_delete_flag (name, delete_flag)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入数据

sql 复制代码
insert into sys_user (name, delete_flag) values ('aa', 1);

结果为 再次执行该语句,会发现

不能再重复插入了

唯一索引注意的点

对于唯一索引的字段,不要使用空值插入,要使用非空值,否则会出现数据重复

sql 复制代码
insert into sys_user (name, delete_flag) values (NULL, 1);

无论执行多少次,都会插入数据

删除索引

csharp 复制代码
drop index unique_name_delete_flag on sys_user;

总结

唯一索引能帮助加快查询,以及防止重复数据插入,但是在使用唯一索引必须要注意使用非空值插入

相关推荐
csxin几秒前
使用 OAuth 2.0 Client 来管理Token,避免事故再次发生
后端
hqxstudying2 分钟前
前后端交流
java·css·后端·html·json
这里有鱼汤3 分钟前
用卡尔曼滤波器计算个股票相对大盘的相关性——β值
后端·python
blurblurblun20 分钟前
Redis实战(7)-- 高级特性 Redis Stream数据结构与基础命令
数据库·redis·缓存
涡能增压发动积29 分钟前
动动嘴就能让浏览器自动来掘金签到?用这个Agent来帮你
后端
追逐时光者34 分钟前
C#/.NET/.NET Core优秀项目和框架2025年7月简报
后端·.net
think12335 分钟前
Nacos:微服务世界的"智能管家",让你的代码从此不再迷路
后端·spring cloud
永卿0011 小时前
mysql 日志机制
数据库·mysql
青灯文案11 小时前
Spring Boot 的事务注解 @Transactional 失效的几种情况
java·spring boot·后端
wu~9701 小时前
Mysql深入学习:慢sql执行
mysql