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创建高性能索引的全步骤
May 02 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
MySQL表字段时间设置默认值
May 13 MySQL
正确使用MySQL update语句
May 26 MySQL
Mysql数据库按时间点恢复实战记录
Jun 30 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
详解MySql中InnoDB存储引擎中的各种锁
Feb 12 MySQL
MySQL实战记录之如何快速定位慢SQL
Mar 23 MySQL
mysql insert 存在即不插入语法说明
Mar 25 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
讲解MySQL增删改操作
May 06 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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
使用Apache的rewrite技术
2006/06/22 PHP
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
php常用正则函数实例小结
2016/12/29 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
jquery 关于event.target使用的几点说明介绍
2013/04/26 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
详解vuex状态管理模式
2018/11/01 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
python交互式图形编程实例(三)
2017/11/17 Python
python实现将文件夹内的每张图片批量分割成多张
2019/07/22 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
Python中SQLite如何使用
2020/05/27 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
《学会合作》教学反思
2014/04/12 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
写给同事的离职感言
2015/08/04 职场文书
小学教师教育随笔
2015/08/14 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js