📜  更改 SQL Server 中的主键列

📅  最后修改于: 2022-05-13 01:55:18.232000             🧑  作者: Mango

更改 SQL Server 中的主键列

主键是指表中唯一标识表中一行的列。它包含唯一值并且不能包含 NULL 值。出于演示的目的,我们将在名为“geeks”的数据库中为 geeks 表创建 geeks。

第 1 步:创建数据库

使用以下命令在 SQL Server 中创建数据库

询问:

CREATE DATABASE geeks;

步骤 2:使用数据库



使用以下 SQL 语句将数据库上下文切换到 geeks:

询问:

USE geeks;

在 SQL Server 中,主键约束由以下语法定义:

句法:

CREATE TABLE tablename (
column_name datatype NOT
NULL PRIMARY KEY);

我们也可以在创建表后定义主键,但要确保列上有 NOT NULL 约束。定义表后声明主键的语法:

句法:

Alter table table_name add  primary key (column_name);

要更改 SQL Server 中的主键列,请执行以下步骤:

  • 删除已定义的主键。
  • 添加一个新列作为主键。

第 1 步:创建表



我们在 geeks 数据库中有以下 geeks for geeks 表

询问:

CREATE TABLE geeksforgeeks(
ID int PRIMARY KEY,
FIRSTNAME varchar(30),
LASTNAME varchar(30),
CITY varchar(18),
EmpID int NOT NULL
);

第二步:插入数据到表中

询问:

INSERT INTO geeksforgeeks VALUES 
(1,'Romy', 'Kumari', 'Delhi',1900089),
(2,'Avinav', 'Pandey', 'Delhi',1909089),
(3,'Nikhil', 'Kalra', 'Punjab',1000089),
(4,'Mansi', 'Lal', 'Uttarpradesh',1905689),
(5,'Rinkle', 'Arora', 'Haryana',1900989),
(6,'Sakshi', 'Kumari', 'Delhi',1700089),
(7,'Soumya', 'Shriya', 'Bihar',1660089),
(8,'Mitu', 'Kumari', 'Rajasthan',1340089);

第 3 步:检查表的内容

询问:

SELECT * FROM geeksforgeeks;

输出:

检查哪一列设置为主键,我们可以使用以下命令:

询问:



SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE  ;

输出:

在上图中,您可以看到 ID 列是主键。我们可以使用图中提到的 CONSTRAINT_NAME 删除这个主键。从这里复制 CONSTRAINT_NAME 以删除主键。

删除主键的命令:

询问:

ALTER TABLE geeksforgeeks DROP CONSTRAINT PK__geeksfor__3214EC275032BA6D;

添加 EmpID 作为新的主键(总是检查是否指定了 NOT NULL 约束,否则会抛出错误)

询问:

ALTER TABLE geeksforgeeks ADD PRIMARY KEY (EmpID);

现在使用' SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE'命令检查表的主键

输出:

在上图中,您可以看到 EMPID 是主键。