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 06 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
详解Mysql和Oracle之间的误区
May 18 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
MySQL中utf8mb4排序规则示例
Aug 02 MySQL
sql注入教程之类型以及提交注入
Aug 02 MySQL
MySQL 1130异常,无法远程登录解决方案详解
Aug 23 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
MySQL详细讲解变量variables的用法
Jun 21 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
计数器详细设计
2006/10/09 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
php修改文件上传限制方法汇总
2015/04/07 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
不用ajax实现点击文字即可编辑的方法
2007/12/16 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
基于vue2实现上拉加载功能
2017/11/28 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
Python list操作用法总结
2015/11/10 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
高山背包:High Sierra
2017/11/23 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
自主招生学校推荐信
2014/09/26 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
原生JS实现分页
2022/04/19 Javascript
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python