Está en la página 1de 5

Tipos de restricciones en SQL

SERVER

Las CONSTRAINTS o restricciones son aquellas que se utilizan para limitar el tipo de dato que
puede recibir una columna de una tabla.

Las restricciones se puede definir cuando creamos la tabla (CREATE TABLE) o posteriormente
con la sentencia ALTER TABLE.

Las posibles restricciones son:

 NOT NULL
 UNIQUE
 PRIMARY KEY
 FOREIGN KEY
 CHECK
 DEFAULT

Restricción NOT NULL: 
La restricción NOT NULL sirve para especificar que una columna no acepta el valor NULL, es
decir, que esa columna siempre tiene que tener algún valor, no puede estar vacía.

Ejemplo SQL NULL

CREATE TABLE personas { nombre varchar(255) NOT NULL, apellido1 varchar(255) NOT
NULL, apellido2 varchar(255) }

Esta sentencia crea una tabla denominada 'personas', donde tenemos 3 columnas.

Las columnas 'nombre' y 'apellido' llevan NOT NULL, esto quiere decir que cualquier fila
insertada en esta tabla tiene que tener algún valor para las columnas 'nombre' y 'apellido1'.
Restricción UNIQUE:
La restricción UNIQUE identifica de manera única a cada fila de una tabla.

Puede haber varias restricciones UNIQUE en diferentes columnas de una tabla.

Existen varias formas diferentes de sintaxis según el sistema de base de datos utilizado:

Ejemplo SQL UNIQUE para las bases de datos ORACLE, SQLSERVER, ACCESS

CREATE TABLE personas


{
identificador int NOT NULL UNIQUE,
nombre varchar (255) NOT NULL,
apellido1 varchar (255) NOT NULL,
apellido2 varchar (255),
}

La sentencia anterior crea la tabla 'personas' con 4 columnas, donde la columna 'identificador'
tiene un valor diferente para cada fila de la tabla.

Si intentamos insertar una fila con un identificador que ya exista, nos dará un error, y no nos
dejará insertarlo.

Restricción UNIQUE ALTER TABLE:


La restricción UNIQUE se puede añadir a una columna de una tabla, después de ser creada,
mediante la sentencia ALTER TABLE.

Sintaxis de UNIQUE ALTER TABLE

ALTER TABLE personas


ADD UNIQUE (identificador)

Crea una restricción UNIQUE (valor único en toda la tabla) para la columna 'identificador'.

Se puede crear también restricciones para varias columnas a la vez

ALTER TABLE personas


ADD CONSTRAINT copersonas
UNIQUE (identificador, apellido1)

Para eliminar una restricción en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas


DROP CONSTRAINT copersonas
Restricción PRIMARY KEY:
La clave primaria, PRIMARY KEY, identifica de manera única cada fila de una tabla.

La columna definida como clave primaria (PRIMARY KEY) debe ser UNIQUE (valor único) y
NOT NULL (no puede contener valores nulos).

Cada tabla sólo puede tener una clave primaria (PRIMARY KEY).

Ejemplo PRIMARY KEY, clave primaria en ORACLE, SQLSERVER, ACCESS

CREATE TABLE personas {identificador int NOT NULL PRIMARY KEY, nombre
varchar(255) NOT NULL, apellido1 varchar(255) NOT NULL, }

La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas, por ejemplo
por las columnas 'identificador' y 'nombre', entonces se define así:

CREATE TABLE personas {identificador int NOT NULL, nombre varchar (255) NOT NULL,
apellido1 varchar (255) NOT NULL, CONSTRAINT pers PRIMARY KEY (identificador,
nombre)}

La clave primaria también se puede definir después de haber creado la tabla, para eso
utilizaremos el comando ALTER TABLE

Ejemplo PRIMARY KEY con ALTER TABLE ALTER TABLE personas ADD PRIMARY KEY
(identificador)

Ejemplo PRIMARY KEY múltiple ALTER TABLE ALTER TABLE personas CONSTRAINT
pers PRIMARY KEY (identificador, nombre)

Restricción FOREIGN KEY:


La clave externa o FOREIGN KEY, es una columna o varias columnas, que sirven para señalar
cual es la clave primaria de otra tabla.

La columna o columnas señaladas como FOREIGN KEY, solo podrán tener valores que ya
existan en la clave primaria PRIMARY KEY de la otra tabla.

Ejemplo de FOREIGN KEY

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

Tabla personas, con una clave externa FOREIGN KEY 'dep', que hace referencia a la clave
primaria 'dep' de la tabla anterior 'departamentos' y por tanto, solo puede tener un valor de los
que tiene en esa tabla
per nombre apellido1 apellido2 dep
1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Definiciones de FOREIGN KEY en CREATE TABLE para ORACLE, ACCESS, SQLSERVER

CREATE TABLE departamentos


{
dep int NOT NULL PRIMARY KEY,
departamento varchar (255),
}

CREATE TABLE personas


{
per int NOT NULL PRIMARY KEY,
nombre varchar (255),
apellido1 varchar (255),
dep int FOREIGN KEY REFERENCES departamentos (dep)
}

Si la clave externa o foránea (FOREIGN KEY) está compuesta por varias columnas o
queremos ponerle un nombre, utilizaremos la fórmula siguiente:

CONSTRAINT fkpersonas FOREIGN KEY (dep, id) REFERENCES departamentos (dep,


id).

Ejemplo FOREIGN KEY con ALTER TABLE

ALTER TABLE ADD FOREIGN KEY (dep) REFERENCES departamentos(dep)

Ejemplo FOREIGN KEY múltiple (varias columnas) con ALTER TABLE:

ALTER TABLE ADD CONSTRAINT fkpersonas FOREIGN KEY (dep) REFERENCES


departamentos(dep)

Para borrar un clave externa (FOREIGN KEY) utilizamos DROP, pero varía según la base de
dato:

Borrar FOREIGN KEY en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas DROP CONSTRAINT dep


Restricción CHECK: 
La restricción CHECK se utiliza para limitar el rango de valores que puede tener una columna.

Se pueden definir varias restricciones CHECK en una tabla.

Ejemplo CHECK en ORACLE, SQLSERVER y ACCESS:

CREATE TABLE departamentos { dep int NOT NULL CHECK (dep>0) departamento
varchar(255), }

Ejemplo CHECK en ALTER TABLE en ORACLE, SQLSERVER y ACCESS

ALTER TABLE departamentos ADD CONSTRAINT ckdepart CHECK (dep>0)

Ejemplo CHECK en ALTER TABLE con varias columnas

ALTER TABLE personas ADD CONSTRAINT ckpersona CHECK (pers>0,


nombre='Antonio')

Restricción DEFAULT: 
La restricción DEFAULT se utiliza para establecer un valor por defecto a una columna.

Si no se especifica un valor al insertar una fila, entonces se podrá el valor por defecto
(DEFAULT) que tenga cada columna.

SQL DEFAULT en la sentencia CREATE TABLE

CREATE TABLE pedidos {idpedido int, producto int, cantidad int, fecha date DEFAULT
GETDATE ()}

Si al crear un pedido, no especificamos el valor de la columna 'fecha', entonces para esa


columna se insertará por defecto obtenido de ejecutar la función GETDATE (), que devuelve la
fecha del sistema

En lugar de una función, podemos insertar un valor concreto '2001-01-01' o cualquier otro valor.

SQL DEFAULT en la sentencia ALTER TABLE para ORACLE, SQLSERVER, ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha SET DEFAULT '2012-01-01'

Para borrar DEFAULT en ORACLE, SQLSERVER, ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha DROP DEFAULT

También podría gustarte