MYSQL - 什么是主键?

5

我正在学习Mysql并创建数据库。在查阅了多个网站后,primary key的定义如下:

PRIMARY KEY约束可以唯一地标识数据库表中的每个记录。

以下是使用示例:

    CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    PRIMARY KEY (P_Id)          //primary key is on this line
)

然而,我仍然不知道它的用途和为什么我们需要它。因此我的问题是:

有人可以用简单易懂的英语向我解释一下主键是什么,为什么我们需要它以及它的作用是什么吗?

谢谢。


唯一困难的部分是...这是哪个其他问题的副本? - p.campbell
可能是MySQL中主键、唯一键和索引的区别是什么?的重复问题。 - p.campbell
可能是MySQL中Key、Primary Key、Unique Key和Index的区别的重复问题。 - philipxy
3个回答

6

主键是一列, 它被定义为唯一标识表中每一行的。

此外,通过将一列定义为PRIMARY KEY,它可以在定义引用完整性约束时作为外键在其他表中引用。


你可能会发现http://stackoverflow.com/questions/8038641/please-confirm-my-use-of-primary-key-and-unique-index/8038647#8038647有用。 - Michael Durrant

3

主键是行的唯一标识符。通常情况下,如果您指定该值为自动增量,则由数据库管理系统自动分配。因此,如果您有一个组织中人员的数据库,他们的主键可能是员工号。每次添加新员工时,他们都会获得一个独特的员工号,通常是前一个员工号加1。

如果没有主键,您无法区分两个名为John Smith的员工(没有其他信息)。希望这足够清楚。


1
我会说“有时由DBMS分配”而不是“通常”,但除此之外我同意。 - Richard A
好的,说得对,我有点挑剔。不想引发争端。 - Richard A
@RichardA 我想现在“正常”的情况是没有DBA参与(就像没有[真正的] DBA参与任何层面一样...) - user166390

1

简单来说,

主键 = 非空 + 唯一性

这意味着任何被指定为主键的列既不会接受空值,也不会接受重复值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接