📜  用于显示表上所有现有约束的 SQL 查询

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

用于显示表上所有现有约束的 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 行。

输出: