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 相关文章推荐
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
MySQL中你可能忽略的COLLATION实例详解
May 12 MySQL
详解Mysql和Oracle之间的误区
May 18 MySQL
Mysql效率优化定位较低sql的两种方式
May 26 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
MySQL基础快速入门知识总结(附思维导图)
Sep 25 MySQL
mysql创建存储过程及函数详解
Dec 04 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 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
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
Javascript面向对象编程
2012/03/18 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
JavaScript中__proto__与prototype的关系深入理解
2012/12/04 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
vue如何判断dom的class
2018/04/26 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
layui实现数据分页功能
2019/07/27 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Python显示进度条的方法
2014/09/20 Python
在centos7中分布式部署pyspider
2017/05/03 Python
python中import reload __import__的区别详解
2017/10/16 Python
Python延时操作实现方法示例
2018/08/14 Python
Django框架视图介绍与使用详解
2019/07/18 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python实现代码统计器
2019/09/19 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
python实现人工蜂群算法
2020/09/18 Python
《欢乐的泼水节》教学反思
2014/04/22 职场文书
公司授权委托书范文
2014/08/02 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
高通2023 年将发布高性能PC处理器
2022/04/29 数码科技