Database
 sql >> Datenbank >  >> RDS >> Database

Überprüfen Sie die Einschränkung in SQL

Die Check Constraint in SQL ist die Regel oder der Satz von Regeln, die verwendet werden, um den Datenbereich einzuschränken, der in eine Tabellenspalte eingegeben werden kann. Check Constraint wird sowohl für die Tabelle als auch für die Spalte verwendet. Wir können also sagen, Check Constraint kann auf Spaltenebene und Tabellenebene erstellt werden.

Aktivieren Sie die auf die Spalte angewendete Einschränkung, und es werden bestimmte Werte für diese Spalte beim Einfügen in die Spalte zugelassen. Wenn Sie eine CHECK-Einschränkung für eine Tabelle definieren, kann sie die Werte in bestimmten Spalten basierend auf Werten in anderen Spalten in der Zeile einschränken. Wir können mehrere Check Constraints in einer einzigen Tabelle anwenden.

Sehen wir uns einige Beispiele an, um das Check Constraint-Konzept klarer zu verstehen.

Prüfung auf Spaltenebene

Die Check Constraint wird direkt nach dem Spaltennamen definiert, bekannt als Column Level Check Constraint. Syntax der Constraint Column Level Check wie folgt,

CREATE TABLE TABLE_NAME(COLUMN_NAME1 DATATYPE(SIZE), COLUMN_NAME2 DATATYPE(SIZE) CHECK(COLUMN_NAME CONDITION), COLUMN_NAME3 DATATYPE(SIZE));

Zum Beispiel Wir erstellen eine Tabelle und definieren eine Check Constraint auf Spaltenebene für eine der folgenden Spalten in einer Tabelle:

CREATE TABLE EMPLOYEES (EMPLOYEEID INT PRIMARY KEY, EMPLOYEE_NAME VARCHAR(50) NOT NULL, SALARY INT CHECK(SALARY > 40000), CITY VARCHAR(20) NOT NULL, DEPARTMENT VARCHAR(30) NOT NULL);

In der obigen Abfrage haben wir eine Tabelle mit dem Namen Employees erstellt und bestimmte Spalten definiert. In der Tabelle Employee haben wir Check Constraints für das Gehalt angegeben Säule. Die Einschränkung selbst besagt, dass die Gehaltsspalte nur die Daten akzeptiert, deren Mitarbeitergehalt größer als 40000 ist; Wenn das Gehalt weniger als 40000 beträgt, treten Fehler aufgrund von Beschränkungsverletzungen auf.

Um zu überprüfen, ob die CHECK-Einschränkung für das Gehalt definiert ist Spalte verwenden wir die folgende Abfrage:

SHOW CREATE TABLE EMPLOYEES;

Wir fügen einen Datensatz in die Mitarbeitertabelle ein, wenn das Gehalt eines Mitarbeiters weniger als 40000 beträgt.

INSERT INTO EMPLOYEES VALUES (1171101, 'Parag Chordia', 38000, 'Pune', 'Java');

Wenn wir einen Mitarbeiterdatensatz einfügen, dessen Gehalt weniger als 40000 beträgt, wird die Fehlermeldung Einschränkung fehlgeschlagen angezeigt; Wieso den? Weil wir Check-Einschränkung auf ein Gehalt angewendet haben, die nur die Datensätze zulässt, deren Mitarbeitergehalt größer als 40000 ist.

Wir fügen einen Datensatz in die Mitarbeitertabelle ein, wenn das Gehalt eines Mitarbeiters größer als 40000 ist.

INSERT INTO EMPLOYEES VALUES (1171101, 'Parag Chordia', 45000, 'Pune', 'Java');

Um zu überprüfen, ob Daten in eine Tabelle eingefügt wurden, verwenden wir die folgende Abfrage:

SELECT * FROM EMPLOYEES;

Ein Mitarbeiterdatensatz wurde erfolgreich in die Tabelle eingefügt, da wir ein Mitarbeitergehalt von mehr als 40000 eingegeben haben.

Beispiel 2: Wir erstellen eine Tabelle und definieren eine Check Constraint auf Spaltenebene für mehr als eine Spalte in einer Tabelle.

CREATE TABLE MANAGER(MANAGERID INT PRIMARY KEY, NAME VARCHAR(40) NOT NULL, SALARY INT CHECK(SALARY>=60000), DEPARTMENT VARCHAR(20) NOT NULL CHECK(DEPARTMENT IN('Oracle', 'FMW', 'Testing', 'Java' )));

Wir haben in der obigen Abfrage einen Tabellennamen-Manager erstellt und bestimmte Spalten definiert. Wir haben Check Constraints für die Gehaltsspalte in einem Tabellenmanager angegeben. Die Einschränkung selbst besagt, dass die Gehaltsspalte nur die Daten akzeptiert, deren Managergehalt größer als 60000 ist; Wenn das Gehalt weniger als 60.000 beträgt, treten Fehler aufgrund von Beschränkungsverletzungen auf, und die Abteilung des Managers ist Oracle, FMW, Testing und Java.

Um zu überprüfen, ob die CHECK-Einschränkung in der Gehaltsspalte und der Abteilungsspalte definiert ist, verwenden wir die folgende Abfrage:

SHOW CREATE TABLE MANAGER;

Wir fügen einen Datensatz in die Manager-Tabelle ein, in dem das Gehalt eines Managers weniger als 60000 beträgt und die Abteilung Java ist.

INSERT INTO MANAGER VALUES(1, 'Bhavesh Bardiya', 59500, 'Java');

Wenn wir einen Manager-Datensatz einfügen, dessen Gehalt weniger als 60000 beträgt, wird die Fehlermeldung Einschränkung fehlgeschlagen angezeigt; Wieso den? Weil wir die Check-Einschränkung auf ein Gehalt angewendet haben, die nur die Datensätze zulässt, deren Managergehalt größer als 60000 ist. In der Abteilungsspalte ist jedoch kein Einschränkungsfehler aufgetreten, da wir die Werte eingefügt haben, die eingefügt werden dürfen,

Wir fügen einen Datensatz in die Manager-Tabelle ein, in dem das Gehalt eines Managers größer als 60000 ist und die Abteilung Java ist.

INSERT INTO MANAGER VALUES(1, 'Bhavesh Bardiya', 62000, 'Java');

Um zu überprüfen, ob Daten in eine Tabelle eingefügt wurden, verwenden wir die folgende Abfrage:

SELECT * FROM MANAGER;

Der Manager-Datensatz wird erfolgreich in die Tabelle eingefügt, da wir ein Manager-Gehalt von mehr als 60000 und einen Abteilungsnamen Java eingegeben haben.

Überprüfungsbeschränkung auf Tabellenebene

Die Check-Einschränkung wird am Ende der Tabelle definiert und wird als Table Level Check Constraint bezeichnet. Syntax der Prüfeinschränkung auf Tabellenebene wie folgt:

CREATE TABLE TABLE_NAME(COLUMN_NAME1 DATATYPE(SIZE), COLUMN_NAME2 DATATYPE(SIZE), COLUMN_NAME3 DATATYPE(SIZE), CONSTRAINT CONSTAINT_NAME CHECK(COLUMN_NAME CONDITION));

Beispiel 1: Wir erstellen eine Tabelle und definieren eine Prüfbedingung auf Tabellenebene für eine der folgenden Spalten in einer Tabelle.

CREATE TABLE EMPLOYEES (EMPLOYEEID INT PRIMARY KEY, EMPLOYEE_NAME VARCHAR(50) NOT NULL, SALARY INT, CITY VARCHAR(20) NOT NULL, DEPARTMENT VARCHAR(30) NOT NULL, CONSTRAINT salary_constraint CHECK(SALARY > 40000));

In der obigen Abfrage haben wir eine Tabelle mit dem Namen Employees erstellt und bestimmte Spalten definiert. In der Tabelle Employee haben wir Check Constraints für das Gehalt angegeben Säule. Die Einschränkung selbst besagt, dass die Gehaltsspalte nur die Daten akzeptiert, deren Mitarbeitergehalt größer als 40000 ist; Wenn das Gehalt weniger als 40000 Beschränkungen beträgt, treten Verletzungsfehler auf.

Um zu überprüfen, ob die CHECK-Einschränkung in der Gehaltsspalte definiert ist, verwenden wir die folgende Abfrage:

SHOW CREATE TABLE EMPLOYEES;

Wir fügen einen Datensatz in die Mitarbeitertabelle ein, wenn das Gehalt eines Mitarbeiters weniger als 40000 beträgt.

INSERT INTO EMPLOYEES VALUES (1171101, 'Naman Sharma', 38000, 'Pune', 'Java');

