数据库唯一索引

前言

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

唯一索引使用

唯一索引

以下以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;

总结

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

相关推荐
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 12 章 JDBC 与事务 使用 JdbcTemplate 阅读笔记 32
spring boot·笔记·后端
91刘仁德2 小时前
MYSQL 事务原理及使用
android·mysql·adb
wxwx_bscxy3222 小时前
NodeJS 高校学业预警系统10551
mysql·node.js·vue·高校学业预警
步行cgn3 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
袋鼠云数栈3 小时前
实时湖仓如何真正做到“数据够新”?
大数据·数据库·人工智能·数据治理
ACP广源盛139246256733 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
ACP广源盛139246256734 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
桦说编程4 小时前
【AtomicAgent系列1】变异测试——过去做不起,现在 agent 做得起
后端·ai编程·vibecoding
考虑考虑5 小时前
nginx打印请求日志
运维·后端·nginx
倔强的石头_5 小时前
事务边界与批量写入:避免长事务、锁等待和日志压力
数据库