唯一索引:
唯一性:唯一索引保证索引列的值是唯一的,不会有重复。比如,一个班级的学号,每个学生都有一个唯一的学号,不能有重复。
可以有多个:一个数据库表中可以有多个唯一索引,就像一个班级可以有多个科目,每个科目都可以有一个唯一的成绩单。
允许空值:唯一索引列中可以有一些空值(没有填写的数据)。就像在一个成绩单上,某门课的成绩可以是空的,表示还没有考试或没有成绩。
主键索引:
唯一且不为空:主键索引也保证索引列的值是唯一的,但更重要的是,它不允许有空值。就像一个班级的学生名单,每个学生必须有一个学号,而且学号不能重复,也不能有空白。
只有一个:一个数据库表中只能有一个主键索引。就像一个班级只能有一个主要的学生名单,不能有多个。
特殊的标识:主键索引被用作表中每条记录的唯一标识。就像学号是学生的唯一标识,通过学号可以准确地找到每一个学生。
用途:
唯一索引:当想要确保某一列的值是唯一的,但又不想让它作为主键时,可以使用唯一索引。比如,想要确保电话号码在数据库中是唯一的,但电话号码不是想要用作主键的数据。
主键索引:当需要一个列来唯一标识数据库表中的每条记录时,可以使用主键索引。主键索引不仅保证唯一性,还保证不会有空值,这样可以确保总能准确地找到需要的记录。
不同点:
对NULL值的处理:
- 唯一索引:允许多行具有NULL值,但在非NULL值上的数值是唯一的。
- 主键:主键列不允许NULL值,所有的主键都必须包含唯一且非NULL的值。
列数和组合:
- 唯一索引:可以是一列或多列的组合,但不限于一列。
- 主键:通常是表中一列,但也可以是多列的组合。主键是表的唯一标识符,用于唯一地标识表中的每一行数据。
一张表中的使用情况:
- 唯一索引:一张表可以有多个唯一索引,包含单列和多列的组合。
- 主键:每张表只能有一个主键,用于标识表中的每一行数据。
相同点:
唯一性约束:唯一索引和主键都确保了相应的列或列组合中的所有值都是唯一的。
索引功能:唯一索引和主键都创建了索引,以提高数据检索的速度。