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