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 11 MySQL
MySQL获取所有分类的前N条记录
May 07 MySQL
虚拟机linux端mysql数据库无法远程访问的解决办法
May 26 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
如何自己动手写SQL执行引擎
Jun 02 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 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
提升PHP执行速度全攻略(上)
2006/10/09 PHP
phpQuery占用内存过多的处理方法
2013/11/13 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
PHP实现微信对账单处理
2018/10/01 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
详解Python中find()方法的使用
2015/05/18 Python
Python实现的矩阵类实例
2017/08/22 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
中间件分为哪几类
2016/09/18 面试题
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
MySQL深分页问题解决思路
2022/12/24 MySQL