PRIMARY KEY 是什么,我们如何在 MySQL 数据库表中使用它?

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_idrole_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。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程