数据库唯一索引

前言

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

唯一索引使用

唯一索引

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

总结

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

相关推荐
今天AI了吗11 小时前
Agent & AI 名词大扫盲
数据库·人工智能·python·sql·rust
长栎11 小时前
你的 AI 品控规则越来越多了——但它们已经在打架了,你没看见
后端
有脚就行11 小时前
第24篇-Go-gRPC推理服务-高性能跨语言通信
开发语言·人工智能·后端·golang
不好听61311 小时前
NestJS 是什么?一张图看懂企业级后端的骨架
后端·nestjs
liuxiaocheng11 小时前
文本生成的进阶:generateText / streamText 里迟早会撞上的东西
前端·后端·ai编程
江小渔12 小时前
训练工程与训练平台入门33 追踪一次 TrainJob 的完整生命周期
后端
无糖可可果12 小时前
NestJS 学习分享:从工厂模式到企业级后端开发
后端
2603_9664372612 小时前
格式化之后数据还能恢复吗?说清恢复条件
linux·运维·数据库
vipbic12 小时前
网站升级了,我却有点舍不得
前端·vue.js·后端
IT_陈寒12 小时前
Java Stream并行处理让我数据库崩了两次
前端·人工智能·后端