SQL 主键
一个列或多个列被称为 主键(PK) 用于 唯一标识表中的每一行数据 。
如果想要创建一个主键,应该在创建或修改表时定义PRIMARY KEY约束。
当使用多个列作为主键时,称为 复合主键 。
在设计复合主键时,应尽可能少地使用列。使用越多的列作为主键,所需的存储空间就会越多,这对存储和性能都不利。
就性能而言,数据量越少,数据库处理速度就越快。
主键的记住事项:
- 主键强制表的实体完整性。
- 主键始终具有唯一数据。
- 主键长度不能超过900个字节。
- 主键不能有空值。
- 主键不能有重复值。
- 一个表只能包含一个主键约束。
当我们为表指定主键约束时,数据库引擎会自动为主键列创建一个唯一索引。
主键的主要优势:
这种唯一性的主要优势是我们可以获得 快速访问 。
在oracle中,主键不允许包含超过32列。
单列的SQL主键:
以下SQL命令在创建”students”表时在”S_Id”列上创建一个主键。
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),
)
多列的SQL主键:
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)
)
注意: 您应该注意,在上面的示例中只有一个主键(pk_StudentID)。但它由两列(S_Id和LastName)组成。
ALTER TABLE上的SQL主键
当表已经创建好,您想在”S_Id”列上创建一个主键约束时,应使用以下SQL:
一个列上的主键:
ALTER TABLE students
ADD PRIMARY KEY (S_Id)
多列上的主键:
ALTER TABLE students
ADD CONSTRAINT pk_StudentID PRIMARY KEY (S_Id,LastName)
当您使用ALTER TABLE语句添加主键时,主键列不能包含NULL值(当表首次创建时)。
如何删除主键约束?
如果您想删除主键约束,您应该使用以下语法:
MySQL:
ALTER TABLE students
DROP PRIMARY KEY
SQL Server / Oracle / MS Access:
ALTER TABLE students
DROP CONSTRAINT pk_StudentID