¿Como crear una condición SQL Check o Constraint Check?



El constrain check  condiciona los campos validando que solo se ingresen los valores deseados, el constrain check permite utilizar diferentes validaciones como IN, mayor (>),  menor (<), Igual (=), Like, between , combinación entre 2 o más campos utilizando en AND /OR y las demás condiciones que existen en Oracle.

Creando la tabla
CREATE TABLE CIUDAD (
       CODIGO_CIUDAD    NUMBER,
       NOMBRE_CIUDAD    VARCHAR2(100),
       DERECHOS_HUMANOS VARCHAR2(100),
       CONSTRAINT  CHECK_SI_NO CHECK (DERECHOS_HUMANOS in ('SI','NO'))
);

Modificando la tabla
ALTER TABLE CIUDAD ADD CONSTRAINT CHECK_SI_NO CHECK (DERECHOS_HUMANOS in ('SI','NO'));

El valor que se ingresa en la tabla CIUDAD  para el campo DERECHOS_HUMANOS debe por obligación tener el valor  SI, NO o ser NULL, si intentas ingresar un valor diferente por ejemplo ‘a’ este generara un error.




Nota: La restricción también aplican para minúsculas y mayúsculas.

Esto genera error:
INSERT INTO CIUDAD VALUES (1,'si');

Esto es correcto:
INSERT INTO CIUDAD VALUES (1,'SI');

¿Como crear una condición SQL Unique constraint?



El Unique constraint es una sentencia SQL que evita el ingreso de valores duplicados por columna en una tabla, esto permite restringir los datos que se van a almacenar ya que no acepta valores repetidos, es decir que si tenemos una tabla PAIS con una columna NOMBRE_PAIS y la columna respectivamente tiene valores como “México”,  “Chile”, ”Colombia”, ”Panamá”, ”Uruguay”, si quisiéramos agregar “México” no podremos porque se activara la validación del campo unique.

Creando la tabla

CREATE TABLE CIUDAD (
       CODIGO_CIUDAD NUMBER,
       CODIGO_PAIS     NUMBER,
       NOMBRE_CIUDAD  VARCHAR2(100),
       CONSTRAINT  UNI_NOM_CIUDAD UNIQUE (NOMBRE_CIUDAD)
);

Modificando la tabla

ALTER TABLE CIUDAD ADD CONSTRAINT UNI_NOM_CIUDAD UNIQUE (NOMBRE_CIUDAD);

Se pueden crear unique múltiples,  agregando más campos al unique así: UNIQUE(NOMBRE_CIUDAD, CODIGO_PAIS,…) Esto permitirá crear campos que son unique por registro, aquí lo que se hace es evaluar las columnas por cada registro y si se encuentra  que las columnas NOMBRE_CIUDAD y CODIGO_PAIS, ya contienen esos valores no permitirá ingresar estos nuevos valores.
Cuando se ingresa un valor duplicado en la Columna con la restricción unique, se produce el error:

 

El null no cuenta como un valor por lo tanto el campo con la restricion unique puede almacenar tantos null como sean necesarios.