SQL Primary Key 主键

一列或多列称为Primary Key 主键 (PK),它唯一地标识表中的每一行。

如果要创建主键,则应在创建或修改表时定义 PRIMARY KEY 约束。

当多个列用作主键时,称为复合主键。

在设计复合主键时,您应该使用尽可能少的列。它对存储和性能都有好处,用于主键的列越多,所需的存储空间就越多。

在性能方面,更少的数据意味着数据库可以更快地处理。

一、SQL Primary Key 主键 特点

  • Primary Key主键强制执行表的实体完整性。
  • Primary Key主键始终具有唯一数据。
  • Primary Key主键长度不能超过 900 字节。
  • Primary Key主键不能有空值。
  • Primary Key主键不能有重复值。
  • 一张表只能包含一个Primary Key主键约束。

注意:当我们为表指定主键约束时,数据库引擎会自动为主键列创建唯一索引。

二、SQL Primary Key 主键 优点

Primary Key 主键的主要优点是我们可以提高访问速度。

注意:在 Oracle 中,包含主键不允许超过 32 列。

三、一列 Primary Key 主键

以下 SQL 命令在创建“students”表时在“S_Id”列上创建一个 PRIMARY KEY。

MySQL:

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

SQL Server, Oracle, MS Access:

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

四、多列 Primary Key 主键

MySQL、SQL Server、Oracle、MS Access:

CREATE TABLE students  
(  
S_Id int NOT NULL,  
LastName varchar (255) NOT NULL,  
FirstName varchar (255),  
Address varchar (255),  
City varchar (255),  
CONSTRAINT pk_StudentID PRIMARY KEY (S_Id, LastName)  
)  

注意:您应该注意,在上面的示例中只有一个 PRIMARY KEY (pk_StudentID)。但是,它由两列(S_Id 和 LastName)组成。

五、ALTER TABLE 上的 SQL 主键

当表已经创建并且您想要在“S_Id”列上创建 PRIMARY KEY 约束时,您应该使用以下 SQL:

一列的主键:

ALTER TABLE students  
ADD PRIMARY KEY (S_Id) 

多列的主键:

ALTER TABLE students  
ADD CONSTRAINT pk_StudentID PRIMARY KEY (S_Id,LastName)  

注意:当您使用 ALTER TABLE 语句添加主键时,主键列不能包含 NULL 值(当第一次创建表时)。

六、如何删除主键约束?

如果要 DROP(删除)主键约束,应使用以下语法:

MySQL:

ALTER TABLE students  
DROP PRIMARY KEY  

SQL Server / Oracle / MS Access:

ALTER TABLE students  
DROP CONSTRAINT pk_StudentID  

 

热门文章

优秀文章