mysql中如何用命令创建联合唯一索引


Posted in MySQL onApril 20, 2022

联合唯一索引

项目中需要用到联合唯一索引:

例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定:

例如:t_aa 表中有aa,bb两个字段,如果不希望有2条一模一样的记录(即:aa字段的值可以重复; bb字段的值也可以重复,但是一条记录(aa,bb)组合值不允许重复),需要给 t_aa 表添加多个字段的联合唯一索引:

alter table t_aa add unique index(aa,bb);

例如:

alter table use_info add unique index agd(user_account_id,game_id,daily_date);
alter table user_info add unique key agdkey(user_account_id,game_id,daily_date);

这样如果向表中添加相同记录的时候,会返回一下错误信息。

但是配合Insert into…ON DUPLICATE KEY UPDATE…来使用就不会报错,存在相同的记录,直接忽略。

例:

INSERT INTO unit (
    id,
    unitsubclass,
    name,
    state
)
VALUES('1111','CPU','CPU','0' ) ON DUPLICATE KEY UPDATE       unitsubclass=VALUES(unitsubclass),name =VALUES(name),state =VALUES(state)

还有一种情况就是,我们需要为以前的表 创建这个索引,有可能以前的数据中存在重复的记录 那怎么办呢?

alter ignore table t_aa add unique index(aa,bb);

它会删除重复的记录(会保留一条),然后建立唯一索引,高效而且人性化。

扩展延伸:

查看索引 :

show index from 数据库表名  

alter table 数据库add index 索引名称(数据库字段名称)PRIMARY KEY(主键索引):

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) UNIQUE(唯一索引);

ALTER TABLE table_name ADD UNIQUE (column) INDEX(普通索引):

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

FULLTEXT(全文索引):

ALTER TABLE `table_name` ADD FULLTEXT ( `column` )

多列索引:

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

附:mysql中如何用命令创建联合索引

普通联合索引

语法:

create index 索引名称 on 表名(字段名称)

示例:

create index firstIndex on student(id, name, address);

注意:

  • 索引名称、表名、字段名称 都不要用引号括起来
  • 对于联合索引而言,字段名称可以有多个,中间用英文逗号分隔即可
  • 普通索引数据可以重复

结果:

mysql中如何用命令创建联合唯一索引

唯一联合索引

语法:

create unique index 索引名称 on 表名(字段名称)

示例:

create unique index secondIndex on student(id, name, address);

注意:

  • 索引名称、表名、字段名称 都不要用引号括起来
  • 对于联合索引而言,字段名称可以有多个,中间用英文逗号分隔即可
  • 唯一索引数据不可重复

结果:

mysql中如何用命令创建联合唯一索引

总结

到此这篇关于如何利用MySQL添加联合唯一索引的文章就介绍到这了!

MySQL 相关文章推荐
mysql多表查询-笔记七
Apr 05 MySQL
MySQL数字类型自增的坑
May 07 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
MySQL 用 limit 为什么会影响性能
Sep 15 MySQL
MySQL数据库中varchar类型的数字比较大小的方法
Nov 17 MySQL
mysql创建存储过程及函数详解
Dec 04 MySQL
浅谈如何保证Mysql主从一致
Mar 13 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
MySQL去除密码登录告警的方法
Apr 20 #MySQL
MySQL数据库事务的四大特性
Windows 64位 安装 mysql 8.0.28 图文教程
分析MySQL优化 index merge 后引起的死锁
解决MySQL报“too many connections“错误
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 #MySQL
You might like
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
Python中的生成器和yield详细介绍
2015/01/09 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
django富文本编辑器的实现示例
2019/04/10 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
医药工作者的求职信范文
2013/09/21 职场文书
区域销售经理职责
2013/12/22 职场文书
经典大学生求职信范文
2014/01/06 职场文书
公司合作意向书范文
2014/07/30 职场文书
信访工作汇报材料
2014/10/27 职场文书
后勤工作个人总结
2015/02/28 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
简单介绍Python的第三方库yaml
2021/06/18 Python
springboot中的pom文件 project报错问题
2022/01/18 Java/Android