Sie sind auf Seite 1von 5

RESTRICCIONES

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

La restriccin NOT NULL sirve para especificar que una columna no acepta el valor NULL, es decir, que
esa columna siempre tiene que tener algn valor, no puede estar vaca.
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 algn valor para las columnas 'nombre' y 'apellido1'.
La restriccin 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 segn el sistema de base de datos utilizado:
Ejemplo SQL UNIQUE para la base de datos MySQL

CREATE TABLE personas


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

La sentencia anterior crea la tabla 'personas' con 4 columnas, donde la columna 'identifcador' tiene un
valor diferente para cada fila de la tabla.
Si intentamos insertar un fila con un identificador que ya exista, nos dar un error, y no nos dejar
insertarlo.
Ejemplo SQL UNIQUE para las bases de datos ORACLE, SQLSERVIR, ACCESS

CREATE TABLE personas


{
identificador int NOT NULL UNIQUE,
nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL,
apellido2 varchar(255),
}
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 slo puede tener una clave primaria (PRIMARY KEY).
Ejemplo PRIMARY KEY , clave primaria en MySQL

CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL, apellido1
varchar(255) NOT NULL, PRIMARY KEY (identificador) }
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 tambin se puede definir despus 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 multiple ALTER TABLE ALTER TABLE personas CONSTRAINT pers
PRIMARY KEY (identificador, nombre)
La clave externa o FOREIGN KEY, es una columna o varias columnas, que sirven para sealar cual es la
clave primaria de otra tabla.

La columna o columnas sealadas como FOREIGN KEY, solo podrn 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

ADMINISTRACION

INFORMATICA

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

ANTONIO

PEREZ

GOMEZ

ANTONIO

GARCIA

RODRIGUEZ

PEDRO

RUIZ

GONZALEZ

Definiciones de FOREIGN KEY en CREATE TABLE para MySQL

CREATE TABLE departamentos { dep int NOT NULL,


departamento varchar(255),
PRIMARY KEY (dep)
}
CREATE TABLE personas
{
per int NOT NULL,
nombre varchar(255),
apellido1 varchar(255),
dep int NOT NULL,
PRIMARY KEY (per),
FOREIGN KEY (dep) REFERENCES departamentos(dep)
}
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 fornea (FOREIGN KEY) est compuesta por varias columnas o queremos ponerle
un nombre, utilizaremos la frmula 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 mltiple (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 vara segn la base de dato:

Borrar FOREIGN KEY en MySQL ALTER TABLE personas DROP FOREIGN KEY dep
Borrar FOREIGN KEY en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas DROP CONSTRAINT dep


La restriccin 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 MySQL

CREATE TABLE departamentos { dep int NOT NULL, departamento varchar(255), CHECK (dep>0) }
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 MySQL

ALTER TABLE departamentos ADD CHECK (dep>0)


Ejemplo CHECK (con mltiples columnas) en ALTER TABLE en MySQL

ALTER TABLE personas ADD CHECK (per>0, edad>35)

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


La restriccin 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 funcion GETDATE(), que devuelve la fecha del sistema
En lugar de una funcin, podemos insertar una valor concreto '2001-01-01' o cualquier otro valor.
SQL DEFAULT en la sentencia ALTER TABLE para MySQL

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


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 MySQL

ALTER TABLE pedidos ALTER fecha DROP DEFAULT


Para borrar DEFAULT en ORACLE, SQLSERVER, ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha DROP DEFAULT

Das könnte Ihnen auch gefallen