用于显示表上所有现有约束的 SQL 查询
在 SQL 中,我们有时需要在一个表上显示所有当前存在的约束。执行相同操作的整个过程如下所示。对于本文,我们将使用 Microsoft SQL Server 作为我们的数据库。
第 1 步:创建数据库。为此,请使用以下命令创建一个名为 GeeksForGeeks 的数据库。
询问:
CREATE DATABASE GeeksForGeeks
输出:
第 2 步:使用 GeeksForGeeks 数据库。为此,请使用以下命令。
询问:
USE GeeksForGeeks
输出:
第 3 步:在 GeeksForGeeks 数据库中创建一个表 STUDENT_INFO。该表有 3 列,即 ROLL_NO、STUDENT_NAME 和 BRANCH,其中包含各个学生的卷号、姓名和分支。
询问:
CREATE TABLE STUDENT_INFO(
ROLL_NO INT,
STUDENT_NAME VARCHAR(10),
BRANCH VARCHAR(5)
);
输出:
第 4 步:显示应用于表 STUDENT_INFO 的当前约束。我们使用 INFORMATION_SCHEMA.TABLE_CONSTRAINTS 来显示约束。在这里,我们显示所有现有约束的名称(CONSTRAINT_NAME)和约束类型(CONSTRAINT_TYPE)。
句法:
SELECT INFORMATION
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='TABLE_NAME';
询问:
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='STUDENT_INFO';
注意– 由于我们的表目前没有约束,因此不会显示任何行。
输出:
第 5 步:使用 ALTER 子句表更改 ROLL_NO 列,将其设置为 NOT NULL。我们这样做是因为它是将 ROLL_NO 设置为 PRIMARY KEY 的先决条件(在下一步中完成)。
询问:
ALTER TABLE STUDENT_INFO ALTER
COLUMN ROLL_NO INT NOT NULL;
输出:
第 6 步:使用 ALTER 子句将名为 C1 的 PRIMARY KEY 约束添加到 ROLL_NO 列。
询问:
ALTER TABLE STUDENT_INFO ADD CONSTRAINT
C1 PRIMARY KEY (ROLL_NO);
输出:
第 7 步:显示应用于表 STUDENT_INFO 的当前约束。
询问:
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='STUDENT_INFO';
注意:由于我们的表目前只有 1 个约束,即 PRIMARY KEY 约束,因此只显示 1 行。
输出:
第 8 步:使用 ALTER 子句将名为 BRANCH_CHECK 的 CHECK 约束添加到 BRANCH 列。
询问:
ALTER TABLE STUDENT_INFO ADD CONSTRAINT BRANCH_CHECK
CHECK (BRANCH IN('CSE','ECE','CE','ME','ELE'));
输出:
第 9 步:显示应用于表 STUDENT_INFO 的当前约束。
询问:
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='STUDENT_INFO';
注意:由于我们的表目前有 2 个约束,即 PRIMARY KEY 约束和 CHECK 约束,因此显示了 2 行。
输出:
第 10 步:使用 ALTER 子句将名为 UNIQ 的 UNIQUE 约束添加到 STUDENT_NAME 列。
询问:
ALTER TABLE STUDENT_INFO ADD CONSTRAINT
UNIQ UNIQUE(STUDENT_NAME);
输出:
第 11 步:显示应用于表 STUDENT_INFO 的当前约束。
询问:
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='STUDENT_INFO';
注意:由于我们的表目前有 3 个约束,即 PRIMARY KEY 约束、CHECK 约束和 UNIQUE 约束,因此显示了 3 行。
输出: