能够唯一标识表中某一行的属性或属性组。
主键也是一个特殊的索引。
⼀个表可能有多个候选键,我们可以选择⼀个候选键作为表 的 主键 。
⼀个表最多只能有⼀个主键,
主键列不允许空值,
主键的值不能重复,通过主键可以找到唯⼀的⼀条记录。具有唯一性
如果主键只是单个列的话,可以直接在该列后声明 PRIMARY KEY ,⽐如 我们把学⽣信息表 student_info 的 学号 列声明为主键可以这么写:
number INT PRIMARY KEY,
我们也可以把主键的声明单独提取出来,⽤这样的形式声明:
PRIMARY KEY (列名1, 列名2, ...)
PRIMARY KEY (number,id)
在我们创建表的时候就声明了主键的话,MySQL 会对我们插⼊的记录做校 验,如果新插⼊记录的主键值已经在表中存在了,那就会报错。
另外主键列默认是有 NOT NULL 属性,也就是必填的,如果填⼊ NULL 值会报 错
为某个列添加了⼀个 unique属性从此插⼊该列的值就不能重复
MySQL 会对我们插⼊的记录做校验,
如果新插⼊记录在该列或者列组合的值已经在表中存在了,那就会报错!
对于不是主键的其他候选键,如果也想让 MySQL 在我们向表中插⼊新记录 的时候帮助我们校验⼀下某个列或者列组合的值是否重复,
单个列声明 UNIQUE 属性: id_number CHAR(18) UNIQUE,
我们也可以把 UNIQUE 属性的声明单独提取出来
UNIQUE [约束名称] (列名1, 列名2, ...)
主键和 UNIQUE 约束都能保证某个列或者列组合的唯⼀性,但是以下不同
1、⼀张表中只能定义⼀个主键,却可以定义多个 UNIQUE 约束!
2、规定:主键列不允许存放NULL,⽽声明了 UNIQUE 属性的列可以存放 NULL ,⽽且 NULL 可以重复地出现在多条记录中!