数据库唯一索引

前言

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

唯一索引使用

唯一索引

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

总结

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

相关推荐
uzong10 小时前
后端系统设计文档模板
后端
幽络源小助理10 小时前
SpringBoot+Vue车票管理系统源码下载 – 幽络源免费项目实战代码
vue.js·spring boot·后端
TDengine (老段)10 小时前
TDengine Python 连接器入门指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
uzong11 小时前
软件架构指南 Software Architecture Guide
后端
又是忙碌的一天11 小时前
SpringBoot 创建及登录、拦截器
java·spring boot·后端
萧曵 丶11 小时前
事务ACID特性详解
数据库·事务·acid
kejiayuan11 小时前
CTE更易懂的SQL风格
数据库·sql
kaico201811 小时前
MySQL的索引
数据库·mysql
勇哥java实战分享12 小时前
短信平台 Pro 版本 ,比开源版本更强大
后端
学历真的很重要12 小时前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain