PRIMARY KEY 是什么,我们如何在 MySQL 数据库表中使用它?
阅读更多:MySQL 教程
什么是 PRIMARY KEY?
在MySQL数据库表中,每个表都应该有一个主键(primary key),主键是一个可以唯一标识表中每一行数据的列,也就是说,主键列的每个值都是唯一的。
主键可以是单列(primary key)或者多列(composite primary key),如果它包含多列,那么这些列的组合必须是唯一的。
如何使用 PRIMARY KEY?
我们可以在创建表的时候定义 PRIMARY KEY,也可以在已经创建好的表上添加 PRIMARY KEY 约束。
创建表时定义 PRIMARY KEY
我们可以使用如下语句在创建表时定义 PRIMARY KEY:
CREATE TABLE `users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`age` INT(3) NOT NULL,
PRIMARY KEY (`id`)
);
在上面的例子中,我们在创建表users
时定义了id
列为 PRIMARY KEY。同时,我们也开启了id
列的自增功能,每次向表中添加一条记录时,id
列的值会自动增加1。
修改已存在的表添加 PRIMARY KEY
如果在创建表的时候没有定义PRIMARY KEY,那么我们也可以在已存在的表创建 PRIMARY KEY:
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
在上面的例子中,我们在已存在的users
表中创建了 id
列为 PRIMARY KEY。需要注意的是,在创建 PRIMARY KEY 的时候,列中不能有重复的值。
多列 PRIMARY KEY
PRIMARY KEY 也可以包含多列,这被称为复合主键(composite primary key)。在定义复合主键时,我们需要在 PRIMARY KEY 后添加多列名称。例如:
CREATE TABLE `user_role` (
`user_id` INT(11) NOT NULL,
`role_id` INT(11) NOT NULL,
PRIMARY KEY (`user_id`, `role_id`)
);
在上面的例子中,我们定义了一个名为user_role
的表,其中包含两列,user_id
和role_id
。两列组合成了一个 PRIMARY KEY。
外键与 PRIMARY KEY
在涉及多个表的时候,我们会使用到外键(foreign key)。外键可以用来建立两个表之间的关联,并且保证相关数据的一致性。
在建立外键关系时,被参考的表必须有 PRIMARY KEY。外键的作用就是把其他表的数据与主表的数据进行关联。例如,如果我们添加一个名为user_role
的表,其中的user_id
列是对user
表的id
列进行引用,我们需要按照以下方式定义 user_role
表中的user_id
列:
CREATE TABLE `user_role` (
`user_id` INT(11) NOT NULL,
`role_id` INT(11) NOT NULL,
PRIMARY KEY (`user_id`, `role_id`),
CONSTRAINT `fk_user_id`
FOREIGN KEY (`user_id`)
REFERENCES `users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
);
在上面的例子中,我们添加了一个指定名为fk_user_id
的 FOREIGN KEY。这个语句指定了 user_role
表中的 user_id
列是一个 FOREIGN KEY,并且引用了 users
表中的 id
列作为参考。
结论
在MySQL 中,PRIMARY KEY 是一个可以唯一标识表中每一行数据的列。我们可以在创建表时或者修改已存在的表时定义 PRIMARY KEY。PRIMARY KEY 也可以包含多列,这被称为复合主键。在外键与 PRIMARY KEY 关联时,被参考的表必须有 PRIMARY KEY,建议在所有的表中都定义 PRIMARY KEY。