📜  MS SQL Server 中的主键(1)

📅  最后修改于: 2023-12-03 15:17:44.387000             🧑  作者: Mango

MS SQL Server 中的主键

在 MS SQL Server 中,主键(Primary Key)是指一个唯一标识数据库表中每一条记录的列或以多列组成的组合。主键对于确保数据一致性和完整性非常重要。在设计数据库时,主键往往是必需的。

主键的特性

主键具有如下特性:

  • 唯一性:主键列中的每个值都必须是唯一的。且不允许存在任何两行的主键值相同。如果插入具有相同主键值的行,将会抛出一个错误。
  • 非空性:主键列不允许为空。如果插入具有空值的行,将会抛出一个错误。
  • 不可更改性:一旦主键值被指定,就不能改变。如果主键值需要更改,就需要先删除原来的行,再插入新的行。
创建主键

可以使用 SQL Server Management Studio 中的“设计”的视图来创建主键,也可以使用 Transact-SQL 语句来创建主键。

使用 SQL Server Management Studio 创建主键

以下是使用 SQL Server Management Studio 创建主键的步骤:

  1. 打开要创建主键的表,在“对象资源管理器”中选择该表。
  2. 右键单击该表,选择“设计”。
  3. 在“设计”视图中选择要作为主键的列。
  4. 在“列属性”窗口中,右键单击要作为主键的列,选择“设置主键”选项。
  5. 保存更改。
使用 Transact-SQL 语句创建主键

以下是使用 Transact-SQL 语句创建主键的语法:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ... column_n);

其中,table_name 是表名,constraint_name 是约束名(约束名应具有描述性且可以唯一标识主键),column1, column2, ... column_n 是要作为主键的列名。

例如,以下语句创建单列主键:

ALTER TABLE students
ADD CONSTRAINT pk_student_id PRIMARY KEY (student_id);

以下语句创建多列主键:

ALTER TABLE course_schedule
ADD CONSTRAINT pk_course_schedule PRIMARY KEY (course_id, start_time);
删除主键

可以使用 SQL Server Management Studio 中的“设计”的视图来删除主键,也可以使用 Transact-SQL 语句来删除主键。

使用 SQL Server Management Studio 删除主键

以下是使用 SQL Server Management Studio 删除主键的步骤:

  1. 打开带有主键的表,在“对象资源管理器”中选择该表。
  2. 右键单击该表,选择“设计”。
  3. 在“设计”视图中,右键单击要删除的主键,选择“删除主键”选项。
  4. 保存更改。
使用 Transact-SQL 语句删除主键

以下是使用 Transact-SQL 语句删除主键的语法:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

其中,table_name 是表名,constraint_name 是要删除的主键的约束名。

例如,以下语句删除名为 pk_student_id 的主键:

ALTER TABLE students
DROP CONSTRAINT pk_student_id;
注意事项

在创建主键时,要注意以下事项:

  • 主键应该简短、简单明了,且能够唯一标识每行数据。
  • 主键的列应该是稳定的,尽量避免使用经常变化的列。
  • 主键列应该是数值型或字符型,以保证高效查询和索引。
  • 主键不应包含 NULL 值,可以使用 NOT NULL 约束来保证非空性。
  • 主键会自动创建索引,所以应该避免使用过多或过长的主键列。