最新的Web开发教程
 

SQL主键约束


SQL主键约束

主键约束唯一标识数据库表中的每个记录。

主键必须包含唯一的值。

主键列不能包含空值。

大多数表应该有一个主键,并且每个表只能有一个主键。


SQL主键约束的CREATE TABLE

下面的SQL创建的一个PRIMARY KEY "P_Id"栏时, "Persons"是创建的表:

MySQL:

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)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

要允许PRIMARY KEY约束的命名,并为多个列定义PRIMARY KEY约束,可以使用下面的SQL语法:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)

Note:在上面的例子中,只有一个主键(pk_PersonID)。 但是,主密钥的值是由两列(P_ID +名字)。


SQL PRIMARY KEY约束的ALTER TABLE

要在创建PRIMARY KEY约束"P_Id"时,已创建的表列,请使用以下SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)

要允许PRIMARY KEY约束的命名,并为多个列定义PRIMARY KEY约束,可以使用下面的SQL语法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

Note:如果您使用ALTER TABLE语句来添加主键,主键列(S)必须已经被宣布为不包含空值(第一次创建表时)。


要删除主键约束

要删除PRIMARY KEY约束,使用下面的SQL:

MySQL:

ALTER TABLE Persons
DROP PRIMARY KEY

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID