主键与唯一键详解:概念、区别与面试要点
主键与唯一键详解:概念、区别与面试要点
一、核心概念解析
1.1 主键(Primary Key)
主键是数据库表中用于唯一标识每一行记录的列或列组合,具有以下核心特性:
- 唯一性:主键值在整个表中必须唯一,不允许重复
- 非空性:主键列不允许包含NULL值
- 不可变性:主键值一旦确立,原则上不应修改
- 索引自动创建:大多数DBMS会自动为主键创建聚集索引(Clustered Index)
主键是关系型数据库的基石,它建立了表之间的引用完整性基础,是外键(Foreign Key)引用的目标。
1.2 唯一键(Unique Key)
唯一键是保证列或列组合值唯一的约束,主要特性包括:
- 唯一性:与主键相同,保证值的唯一性
- 可空性:允许包含NULL值(但多数DBMS中NULL值只能出现一次)
- 多约束支持:一个表可以定义多个唯一键
- 非聚集索引:通常自动创建非聚集索引(Non-clustered Index)
唯一键常用于业务上需要唯一性但不适合作为主键的场景,如用户邮箱、身份证号等。
二、关键技术区别
2.1 基础特性对比
特性 | 主键(Primary Key) | 唯一键(Unique Key) |
---|---|---|
NULL值允许 | 不允许 | 允许(有限制) |
数量限制 | 每表仅一个 | 每 |