首页 > 数据库 >Mysql - 主键索引和唯一索引的异同点

Mysql - 主键索引和唯一索引的异同点

时间:2024-08-19 14:29:36浏览次数:11  
标签:标识 Mysql 唯一 索引 表中 NULL 主键

唯一索引:

唯一性:唯一索引保证索引列的值是唯一的,不会有重复。比如,一个班级的学号,每个学生都有一个唯一的学号,不能有重复。
可以有多个:一个数据库表中可以有多个唯一索引,就像一个班级可以有多个科目,每个科目都可以有一个唯一的成绩单。
允许空值:唯一索引列中可以有一些空值(没有填写的数据)。就像在一个成绩单上,某门课的成绩可以是空的,表示还没有考试或没有成绩。

主键索引:

唯一且不为空:主键索引也保证索引列的值是唯一的,但更重要的是,它不允许有空值。就像一个班级的学生名单,每个学生必须有一个学号,而且学号不能重复,也不能有空白。
只有一个:一个数据库表中只能有一个主键索引。就像一个班级只能有一个主要的学生名单,不能有多个。
特殊的标识:主键索引被用作表中每条记录的唯一标识。就像学号是学生的唯一标识,通过学号可以准确地找到每一个学生。

用途:

唯一索引:当想要确保某一列的值是唯一的,但又不想让它作为主键时,可以使用唯一索引。比如,想要确保电话号码在数据库中是唯一的,但电话号码不是想要用作主键的数据。
主键索引:当需要一个列来唯一标识数据库表中的每条记录时,可以使用主键索引。主键索引不仅保证唯一性,还保证不会有空值,这样可以确保总能准确地找到需要的记录。

不同点:

对NULL值的处理:

  • 唯一索引:允许多行具有NULL值,但在非NULL值上的数值是唯一的。
  • 主键:主键列不允许NULL值,所有的主键都必须包含唯一且非NULL的值。

列数和组合:

  • 唯一索引:可以是一列或多列的组合,但不限于一列。
  • 主键:通常是表中一列,但也可以是多列的组合。主键是表的唯一标识符,用于唯一地标识表中的每一行数据。

一张表中的使用情况:

  • 唯一索引:一张表可以有多个唯一索引,包含单列和多列的组合。
  • 主键:每张表只能有一个主键,用于标识表中的每一行数据。

相同点:

唯一性约束:唯一索引和主键都确保了相应的列或列组合中的所有值都是唯一的。
索引功能:唯一索引和主键都创建了索引,以提高数据检索的速度。

标签:标识,Mysql,唯一,索引,表中,NULL,主键
From: https://www.cnblogs.com/beatle-go/p/18367212

相关文章

  • MySQL 排他锁之行级锁:使用与实例详解
    在MySQL中,排他锁(ExclusiveLock),也称为写锁(WriteLock),是确保数据一致性的重要工具。当一个事务对某行数据加上排他锁时,其他事务既不能读取也不能修改该数据。这种锁通常在进行更新或删除操作时自动应用,以防止数据冲突。本文将通过具体实例来展示排他锁的使用方法。1.什么是排他锁......
  • MySQL 共享锁之表级锁:使用与实例详解
    在数据库管理中,锁机制是确保数据一致性与完整性的关键工具之一。MySQL中的共享锁(SharedLock)是一种允许多个事务并发读取数据但禁止修改的锁类型。共享锁不仅可以作用于单行数据,还可以作用于整个表。当共享锁用于表级别时,它能有效防止数据在读取期间被修改,从而确保数据的一致性。......
  • MySQL共享锁:使用与实例详解
    在关系型数据库的使用中,锁机制是保障数据一致性和完整性的关键工具。尤其在并发环境下,合理使用锁可以有效避免数据冲突与不一致问题。本文将详细介绍MySQL中的共享锁(SharedLock),并通过实际案例展示其具体应用场景。1.什么是共享锁(SharedLock)?共享锁,也称为读锁(ReadLock),是MySQL......
  • 简单的php连接mysql类
    <?phpclassDB{private$hostname;//数据库主机private$dbname;//数据库private$username;//数据库用户名private$password;//数据库密码private$port;//数据库端口public$db;//连接后的数据库对象//构造函数publicfunction__......
  • MySQL 安装与配置教程:单机、主从复制与集群模式
    目录MySQL简介MySQL安装MySQL基础配置MySQL主从复制配置MySQL集群配置总结1.MySQL简介MySQL是一个广泛使用的关系型数据库管理系统,具有高性能、高可靠性和易用性等特点。它支持多种部署模式,包括单机模式、主从复制模式(用于高可用性和读写分离)以及集群模式(用于分......
  • mysql相关命令学习
    查看mysql服务是否启动service mysql status Windows下通过任务管理器即可查看启动mysql服务service mysql start登录Mysqlmima #查看用户密码可以看到两个用户一个是root一个是admin,然后还有登录密码。启动:mysql -u用户名 -p密码mysql -u用户名......
  • 使用duckdb加载mysql
    安装duckdbhttps://duckdb.org/docs/installation/index加载mysql扩展https://duckdb.org/docs/extensions/mysql.html离线安装的话,可以等INSTALLmysql;超时后,根据它提示的URL到有网环境下载,再传到服务器挂载Nginx,修改/etc/hosts指向,再重新执行INSTALL。Demo代码如下:import......
  • MySQL中的char与varchar
    MySQL中的char与varcharchar类型为固定长度的字符串varchar类型是长度可变的字符串char为固定长度的字符串意思是当我们设置一个字段类型为char时,指定char(100),在计算机底层就会分配足够存储这100个字符的空间。那怕我们使用的长度不够100,剩余的空间在存储时将会被填充以空......
  • ElasticSearch IK分词器的MySQL热部署字典(Docker)
    1.下载插件源码找到自己对应ES版本的下载Releases·infinilabs/analysis-ik·GitHub2.添加mysql驱动依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.......
  • .MySQL数据库主从复制
    数据库主从复制Mysql的主从架构模式,是很多企业⼴泛使⽤,并且是⼴为熟知的⼀种架构模式,这是DBA所应该熟练掌握的技能。1.mysql主从复制主要⽤途a.⽤于备份,避免影响业务b.实时灾备,⽤于故障切换c.读写分离,提供查询服务2.mysql主从复制存在的问题a.主库宕机后,数据可能丢失......