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的连接查询
Jun 03 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
mysql主从复制的实现步骤
Oct 24 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
mysql insert 存在即不插入语法说明
Mar 25 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 MySQL
MySQL数据库实验实现简单数据库应用系统设计
Jun 21 MySQL
MySQL存储过程及语法详解
Aug 05 MySQL
SQL Server数据库的三种创建方法汇总
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
PHP4实际应用经验篇(8)
2006/10/09 PHP
PHP版自动生成文章摘要
2008/07/23 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
vue-cli 3.x 修改dist路径的方法
2018/09/19 Javascript
微信小程序开发中var that =this的用法详解
2020/01/18 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
Vue父子之间值传递的实例教程
2020/07/02 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
python实现图片压缩代码实例
2019/08/12 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
python两个list[]相加的实现方法
2020/09/23 Python
Python实现疫情地图可视化
2021/02/05 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
毕业生求职推荐信
2013/11/04 职场文书
电气个人求职信范文
2014/02/04 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
企业趣味活动方案
2014/08/21 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
教务处干事工作总结
2015/08/14 职场文书
导游词之太原天龙山
2020/01/02 职场文书
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python