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数据库使用UTF-8中文编码乱码的解决办法
May 26 MySQL
MySQL系列之六 用户与授权
Jul 02 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
详细聊一聊mysql的树形结构存储以及查询
Apr 05 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
优化Mysql查询的示例
Apr 26 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 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/12/06 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
php实现可运算的验证码
2015/11/10 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
jquery+javascript编写国籍控件
2015/02/12 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
python实现线程池的方法
2015/06/30 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python3.9新特性详解
2020/10/10 Python
南京某公司笔试题
2013/01/27 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
老总助理工作岗位职责
2014/02/06 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
检讨书范文2000字
2015/01/28 职场文书
求职简历自我评价范文
2015/03/10 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS