📜  如何使用 SQL 查询重命名约束?

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

如何使用 SQL 查询重命名约束?

在 SQL 中,我们有时需要重命名表的约束。执行相同操作的整个过程如下所示。对于本文,我们将使用 Microsoft SQL Server 作为我们的数据库。

第 1 步:创建数据库。为此,请使用以下命令创建一个名为 GeeksForGeeks 的数据库。

询问:

CREATE DATABASE GeeksForGeeks

输出:

第 2 步:使用 GeeksForGeeks 数据库。为此,请使用以下命令。

询问:

USE GeeksForGeeks

输出:

第 3 步:在 GeeksForGeeks 数据库中创建一个表 INFO。该表有 3 列,即 S_NAME、ROLL 和 BRANCH,分别包含在工程学院学习的各个学生的姓名、卷号和分支。

询问:

CREATE TABLE INFO(
S_NAME VARCHAR(20),
ROLL INT,
BRANCH VARCHAR(5));

输出:

第 4 步:将名为BRANCH_CHECK约束的用户定义的CHECK CONSTRAINT添加到INFO表。此约束检查输入数据库的学生的分支是否在工程学院教授的 5 个分支中,即计算机科学与工程、电子与通信工程、土木工程、机械工程和电气工程。

询问:

ALTER TABLE INFO ADD CONSTRAINT BRANCH_CHECK 
CHECK (BRANCH IN('CSE','ECE','CE','ME','ELE'));

输出:

步骤 5:描述表 INFO 的结构。

询问:

EXEC SP_COLUMNS INFO;

输出:

第 6 步:在 INFO 表中插入 5 行,使分支位于BRANCH_CHECK约束中定义的 5 个分支内。因此,添加这些行时不会引发错误。

询问:

INSERT INTO INFO VALUES('MATT',1001,'CSE');
INSERT INTO INFO VALUES('SAM',1002,'ECE');
INSERT INTO INFO VALUES('NICK',1003,'CE');
INSERT INTO INFO VALUES('JOHN',1004,'ELE');
INSERT INTO INFO VALUES('BRUCE',1005,'ME');

输出:

第 7 步:在 INFO 表中插入行,使分支不在BRANCH_CHECK约束中定义的 5 个分支内。这会引发错误,因为它违反了约束。

询问:

INSERT INTO INFO VALUES('MORRIS',1006,'MECH');

输出:

第 8 步:显示 INFO 表的所有行。

询问:

SELECT * FROM INFO;

输出:

步骤 9:显示为 INFO 表定义的所有约束。

询问:

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE 
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE TABLE_NAME='INFO';

输出:

第 10 步:将用户定义的检查约束从BRANCH_CHECK重命名为CHECK_BRANCH

询问:

SP_RENAME 'BRANCH_CHECK','CHECK_BRANCH';

输出:

第 11 步:显示为 INFO 表定义的所有约束。新名称即CHECK_BRANCH现在必须可见,而不是旧名称即BRANCH_CHECK

询问:

SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='INFO';

输出:

因此,以上述方式,可以重命名表中存在的任何约束。