怎么利用MySQL添加联合唯一索引

联合唯一索引

项目中需要用到联合唯一索引:

例如:有以下需求:每个人每一天只有可能产生一条记录:处了程序约定之外,数据库本身也可以设定:

例如: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添加联合唯一索引的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/157514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月4日 23:34:22
下一篇 2025年12月4日 23:59:58

相关推荐

  • 基于springboot+bootstrap+mysql+redis怎么搭建完整的权限架构

           首先将已经封装好的bootstrap脚本引入到我们现有的工程,目录如下:        到此我们的bootstraop框架引入完成,那么基于bootstrap框架我们现在开始开发属于我们的第一个bootstrap页面登陆页,打开我们的templates文件在底下找到我们login.ht…

    2025年12月5日 数据库
    100
  • 如何用Docker搭建外部可以访问的mysql

    安装mysql 8.0 docker run -p 63306:3306 -e mysql_root_password=zhaooleemysql –name zhaooleemysqldb -d mysql:8.0 p 53306:3306 将docker容器的3306端口映射到宿主机的6330…

    2025年12月5日 数据库
    000
  • PHP一键环境与Docker容器化有什么区别_技术异同分析

    PHP一键环境与Docker本质区别在于封装与隔离方式:前者将服务直接安装于系统,多项目共用环境易冲突,适合新手和简单项目;后者通过容器镜像打包应用及依赖,实现环境隔离与一致,便于迁移和团队协作;一键环境部署直观但可移植性差,Docker学习成本高却支持自动化部署;资源上前者更轻量,后者虽有损耗但利…

    2025年12月5日
    000
  • php如何查询mysql中的数据数量

    一、连接 MySQL 数据库 在使用 PHP 操作 MySQL 数据库前,需要先连接数据库,可以使用 mysqli_connect() 函数来连接。该函数需要传入四个参数,分别是 MySQL 服务器地址、MySQL 用户名、MySQL 密码以及要连接的数据库名。下面是一个连接 MySQL 数据库的示…

    数据库 2025年12月5日
    000
  • MySQL事务实例分析

    mysql 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务。 方式 1 START TRANSACTION 或 BEGIN 开始新的事务 COMMIT…

    2025年12月5日 数据库
    000
  • 动态年份范围选择器在PHP与MySQL中的实现

    本教程详细介绍了如何利用PHP和MySQL构建一个动态的年份范围选择器,用于过滤数据库记录。文章涵盖了从数据库中获取最小和最大年份、生成5年间隔的选项、构建HTML下拉菜单,到处理用户选择并使用SQL的BETWEEN操作符进行数据过滤的全过程。同时强调了使用预处理语句防止SQL注入等安全实践。 1.…

    2025年12月5日
    000
  • MySQL COUNT(*)性能原理是什么

    1.COUNT(1)、COUNT(*)与COUNT(字段)哪个更快? 执行效果: COUNT(*)MySQL 对count(*)进行了优化,count(*)直接扫描主键索引记录,并不会把全部字段取出来,直接按行累加。 COUNT(1)InnoDB引擎遍历整张表,但不取值,server 层对于返回的每…

    数据库 2025年12月5日
    000
  • PHP匿名函数变量传递机制深度解析:参数、遮蔽与use关键字

    本文深入探讨php匿名函数中变量传递的三种主要机制:直接通过参数列表传递、利用变量遮蔽以及通过`use`关键字引入外部变量。文章将详细解释每种方法的原理、适用场景及其与标准函数调用行为的一致性,帮助开发者清晰理解匿名函数如何访问和处理变量,并提供官方行为的解释。 PHP匿名函数(也称为闭包)是PHP…

    2025年12月5日
    100
  • 如何在Laravel中实现搜索功能

    在laravel中实现搜索功能最直接的方式是使用数据库like查询,适用于小规模应用;若需处理大规模数据或复杂搜索逻辑,则应引入laravel scout配合algolia或meilisearch等专业搜索服务。1. 对于简单场景,通过表单提交、路由定义和控制器中的like查询即可实现基础搜索功能;…

    2025年12月5日
    000
  • SQL文件如何Mysql 导入数据库

    1、在 win 系统下使用 mysql 中的source命令即可实现导入 sql 文件: mysql -u root -pmysql>use 数据库名mysql>source d:/数据库名 这样就完成了 Win 系统下的 SQL 文件的导入。 2、在 Linux 系统下导入 SQL 文…

    数据库 2025年12月5日
    100
  • MySQL的GTID复制怎么应用

    自MySQL 5.6.5起,引入了一种基于全局事务标识符(GTID)的复制方法。GTID确保了在集群中每个提交到主库的事务都有一个唯一的标识符。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。 GTID是什么 GTID (Global Transaction ID) 是对于一个已提交事务的编…

    2025年12月5日
    000
  • 清理PHPCMS数据库冗余数据的操作步骤

    识别并清理phpcms数据库冗余数据需从历史版本、无效附件、重复统计、缓存、垃圾评论等入手。1.识别冗余:通过查看大表结构定位冗余来源;2.备份数据库:使用mysqldump或系统工具备份;3.清理历史版本:编写sql删除旧版本;4.清理无效附件:用php脚本校验文件存在性后删除;5.合并重复统计:…

    2025年12月5日 后端开发
    000
  • MySQL如何添加或减少日期时间

    添加/减少日期时间 命令: DATE_ADD(date,interval expr unit)DATE_SUB(date,interval expr unit) 作用: 增加/减少日期时间 应用场景:当前时间的前一天,前几分钟。 常用于数据统计。 例子: mysql> select date_…

    数据库 2025年12月5日
    000
  • Java中Servlet的生命周期 图解Servlet从初始化到销毁的过程

    servlet的生命周期主要包括加载、初始化、处理请求和服务终止四个阶段。1.加载阶段:servlet容器在首次接收请求或启动时加载servlet类;2.初始化阶段:容器创建实例并调用init()方法,该方法仅执行一次,用于读取配置、建立数据库连接等初始化操作;3.处理请求阶段:每次请求到达时,容器…

    2025年12月5日 java
    000
  • MySql如何查出符合条件的最新数据行

    结合示例: 这是一张记录人员来访的记录表。 数据表里的数据准确记录了每个人来访时带的帽子颜色、时间、人员编码(每个人唯一)。 数据样例: 需要做到的是 : 拿出符合条件的最新的来访记录。 你会最怎么做? 先实现一点的, 取出 A101 这个人员编码的 最新来访记录 。 首先先展示错误的sql示例: …

    2025年12月5日 数据库
    000
  • PHP与SQLite数据库交互时如何优化查询的处理方法?

    合理使用索引能显著提升查询速度,但避免频繁更新字段加索引;2. 使用预处理语句减少重复解析开销,提高安全性与效率;3. 控制查询范围避免全表扫描,指定字段并用limit和offset分页;4. 合理使用事务合并写操作,提高批量数据处理效率。在sqlite中优化php查询需从索引设计、预处理、查询控制…

    2025年12月5日 后端开发
    000
  • 如何在Laravel中配置数据库索引

    在laravel中配置数据库索引的核心方法是使用迁移系统定义索引以提升查询性能。1. 在创建表时,可在schema::create回调中通过index()、unique()等方法直接添加索引;2. 对已有表,可创建新迁移文件并在schema::table中添加索引;3. laravel支持多种索引类…

    2025年12月5日
    100
  • mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用

    聚集索引(Clustered Index) 聚集索引就是按照每张表的主键构造一棵b+树,同时叶子节点中存放的即为整张表的行记录数据。 举个例子,直观感受下聚集索引。 创建表t,并以人为的方式让每个页只能存放两个行记录(不清楚怎么人为控制每页只存放两个行记录): 最后《MySQL技术内幕》的作者通过分…

    2025年12月5日 数据库
    000
  • MySQL如何实现主从复制 MySQL主从复制的配置与常见问题解决

    mysql主从复制的原理是基于二进制日志(binlog),主服务器将数据变更记录到binlog中,从服务器通过i/o线程请求并接收binlog事件,写入中继日志(relay log),再由sql线程读取中继日志并重放,从而实现数据同步;1. 主服务器开启binlog并设置唯一server-id;2.…

    2025年12月5日
    000
  • mysql卸载安装的方法是什么

    一、Windows系统下MySQL的卸载 打开“计算机”——“控制面板”——“程序”——“程序和功能”选项。 找到MySQL程序,单击它,然后选择“卸载”选项。 MySQL的配置文件和数据文件可以在弹出的卸载窗口中选择删除。如果你希望重新安装MySQL,可以保留这些文件。 卸载完成后,请在文件浏览器…

    数据库 2025年12月5日
    000

发表回复

登录后才能评论
关注微信