MySQL主键
...大约 2 分钟MySQL
MySQL主键是用于唯一标识表中每一行数据的标识符。它必须满足以下条件:
- 主键列的值必须唯一,不能有重复。
- 主键列的值不能为空(NULL)。
- 一个表只能有一个主键。
- 主键可以由一列或多列组成,如果是多列组合,则这些列的组合值必须唯一。
- MySQL会自动为主键列添加非空约束。
- 主键列通常具有
AUTO_INCREMENT
属性,用于自动生成唯一的序列号。
在MySQL中,主键可以通过以下两种方式定义:
- 在创建表时定义主键:通过在列定义后面添加
PRIMARY KEY
关键字来定义主键。例如:
CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `email` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 在已有表中添加主键:使用
ALTER TABLE
语句。例如:
ALTER TABLE `users` ADD PRIMARY KEY (`id`);
举例
有一个数据表的结构中有主键PRIMARY KEY (
owner,
name) USING BTREE
,解释如下:
在关系型数据库中,一个表只能有一个主键,用来唯一标识每一行数据。在示例中的 PRIMARY KEY (
owner,
name) USING BTREE
中,并不表示有两个主键,而是表示有一个复合主键,由多个列( owner
和 name
)组合而成。
在关系数据库中,主键可以是单个列,也可以是多个列的组合。在这种情况下,这些列组合在一起形成了一个复合主键。复合主键的存在可以确保表中的每一行数据都有一个唯一的标识符,由多个列的值共同确定。
在复合主键的情况下,主键值的组合必须是唯一的,而不是单个列的值必须是唯一的。也就是说,对于复合主键 (owner
, name
) ,主键值的组合必须在整个表中是唯一的。这意味着即使 owner
或 name
中的某一个列存在相同的值,只要它们的组合是唯一的,也是允许的。
Powered by Waline v3.2.0