Wenn wir einen Mitarbeiterdatensatz einfügen, dessen Gehalt weniger als 40000 beträgt, wird die Fehlermeldung Einschränkung fehlgeschlagen angezeigt; Wieso den? Weil wir Check-Einschränkung auf ein Gehalt angewendet haben, die nur die Datensätze zulässt, deren Mitarbeitergehalt größer als 40000 ist.

Wir fügen einen Datensatz in die Mitarbeitertabelle ein, wenn das Gehalt eines Mitarbeiters größer als 40000 ist.

INSERT INTO EMPLOYEES VALUES (1171101, 'Naman Sharma', 45000, 'Pune', 'Java');

Um zu überprüfen, ob Daten in eine Tabelle eingefügt wurden, verwenden wir die folgende Abfrage:

SELECT * FROM EMPLOYEES;

Ein Mitarbeiterdatensatz wurde erfolgreich in die Tabelle eingefügt, da wir ein Mitarbeitergehalt von mehr als 40000 eingegeben haben.

Beispiel 2: Wir erstellen eine Tabelle und definieren eine Check Constraint auf Spaltenebene für mehr als eine Spalte in einer Tabelle.

CREATE TABLE MANAGER (MANAGERID INT PRIMARY KEY, NAME VARCHAR(40) NOT NULL, SALARY INT, DEPARTMENT VARCHAR(40) NOT NULL, CONSTRAINT SALARY_CONST CHECK(SALARY>60000), CONSTRAINT DEPT_CONST CHECK(DEPARTMENT IN(‘'Oracle', 'FMW', ‘Java’, 'Testing')));

Wir haben einen Tabellennamen Manager erstellt in der obigen Abfrage und bestimmte Spalten definiert. Wir haben Check Constraints für das Gehalt festgelegt Spalte in einem Tabellenmanager. Die Einschränkung selbst besagt, dass die Gehaltsspalte nur die Daten akzeptiert, deren Managergehalt größer als 60000 ist; Wenn das Gehalt weniger als 60.000 beträgt, treten Fehler aufgrund von Beschränkungsverletzungen auf, und die Abteilung des Managers ist Oracle, FMW, Testing und Java.

Um zu überprüfen, ob die CHECK-Einschränkung in der Gehaltsspalte und der Abteilungsspalte definiert ist, verwenden wir die folgende Abfrage:

SHOW CREATE TABLE MANAGER;

Wir fügen einen Datensatz in die Manager-Tabelle ein, in dem das Gehalt eines Managers weniger als 60000 beträgt und die Abteilung Java ist.

INSERT INTO MANAGER VALUES(1, 'Surili Jain', 59500, 'Java');

Wenn wir einen Manager-Datensatz einfügen, dessen Gehalt weniger als 60000 beträgt, wird die Fehlermeldung Einschränkung fehlgeschlagen angezeigt; Wieso den? Weil wir die Check-Einschränkung auf ein Gehalt angewendet haben, die nur die Datensätze zulässt, deren Managergehalt größer als 60000 ist. In der Abteilungsspalte ist jedoch kein Einschränkungsfehler aufgetreten, da wir die Werte eingefügt haben, die eingefügt werden dürfen,

Wir fügen einen Datensatz in die Manager-Tabelle ein, in dem das Gehalt eines Managers größer als 60000 ist und die Abteilung Java ist.

INSERT INTO MANAGER VALUES(1, 'Surili Jain', 62500, 'Java');

Um zu überprüfen, ob Daten in eine Tabelle eingefügt wurden, verwenden wir die folgende Abfrage:

SELECT * FROM MANAGER;

Der Manager-Datensatz wird erfolgreich in die Tabelle eingefügt, da wir ein Manager-Gehalt von mehr als 60000 und einen Abteilungsnamen Java eingegeben haben.

Beschränkung mit Alter prüfen

Wir haben eine Tabelle erstellt und beim Erstellen einer Tabelle vergessen, CHECK CONSTRAINT hinzuzufügen, und dann müssen wir CHECK CONSTRAINT in einer Tabelle hinzufügen. In solchen Fällen verwenden wir den ALTER-Befehl, um die CHECK CONSTRAINT auf die vorhandene Tabelle anzuwenden.

Syntax von Check Constraint mit Alter wie folgt,

ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME CHECK (COLUMN_NAME CONDITION);

Beispiel 1: Angenommen, wir haben Mitarbeiter erstellt Tabelle ohne Hinzufügen von Check Constraints. Jetzt möchten wir Check Constraint für eine der Spalten hinzufügen. Dann verwenden wir die folgende Abfrage:

ALTER TABLE EMPLOYEES ADD CONSTRAINT Sal_Constraint CHECK (SALARY > 35000);  

Um zu überprüfen, ob die CHECK-Einschränkung für das Gehalt definiert ist Spalte verwenden wir die folgende Abfrage:

SHOW CREATE TABLE EMPLOYEES;

Wir fügen einen Datensatz in die Mitarbeitertabelle ein, wenn das Gehalt eines Mitarbeiters weniger als 35000 beträgt.

INSERT INTO EMPLOYEES VALUES (1001, 'Abhinav Patil', 30000, 'Mumbai', 'Testing');

Wenn wir einen Mitarbeiterdatensatz einfügen, dessen Gehalt weniger als 35000 beträgt, wird die Fehlermeldung Einschränkung fehlgeschlagen angezeigt; Wieso den? Weil wir Check-Einschränkung auf ein Gehalt angewendet haben, die nur die Datensätze zulässt, deren Mitarbeitergehalt größer als 35000 ist.

Beispiel 2: Angenommen, wir haben Mitarbeiter erstellt Tabelle ohne Hinzufügen von Check Constraints. Jetzt möchten wir Check Constraint für eine der Spalten hinzufügen. Dann verwenden wir die folgende Abfrage:

ALTER TABLE EMPLOYEES ADD CONSTRAINT City_Constraint CHECK (CITY IN ('Mumbai', 'Pune', 'Bangalore', 'Chennai'));

Um zu überprüfen, ob die CHECK-Einschränkung für City definiert ist Spalte verwenden wir die folgende Abfrage:

SHOW CREATE TABLE EMPLOYEES;

Wir fügen einen Datensatz in die Mitarbeitertabelle ein, in dem die Stadt eines Mitarbeiters Jaipur ist.

SHOW CREATE TABLE EMPLOYEES;

Wenn wir einen Mitarbeiterdatensatz einfügen, dessen Stadtname Jaipur ist, wird die Fehlermeldung Einschränkung fehlgeschlagen angezeigt; Wieso den? Weil wir Check-Einschränkung auf Stadt angewendet haben, die nur die Datensätze zulässt, in denen der Stadtname „Mumbai“, „Pune“, „Bangalore“ oder „Chennai“ lautet.

Drop Check Constraint

Angenommen, wir haben eine CHECK CONSTRAINT für die Tabellenspalten definiert. Später wollen wir diese CONSTRAINT aus der Spalte löschen. Dann verwenden wir den ALTER-Befehl, um die CHECK CONSTRAINT zu löschen.

Syntax von Drop Check Constraint wie folgt,

ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;

Beispiel 1: Angenommen, wir haben Check Constraint für eine der Spalten der Employees-Tabelle definiert. Später entschieden wir uns, diese Einschränkung aufzuheben.

Wir werden zuerst die erstellte Einschränkung überprüfen, verwenden Sie dazu die folgende Abfrage:

SHOW CREATE TABLE EMPLOYEES;

Wir werden die folgende Abfrage schreiben, um die Einschränkung mit dem Namen „City_Constraint“ zu löschen.

ALTER TABLE EMPLOYEES DROP CONSTRAINT City_Constraint;

Wir werden erneut die SHOW CREATE TABLE-Abfrage verwenden, um zu überprüfen, ob die Einschränkung erfolgreich gelöscht wurde.

SHOW CREATE TABLE EMPLOYEES;

Beispiel 2: Angenommen, wir haben Check Constraint für eine der Spalten der Manager-Tabelle definiert. Später entschieden wir uns, diese Einschränkung aufzuheben.

Wir werden zuerst die erstellte Einschränkung überprüfen, verwenden Sie dazu die folgende Abfrage:

SHOW CREATE TABLE MANAGER;

Wir werden die folgende Abfrage schreiben, um die Einschränkung mit dem Namen „SALARY_CONST“ zu löschen.

ALTER TABLE MANAGER DROP CONSTRAINT SALARY_CONST;

Wir werden erneut die SHOW CREATE TABLE-Abfrage verwenden, um zu überprüfen, ob die Einschränkung erfolgreich gelöscht wurde.

SHOW CREATE TABLE MANAGER;