Hay veces que necesitamos que un dato se incluya en una tabla de manera obligatoria, otras veces necesitaremos definir uno de los campos como llave primaria o ajena. Todo esto podremos hacerlo cuando definamos la tabla, además de otras opciones.
Una restricción es una condición que una o varias columnas deben cumplir obligatoriamente.
Cada restricción que creemos llevará un nombre, si no se lo ponemos nosotros lo hará Oracle o el SGBD que estemos utilizando. Es conveniente que le pongamos un nombre que nos ayude a identificarla y que sea único para cada esquema (usuario). Es buena idea incluir de algún modo el nombre de la tabla, los campos involucrados y el tipo de restricción en el nombre de la misma. La sintaxis en SQL estándar es la siguiente:
CREATE TABLE NOMBRETABLA (
Columna1 Tipo_Dato
[CONSTRAINT nombredelarestricción]
[NOT NULL]
[UNIQUE]
[PRIMARY KEY]
[FOREIGN KEY]
[DEFAULT valor]
[REFERENCES nombreTabla [(columna [, columna ])]
[ON DELETE CASCADE]]
[CHECK condición],
Columna2 Tipo_Dato
[CONSTRAINT nombredelarestricción]
[NOT NULL]
[UNIQUE]
[PRIMARY KEY]
[FOREIGN KEY]
[DEFAULT valor]
[REFERENCES nombreTabla [(columna [, columna ])]
[ON DELETE CASCADE]]
[CHECK condición],...);
Los corchetes, caracteres [ y ], se utilizan en informática en los formatos de la sintaxis de los lenguajes para especificar opcionalidad, es decir, está indicando que lo contiene se puede utilizar o no.
Veamos un ejemplo:
CREATE TABLE USUARIOS (
Login VARCHAR(15) CONSTRAINT usu_log_PK PRIMARY KEY,
Password VARCHAR (8) NOT NULL,
Fecha_Ingreso DATE DEFAULT SYSDATE);
Otra opción es definir las columnas de la tabla y después especificar las restricciones, de este modo podrás referir varias columnas en una única restricción.
En los siguientes apartados veremos cada una de las restricciones, su significado y su uso.