SQL PRIMARY KEY 约束

SQL PRIMARY KEY 约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

PRIMARY KEY 约束确保值的唯一性,且不能包含 NULL 值(它是 UNIQUE 约束和 NOT NULL 约束的组合)。

一个表只能有一个 PRIMARY KEY 约束。主键可以是单个列,也可以是多个列的组合。

提示:主键是其他表中 FOREIGN KEY 约束的目标(这强制了两个表之间数据的参照完整性)。

CREATE TABLE 上的 PRIMARY KEY

以下 SQL 语句在创建 Persons 表时为 ID 列创建了 PRIMARY KEY

CREATE TABLE Persons (
    ID int PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

多列上的 PRIMARY KEY

要在多个列上定义未命名的 PRIMARY KEY 约束,请使用以下 SQL 语法:

CREATE TABLE Persons (
    ID int,
    LastName varchar(255),
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID, LastName)
);

注意:在上面的例子中,PRIMARY KEY 值由两列(ID + LastName)组成。

要在多列上定义命名的 PRIMARY KEY 约束,请使用以下 SQL 语法:

CREATE TABLE Persons (
    ID int,
    LastName varchar(255),
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID, LastName)
);

注意:在上面的例子中,PRIMARY KEY 被命名为 PK_Person,其值由两列(ID + LastName)组成。

ALTER TABLE 上的 PRIMARY KEY

当表已创建后,要在 ID 列上创建 PRIMARY KEY 约束,请使用以下 SQL:

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

多列上的 PRIMARY KEY

要在多列上定义命名的 PRIMARY KEY 约束,请使用以下 SQL 语法:

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);

注意:使用 ALTER TABLE 添加主键时,主键列在创建表时必须已声明为 NOT NULL

删除 PRIMARY KEY 约束

要删除 PRIMARY KEY 约束,请使用以下 SQL:

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

MySQL:

ALTER TABLE Persons
DROP PRIMARY KEY;