如何使用 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';
输出:
因此,以上述方式,可以重命名表中存在的任何约束。