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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
MySQL创建索引需要了解的
Apr 08 MySQL
MySQL命令行操作时的编码问题详解
Apr 14 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
mysq启动失败问题及场景分析
Jul 15 MySQL
MySQL命令无法输入中文问题的解决方式
Aug 30 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
Mar 23 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
MySQL中的全表扫描和索引树扫描
May 15 MySQL
MySQL存储过程及语法详解
Aug 05 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计算数组相同值出现次数的代码(array_count_values)
2015/01/20 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
python装饰器decorator介绍
2014/11/21 Python
python实现在windows下操作word的方法
2015/04/28 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
快速解决PyCharm无法引用matplotlib的问题
2018/05/24 Python
python 自动去除空行的实例
2018/07/24 Python
python树莓派红外反射传感器
2019/01/21 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Keras自定义IOU方式
2020/06/10 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
农业大学毕业生的个人自我评价
2013/10/11 职场文书
主题酒店策划书
2014/01/28 职场文书
可口可乐广告词
2014/03/20 职场文书
四年级学生评语大全
2014/04/21 职场文书
依法行政工作汇报
2014/10/28 职场文书
听证会主持词
2015/07/03 职场文书
教师岗位说明书
2015/09/30 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
go xorm框架的使用
2021/05/22 Golang
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python