更改 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 是主键。