La restricción de verificación en SQL es la regla o el conjunto de reglas que se utilizan para limitar el rango de datos que se pueden ingresar en una columna de la tabla. La restricción de verificación se usa tanto en la tabla como en la columna. Entonces podemos decir que la restricción de verificación se puede crear en el nivel de columna y en el nivel de tabla.
Marque Restricción aplicada en la columna, y permitirá ciertos valores para esta columna mientras se inserta en la columna. Si define una restricción CHECK en una tabla, puede limitar los valores en ciertas columnas en función de los valores en otras columnas de la fila. Podemos aplicar múltiples restricciones de verificación en una sola tabla.
Veamos ciertos ejemplos para entender más claramente el concepto de Verificar Restricción.
Restricción de verificación de nivel de columna
La restricción de verificación se define justo después del nombre de la columna, conocida como Restricción de verificación de nivel de columna. Sintaxis de la restricción de verificación de nivel de columna de la siguiente manera,
CREATE TABLE TABLE_NAME(COLUMN_NAME1 DATATYPE(SIZE), COLUMN_NAME2 DATATYPE(SIZE) CHECK(COLUMN_NAME CONDITION), COLUMN_NAME3 DATATYPE(SIZE));
Por ejemplo, crearemos una tabla y definiremos una restricción de verificación a nivel de columna en una de las siguientes columnas de una tabla:
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);
En la consulta anterior, hemos creado una tabla llamada Empleados y definió ciertas columnas. En la tabla Empleado, hemos especificado restricciones de verificación en el salario columna. La restricción en sí dice que la columna de salario aceptará aquellos datos solo cuyo salario de empleado sea superior a 40000; si el salario es inferior a 40000, se producirán errores de violación de restricciones.
Para verificar que la restricción CHECK esté definida en el Salario columna, usaremos la siguiente consulta:
SHOW CREATE TABLE EMPLOYEES;
Insertaremos un registro en la tabla Empleado donde el salario de un empleado sea inferior a 40000.
INSERT INTO EMPLOYEES VALUES (1171101, 'Parag Chordia', 38000, 'Pune', 'Java');
Cuando insertamos un registro de empleado cuyo salario es inferior a 40000, se muestra el mensaje de error de restricción fallida; ¿por qué? Porque aplicamos la restricción Verificar en un salario que permitirá solo aquellos registros cuyo salario de empleado sea superior a 40000.
Insertaremos un registro en la tabla Empleado donde el salario de un empleado sea mayor a 40000.
INSERT INTO EMPLOYEES VALUES (1171101, 'Parag Chordia', 45000, 'Pune', 'Java');
Para verificar si los datos se insertan en una tabla, utilizaremos la siguiente consulta:
SELECT * FROM EMPLOYEES;
Un registro de empleado se insertó con éxito en la tabla cuando ingresamos un salario de empleado superior a 40000.
Ejemplo 2: Crearemos una tabla y definiremos una restricción de verificación a nivel de columna en más de una columna de una tabla.
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' )));
Hemos creado un administrador de nombre de tabla en la consulta anterior y hemos definido ciertas columnas. Hemos especificado restricciones de verificación en la columna de salario en un administrador de tablas. La restricción en sí dice que la columna de salario aceptará aquellos datos solo cuyo salario de gerente sea superior a 60000; si el salario es inferior a 60000, se producirán errores de violación de restricciones y el Departamento del gerente es Oracle, FMW, Pruebas y Java.
Para verificar que la restricción CHECK esté definida en la columna Salario y la columna Departamento, utilizaremos la siguiente consulta:
SHOW CREATE TABLE MANAGER;
Insertaremos un registro en la tabla Gerente donde el salario de un gerente sea inferior a 60000 y el Departamento sea Java.
INSERT INTO MANAGER VALUES(1, 'Bhavesh Bardiya', 59500, 'Java');
Cuando insertamos un registro de gerente cuyo salario es inferior a 60000, se muestra el mensaje de error de restricción fallida; ¿por qué? Debido a que aplicamos la restricción de verificación en un salario que permitirá solo aquellos registros cuyo salario de gerente sea superior a 60000. Pero no ocurrió ningún error de restricción en la columna Departamento porque insertamos esos valores cuya columna permitió insertar,
Insertaremos un registro en la tabla Gerente donde el salario de un gerente sea mayor a 60000, y el Departamento sea Java.
INSERT INTO MANAGER VALUES(1, 'Bhavesh Bardiya', 62000, 'Java');
Para verificar si los datos se insertan en una tabla, utilizaremos la siguiente consulta:
SELECT * FROM MANAGER;
El registro del gerente se insertó con éxito en la tabla ya que ingresamos el salario del gerente superior a 60000 y el nombre del departamento Java.
Restricción de comprobación de nivel de tabla
La restricción de verificación se define al final de la tabla, conocida como restricción de verificación de nivel de tabla. Sintaxis de la restricción de verificación de nivel de tabla de la siguiente manera,
CREATE TABLE TABLE_NAME(COLUMN_NAME1 DATATYPE(SIZE), COLUMN_NAME2 DATATYPE(SIZE), COLUMN_NAME3 DATATYPE(SIZE), CONSTRAINT CONSTAINT_NAME CHECK(COLUMN_NAME CONDITION));
Ejemplo 1: Crearemos una tabla y definiremos una restricción de verificación de nivel de tabla en una de las siguientes columnas de una tabla.
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));
En la consulta anterior, hemos creado una tabla llamada Empleados y definió ciertas columnas. En la tabla Empleado, hemos especificado restricciones de verificación en el salario columna. La restricción en sí dice que la columna de salario aceptará aquellos datos solo cuyo salario de empleado sea superior a 40000; si el salario es inferior a 40000 restricciones, se producirán errores de infracción.
Para verificar que la restricción CHECK esté definida en la columna Salario, utilizaremos la siguiente consulta:
SHOW CREATE TABLE EMPLOYEES;
Insertaremos un registro en la tabla Empleado donde el salario de un empleado sea inferior a 40000.
INSERT INTO EMPLOYEES VALUES (1171101, 'Naman Sharma', 38000, 'Pune', 'Java');
Cuando insertamos un registro de empleado cuyo salario es inferior a 40000, se muestra el mensaje de error de restricción fallida; ¿por qué? Porque aplicamos la restricción Verificar en un salario que permitirá solo aquellos registros cuyo salario de empleado sea superior a 40000.
Insertaremos un registro en la tabla Empleado donde el salario de un empleado sea mayor a 40000.
INSERT INTO EMPLOYEES VALUES (1171101, 'Naman Sharma', 45000, 'Pune', 'Java');
Para verificar si los datos se insertan en una tabla, utilizaremos la siguiente consulta:
SELECT * FROM EMPLOYEES;
Un registro de empleado se insertó con éxito en la tabla cuando ingresamos un salario de empleado superior a 40000.
Ejemplo 2: Crearemos una tabla y definiremos una restricción de verificación a nivel de columna en más de una columna de una tabla.
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')));
Hemos creado un nombre de tabla Administrador en la consulta anterior y definió ciertas columnas. Hemos especificado restricciones de verificación en el salario columna en un administrador de tablas. La restricción en sí dice que la columna de salario aceptará aquellos datos solo cuyo salario de gerente sea superior a 60000; si el salario es inferior a 60000, se producirán errores de violación de restricciones y el Departamento del gerente es Oracle, FMW, Pruebas y Java.
Para verificar que la restricción CHECK esté definida en la columna Salario y la columna Departamento, utilizaremos la siguiente consulta:
SHOW CREATE TABLE MANAGER;
Insertaremos un registro en la tabla Gerente donde el salario de un gerente sea inferior a 60000 y el Departamento sea Java.
INSERT INTO MANAGER VALUES(1, 'Surili Jain', 59500, 'Java');
Cuando insertamos un registro de gerente cuyo salario es inferior a 60000, se muestra el mensaje de error de restricción fallida; ¿por qué? Debido a que aplicamos la restricción de verificación en un salario que permitirá solo aquellos registros cuyo salario de gerente sea superior a 60000. Pero no ocurrió ningún error de restricción en la columna Departamento porque insertamos esos valores cuya columna permitió insertar,
Insertaremos un registro en la tabla Gerente donde el salario de un gerente sea mayor a 60000, y el Departamento sea Java.
INSERT INTO MANAGER VALUES(1, 'Surili Jain', 62500, 'Java');
Para verificar si los datos se insertan en una tabla, utilizaremos la siguiente consulta:
SELECT * FROM MANAGER;
El registro del gerente se insertó con éxito en la tabla ya que ingresamos el salario del gerente superior a 60000 y el nombre del departamento Java.
Comprobar restricción usando Alter
Creamos una tabla y olvidamos agregar CHECK CONSTRAINT al crear una tabla, y luego necesitamos agregar CHECK CONSTRAINT en una tabla. En tales casos, usaremos el comando ALTER para aplicar la RESTRICCIÓN DE COMPROBACIÓN en la tabla existente.
Sintaxis de Verificar restricción usando Alter de la siguiente manera,
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME CHECK (COLUMN_NAME CONDITION);
Ejemplo 1: Supongamos que creamos un Empleados tabla sin agregar restricciones de verificación. Ahora queremos agregar Verificar restricción en una de las columnas. Luego usaremos la siguiente consulta:
ALTER TABLE EMPLOYEES ADD CONSTRAINT Sal_Constraint CHECK (SALARY > 35000);
Para verificar que la restricción CHECK esté definida en el Salario columna, usaremos la siguiente consulta:
SHOW CREATE TABLE EMPLOYEES;
Insertaremos un registro en la tabla Empleado donde el salario de un empleado sea inferior a 35000.
INSERT INTO EMPLOYEES VALUES (1001, 'Abhinav Patil', 30000, 'Mumbai', 'Testing');
Cuando insertamos un registro de empleado cuyo salario es inferior a 35000, se muestra el mensaje de error de restricción fallida; ¿por qué? Porque aplicamos la restricción de verificación en un salario que permitirá solo aquellos registros cuyo salario de empleado sea superior a 35000.
Ejemplo 2: Supongamos que creamos un Empleados tabla sin agregar restricciones de verificación. Ahora queremos agregar Verificar restricción en una de las columnas. Luego usaremos la siguiente consulta:
ALTER TABLE EMPLOYEES ADD CONSTRAINT City_Constraint CHECK (CITY IN ('Mumbai', 'Pune', 'Bangalore', 'Chennai'));
Para verificar que la restricción CHECK esté definida en la Ciudad columna, usaremos la siguiente consulta:
SHOW CREATE TABLE EMPLOYEES;
Insertaremos un registro en la tabla de empleados donde la ciudad de un empleado sea Jaipur.
SHOW CREATE TABLE EMPLOYEES;
Cuando insertamos un registro de empleado cuyo nombre de ciudad es Jaipur, se muestra el mensaje de error de restricción fallida; ¿por qué? Porque aplicamos la restricción de verificación en la ciudad que permitirá solo aquellos registros en los que el nombre de la ciudad sea 'Mumbai', 'Pune', 'Bangalore' o 'Chennai'.
Restricción de verificación de caída
Supongamos que hemos definido una RESTRICCIÓN DE VERIFICACIÓN en las columnas de la tabla. Más tarde queremos eliminar esa RESTRICCIÓN de la columna. Luego usaremos el comando ALTER para eliminar la RESTRICCIÓN DE COMPROBACIÓN.
Sintaxis de la restricción de verificación de caída de la siguiente manera,
ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;
Ejemplo 1: Supongamos que hemos definido Verificar restricción en una de las columnas de la tabla Empleados. Más tarde, decidimos eliminar esa restricción.
Primero verificaremos la restricción creada, para esto use la siguiente consulta:
SHOW CREATE TABLE EMPLOYEES;
Escribiremos la siguiente consulta para descartar la restricción denominada 'City_Constraint'.
ALTER TABLE EMPLOYEES DROP CONSTRAINT City_Constraint;
Volveremos a utilizar la consulta SHOW CREATE TABLE para comprobar que la restricción se eliminó correctamente.
SHOW CREATE TABLE EMPLOYEES;
Ejemplo 2: Supongamos que hemos definido la restricción de verificación en una de las columnas de la tabla del administrador. Más tarde, decidimos eliminar esa restricción.
Primero verificaremos la restricción creada, para esto use la siguiente consulta:
SHOW CREATE TABLE MANAGER;
Escribiremos la siguiente consulta para descartar la restricción denominada 'SALARY_CONST'.
ALTER TABLE MANAGER DROP CONSTRAINT SALARY_CONST;
Volveremos a utilizar la consulta SHOW CREATE TABLE para comprobar que la restricción se eliminó correctamente.
SHOW CREATE TABLE MANAGER;