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