当前位置: 首页 > 工具软件 > UNIQUE > 使用案例 >

MySQL中主键和unique的区别

束高雅
2023-12-01

主键:primary key 

能够唯一标识表中某一行的属性或属性组

主键也是一个特殊的索引

⼀个表可能有多个候选键,我们可以选择⼀个候选键作为表 的 主键 。

⼀个表最多只能有⼀个主键

主键列不允许空值

主键的值不能重复,通过主键可以找到唯⼀的⼀条记录。具有唯一性

如果主键只是单个列的话,可以直接在该列后声明 PRIMARY  KEY ,⽐如 我们把学⽣信息表 student_info 的 学号 列声明为主键可以这么写:

number INT PRIMARY KEY,

我们也可以把主键的声明单独提取出来,⽤这样的形式声明:

PRIMARY KEY (列名1, 列名2, ...)

PRIMARY KEY (number,id)

在我们创建表的时候就声明了主键的话,MySQL 会对我们插⼊的记录做校 验,如果新插⼊记录的主键值已经在表中存在了,那就会报错

另外主键列默认是有 NOT NULL 属性,也就是必填的,如果填⼊ NULL 值会报 错

UNIQUE属性: 

为某个列添加了⼀个 unique属性插⼊该列的值就不能重复

MySQL 会对我们插⼊的记录做校验,

如果新插⼊记录在该列或者列组合的值已经在表中存在了,那就会报错!

对于不是主键的其他候选键,如果也想让 MySQL 在我们向表中插⼊新记录 的时候帮助我们校验⼀下某个列或者列组合的值是否重复,

单个列声明 UNIQUE 属性:  id_number CHAR(18) UNIQUE,

我们也可以把 UNIQUE 属性的声明单独提取出来

UNIQUE [约束名称] (列名1, 列名2, ...)

主键和 UNIQUE 约束的区别:

主键和 UNIQUE 约束都能保证某个列或者列组合的唯⼀性,但是以下不同

1、⼀张表中只能定义⼀个主键,却可以定义多个 UNIQUE 约束!

2、规定:主键列不允许存放NULL,⽽声明了 UNIQUE 属性的列可以存放 NULL ,⽽且 NULL 可以重复地出现在多条记录中!

 类似资料: