Database
 sql >> Base de données >  >> RDS >> Database

Vérifier la contrainte en SQL

La contrainte de vérification dans SQL est la règle ou l'ensemble de règles utilisé pour limiter la plage de données pouvant être entrée dans une colonne de table. La contrainte de vérification est utilisée sur la table ainsi que sur la colonne. Nous pouvons donc dire que la contrainte de vérification peut être créée au niveau de la colonne et au niveau de la table.

Cochez la contrainte appliquée sur la colonne et elle autorisera certaines valeurs pour cette colonne lors de l'insertion dans la colonne. Si vous définissez une contrainte CHECK sur une table, elle peut limiter les valeurs de certaines colonnes en fonction des valeurs d'autres colonnes de la ligne. Nous pouvons appliquer plusieurs contraintes de vérification dans une seule table.

Voyons certains exemples pour mieux comprendre le concept de vérification de contrainte.

Contrainte de vérification au niveau de la colonne

La contrainte de vérification est définie juste après le nom de la colonne, connue sous le nom de contrainte de vérification au niveau de la colonne. Syntaxe de la contrainte de vérification au niveau de la colonne comme suit,

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

Par exemple, nous allons créer une table et définir une contrainte de vérification au niveau de la colonne sur l'une des colonnes suivantes d'une table :

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);

Dans la requête ci-dessus, nous avons créé une table nommée Employés et défini certaines colonnes. Dans le tableau Employé, nous avons spécifié des contraintes de vérification sur le salaire colonne. La contrainte elle-même indique que la colonne de salaire n'acceptera que les données dont le salaire de l'employé est supérieur à 40 000 ; si le salaire est inférieur à 40000, des erreurs de violation de contrainte se produiront.

Pour vérifier par recoupement que la contrainte CHECK est bien définie sur le Salaire colonne, nous utiliserons la requête ci-dessous :

SHOW CREATE TABLE EMPLOYEES;

Nous allons insérer un enregistrement dans la table Employee où le salaire d'un employé est inférieur à 40000.

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

Lorsque nous insérons un enregistrement d'employé dont le salaire est inférieur à 40000, le message d'erreur d'échec de la contrainte s'affiche ; Pourquoi? Parce que nous avons appliqué une contrainte de vérification sur un salaire qui n'autorisera que les enregistrements dont le salaire de l'employé est supérieur à 40 000.

Nous allons insérer un enregistrement dans la table Employee où le salaire d'un employé est supérieur à 40000.

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

Pour vérifier si des données sont insérées dans un tableau, nous utiliserons la requête ci-dessous :

SELECT * FROM EMPLOYEES;

Un enregistrement d'employé est inséré avec succès dans la table car nous avons saisi un salaire d'employé supérieur à 40 000.

Exemple 2 : Nous allons créer une table et définir une contrainte de vérification au niveau des colonnes sur plusieurs colonnes d'une table.

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' )));

Nous avons créé un gestionnaire de nom de table dans la requête ci-dessus et défini certaines colonnes. Nous avons spécifié des contraintes de vérification sur la colonne salaire dans une table Manager. La contrainte elle-même indique que la colonne de salaire n'acceptera que les données dont le salaire du responsable est supérieur à 60 000 ; si le salaire est inférieur à 60 000, des erreurs de violation de contrainte se produiront et le service du responsable est Oracle, FMW, Testing et Java.

Pour vérifier par recoupement que la contrainte CHECK est définie sur la colonne Salary et la colonne Department, nous utiliserons la requête ci-dessous :

SHOW CREATE TABLE MANAGER;

Nous allons insérer un enregistrement dans la table Manager où le salaire d'un manager est inférieur à 60000 et le Département est Java.

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

Lorsque nous insérons un enregistrement de manager dont le salaire est inférieur à 60000, le message d'erreur d'échec de la contrainte s'affiche ; Pourquoi? Parce que nous avons appliqué une contrainte de vérification sur un salaire qui n'autorisera que les enregistrements dont le salaire du responsable est supérieur à 60000. Mais aucune erreur de contrainte ne s'est produite sur la colonne Département car nous avons inséré les valeurs que la colonne permettait d'insérer,

Nous allons insérer un enregistrement dans la table Manager où le salaire d'un manager est supérieur à 60000, et le Département est Java.

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

Pour vérifier si des données sont insérées dans un tableau, nous utiliserons la requête ci-dessous :

SELECT * FROM MANAGER;

L'enregistrement du responsable est inséré avec succès dans la table car nous avons saisi le salaire du responsable supérieur à 60 000 et le nom du service Java.

Contrainte de vérification au niveau de la table

La contrainte de vérification est définie à la fin de la table, connue sous le nom de contrainte de vérification au niveau de la table. Syntaxe de la contrainte de vérification au niveau de la table comme suit,

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

Exemple 1 : Nous allons créer une table et définir une contrainte de vérification au niveau de la table sur l'une des colonnes suivantes d'une table.

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));

Dans la requête ci-dessus, nous avons créé une table nommée Employés et défini certaines colonnes. Dans le tableau Employé, nous avons spécifié des contraintes de vérification sur le salaire colonne. La contrainte elle-même indique que la colonne de salaire n'acceptera que les données dont le salaire de l'employé est supérieur à 40 000 ; si le salaire est inférieur à 40 000 contraintes, des erreurs de violation se produiront.

Pour vérifier par recoupement que la contrainte CHECK est définie sur la colonne Salaire, nous allons utiliser la requête ci-dessous :

SHOW CREATE TABLE EMPLOYEES;

Nous allons insérer un enregistrement dans la table Employee où le salaire d'un employé est inférieur à 40000.

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

Lorsque nous insérons un enregistrement d'employé dont le salaire est inférieur à 40000, le message d'erreur d'échec de la contrainte s'affiche ; Pourquoi? Parce que nous avons appliqué une contrainte de vérification sur un salaire qui n'autorisera que les enregistrements dont le salaire de l'employé est supérieur à 40 000.

Nous allons insérer un enregistrement dans la table Employee où le salaire d'un employé est supérieur à 40000.

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

Pour vérifier si des données sont insérées dans un tableau, nous utiliserons la requête ci-dessous :

SELECT * FROM EMPLOYEES;

Un enregistrement d'employé est inséré avec succès dans la table car nous avons saisi un salaire d'employé supérieur à 40 000.

Exemple 2 : Nous allons créer une table et définir une contrainte de vérification au niveau des colonnes sur plusieurs colonnes d'une table.

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')));

Nous avons créé un nom de table Manager dans la requête ci-dessus et défini certaines colonnes. Nous avons spécifié des contraintes de vérification sur le salaire colonne dans un gestionnaire de table. La contrainte elle-même indique que la colonne de salaire n'acceptera que les données dont le salaire du responsable est supérieur à 60 000 ; si le salaire est inférieur à 60 000, des erreurs de violation de contrainte se produiront et le service du responsable est Oracle, FMW, Testing et Java.

Pour vérifier par recoupement que la contrainte CHECK est définie sur la colonne Salary et la colonne Department, nous utiliserons la requête ci-dessous :

SHOW CREATE TABLE MANAGER;

Nous allons insérer un enregistrement dans la table Manager où le salaire d'un manager est inférieur à 60000 et le Département est Java.

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

Lorsque nous insérons un enregistrement de manager dont le salaire est inférieur à 60000, le message d'erreur d'échec de la contrainte s'affiche ; Pourquoi? Parce que nous avons appliqué une contrainte de vérification sur un salaire qui n'autorisera que les enregistrements dont le salaire du responsable est supérieur à 60000. Mais aucune erreur de contrainte ne s'est produite sur la colonne Département car nous avons inséré les valeurs que la colonne permettait d'insérer,

Nous allons insérer un enregistrement dans la table Manager où le salaire d'un manager est supérieur à 60000, et le Département est Java.

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

Pour vérifier si des données sont insérées dans un tableau, nous utiliserons la requête ci-dessous :

SELECT * FROM MANAGER;

L'enregistrement du responsable est inséré avec succès dans la table car nous avons saisi le salaire du responsable supérieur à 60 000 et le nom du service Java.

Vérifier la contrainte à l'aide de Alter

Nous avons créé une table et oublié d'ajouter CHECK CONSTRAINT lors de la création d'une table, puis nous devons ajouter CHECK CONSTRAINT dans une table. Dans de tels cas, nous utiliserons la commande ALTER pour appliquer la CHECK CONSTRAINT sur la table existante.

Syntaxe de la contrainte de vérification en utilisant Alter comme suit,

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

Exemple 1 : Supposons que nous créions un Employés table sans ajouter de contraintes de vérification. Maintenant, nous voulons ajouter Check Constraint sur l'une des colonnes. Ensuite, nous utiliserons la requête ci-dessous :

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

Pour vérifier par recoupement que la contrainte CHECK est bien définie sur le Salaire colonne, nous utiliserons la requête ci-dessous :

SHOW CREATE TABLE EMPLOYEES;

Nous allons insérer un enregistrement dans la table Employee où le salaire d'un employé est inférieur à 35000.

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

Lorsque nous insérons un enregistrement d'employé dont le salaire est inférieur à 35000, le message d'erreur d'échec de la contrainte s'affiche ; Pourquoi? Parce que nous avons appliqué une contrainte de vérification sur un salaire qui n'autorisera que les enregistrements dont le salaire de l'employé est supérieur à 35 000.

Exemple 2 : Supposons que nous créions un Employés table sans ajouter de contraintes de vérification. Maintenant, nous voulons ajouter Check Constraint sur l'une des colonnes. Ensuite, nous utiliserons la requête ci-dessous :

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

Pour vérifier que la contrainte CHECK est définie sur la Ville colonne, nous utiliserons la requête ci-dessous :

SHOW CREATE TABLE EMPLOYEES;

Nous allons insérer un enregistrement dans la table Employee où la ville d'un employé est Jaipur.

SHOW CREATE TABLE EMPLOYEES;

Lorsque nous insérons un enregistrement d'employé dont le nom de la ville est Jaipur, le message d'erreur d'échec de la contrainte s'affiche ; Pourquoi? Parce que nous avons appliqué la contrainte de vérification sur la ville qui n'autorisera que les enregistrements où le nom de la ville sera 'Mumbai', 'Pune', 'Bangalore' ou 'Chennai'.

Supprimer la contrainte de vérification

Supposons que nous ayons défini une CHECK CONSTRAINT sur les colonnes de la table. Plus tard, nous voulons supprimer cette CONTRAINTE de la colonne. Ensuite, nous utiliserons la commande ALTER pour supprimer la CHECK CONSTRAINT.

Syntaxe de Drop Check Constraint comme suit,

ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;

Exemple 1 : Supposons que nous ayons défini Check Constraint sur l'une des colonnes de la table Employees. Plus tard, nous avons décidé de supprimer cette contrainte.

Nous allons d'abord vérifier la contrainte créée, pour cette utilisation la requête suivante :

SHOW CREATE TABLE EMPLOYEES;

Nous allons écrire la requête ci-dessous pour supprimer la contrainte nommée "City_Constraint".

ALTER TABLE EMPLOYEES DROP CONSTRAINT City_Constraint;

Nous allons à nouveau utiliser la requête SHOW CREATE TABLE pour vérifier que la contrainte a bien été supprimée.

SHOW CREATE TABLE EMPLOYEES;

Exemple 2 : Supposons que nous ayons défini Check Constraint sur l'une des colonnes de la table Manager. Plus tard, nous avons décidé de supprimer cette contrainte.

Nous allons d'abord vérifier la contrainte créée, pour cette utilisation la requête suivante :

SHOW CREATE TABLE MANAGER;

Nous allons écrire la requête ci-dessous pour supprimer la contrainte nommée 'SALARY_CONST'.

ALTER TABLE MANAGER DROP CONSTRAINT SALARY_CONST;

Nous allons à nouveau utiliser la requête SHOW CREATE TABLE pour vérifier que la contrainte a bien été supprimée.

SHOW CREATE TABLE MANAGER;