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中你可能忽略的COLLATION实例详解
May 12 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
Mysql如何实现不存在则插入,存在则更新
Mar 25 MySQL
Mysql使用全文索引(FullText index)的实例代码
Apr 03 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL数据库配置信息查看与修改方法详解
Jun 25 MySQL
关于MySQL中explain工具的使用
May 08 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
用PHP4访问Oracle815
2006/10/09 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
菜单效果
2006/10/14 Javascript
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
Python读写Excel文件的实例
2013/11/01 Python
Python计算已经过去多少个周末的方法
2015/07/25 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python 获取项目根路径的代码
2019/09/27 Python
python中使用np.delete()的实例方法
2021/02/01 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
JAVA招聘远程笔试题
2015/07/23 面试题
读书月活动方案
2014/05/22 职场文书
设计大赛策划方案
2014/06/13 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
教师节倡议书2015
2015/04/27 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
运动会100米广播稿
2015/08/19 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