SQL Server - 主键在这里你将学习什么是主键以及如何在 SQL Server 数据库的新表或现有表中创建主键。
什么是主键?在 SQL Server 中,主键是一种约束,用于唯一标识表中的每一行。它强制执行表中的数据完整性。
一个表只能有一个主键。主键可以定义在一个列上,也可以定义在多个列的组合上,这被称为复合主键。主键不能超过 16 列,总键长不能超过 900 字节。主键唯一标识表中的每一行。它通常定义在标识列上。主键列不允许 NULL 或重复值。如果尝试这样做,将引发错误。主键约束中定义的所有列都必须定义为 NOT NULL 列。如果未指定聚集或非聚集,则在表上没有聚集索引时,将为主键列创建唯一的聚集索引。这使得在查询中包含主键列时检索数据更快。SQL Server 中创建主键有两种方式
使用 T-SQL使用 SSMS (SQL Server Management Studio)使用 T-SQL 创建主键主键可以在 create table T-SQL 脚本中配置。在所有列声明的末尾添加 CONSTRAINT 语句。
语法:主键 复制CONSTRAINT
以下查询创建了一个新的 Employee 表,并在 EmployeeID 列上定义了一个主键。
示例:创建主键 复制CREATE TABLE Employee(
EmployeeID int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(50) NOT NULL,
LastName nvarchar(50) NOT NULL,
EMail nvarchar(50) NULL,
Phone nvarchar(20) NULL,
HireDate date NULL,
ManagerID int NULL,
Salary float NULL,
DepartmentID smallint NULL,
CONSTRAINT PK_Employee_EmployeeID PRIMARY KEY (EmployeeID))如果要将多个列配置为主键,请在括号中指定列名。例如,以下配置 EmployeeID 和 ManagerID 作为主键。
示例:创建主键 复制CREATE TABLE Employee(
EmployeeID int IDENTITY(1,1) NOT NULL,
FirstName nvarchar(50) NOT NULL,
LastName nvarchar(50) NOT NULL,
EMail nvarchar(50) NULL,
Phone nvarchar(20) NULL,
HireDate date NULL,
ManagerID int NOT NULL,
Salary float NULL,
DepartmentID smallint NULL,
CONSTRAINT PK_Employee_EmployeeID PRIMARY KEY (EmployeeID, ManagerID))如果主键包含多个列,则允许一个列中存在重复值,但主键所有列的值的每个组合都必须是唯一的。
在现有表中创建主键使用 ALTER TABLE 语句在现有表中添加主键。
以下查询为 HR 数据库中 Employee 表的 EmployeeID 列创建了一个主键。
示例:在现有表中创建主键 复制ALTER TABLE Employee
ADD CONSTRAINT PK_Employee_EmployeeID PRIMARY KEY (EmployeeID)注意:如果使用 ALTER 语句向列添加主键,请确保主键列声明为 NOT NULL。
使用 SSMS 创建主键打开 SSMS 并在对象资源管理器中展开数据库,右键单击要添加主键的表,然后单击“设计”,如下所示。
这将在查询窗口中打开表设计器。
现在,单击要定义主键的列的行选择器。要选择多行作为复合主键,请按住 Ctrl 键并选择其他列。
在这里,我们将 EmployeeID 设置为主键,所以右键单击它,然后在上下文菜单中单击 设置主键 选项,如下所示。
最后,按 Ctrl + S 键保存表,或单击顶部工具栏中的保存图标。
设置主键后,您将在设置为主键的列前面看到主键符号,如下所示。
使用索引/键创建主键定义主键的另一种方法是使用“索引/键”对话框。在这里,您将获得更多配置选项。
右键单击表设计器并选择 索引/键,如下所示。
这将打开“索引/键”对话框,您可以在其中添加或删除表上定义的索引或主键/外键。单击“添加”按钮添加键。
在这里,您可以配置主键列、名称、聚集索引等。保存表,主键将被创建。