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 Show Profile
Apr 05 MySQL
MySQL中存储时间的最佳实践指南
Jul 01 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
Mysql中一千万条数据怎么快速查询
Dec 06 MySQL
Pycharm远程调试和MySQL数据库授权问题
Mar 18 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
mysql中如何用命令创建联合唯一索引
Apr 20 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 MySQL
关于mysql中string和number的转换问题
Jun 14 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中intval()等int转换时的意外异常情况
2013/06/21 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
php封装的page分页类完整实例
2016/10/18 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
微信小程序左右滑动的实现代码
2017/12/15 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
基于CSS3实现的几个小loading效果
2018/09/27 HTML / CSS
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
墨西哥购物网站:Elektra
2020/01/21 全球购物
教师党员公开承诺书
2014/03/25 职场文书
给校长的建议书100字
2014/05/16 职场文书
春节随笔
2015/08/15 职场文书
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
Golang jwt身份认证
2022/04/20 Golang