You are on page 1of 8

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'. a 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), }
UNIQUEALTERTABLE La restriccin UNIQUE se puede aadir a una columna de una tabla, despus de ser creada, mediante

la sentencia ALTER TABLE. Sintaxis de UNIQUE ALTER TABLE

ALTER TABLE personas ADD UNIQUE (identificador)


Crea una restriccin UNIQUE (valor nico en toda la tabla) para la columna 'identificador'. Se puede crear tambin restricciones para varias columnas a la vez

ALTER TABLE peronas ADD CONSTRAINT copersonas UNIQUE (identificador, apellido1)


Para eliminar una restriccin en la base de datos MySQL

ALTER TABLE personas DROP INDEX copersonas


Para eliminar una restriccin en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas DROP CONSTRAINT copersonas


PRIMARYKEY 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)
FOREIGNKEY 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 1 2 3

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 1 2 3

nombre ANTONIO ANTONIO PEDRO

apellido1 PEREZ GARCIA RUIZ

apellido2 GOMEZ RODRIGUEZ GONZALEZ

dep 1 2 4

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


DATES

Existen diferentes formatos para almacenar las fechas y horas en los distintos sistemas de bases de datos. Los tipos de datos de cada columna se definen cuando se crea la tabla. Tipos de Datos para las fechas y horas en la base de datos MySQL

Tipo DATE DATETIME YEAR

Formato YYYY-MM-DD

Ejemplo 2008-11-11

YYYY-MM-DD HH:MM:SS 2008-11-11 13:23:44 YYYY o YY

TIMESTAMP YYYY-MM-DD HH:MM:SS

Funciones para MySQL sobre estos tipos de datos de fecha anteriores

NOW CURDATE CURTIME DATE EXTRACT DATE_ADD DATE_SUB DATEDIFF

Muestra la fecha y hora actuales. Por ejemplo: 2008-11-11 12:45:34 Muestra la fecha actual. Por ejemplo: 2008-11-11 Muestra la hora actual. Por ejemplo: 12:45:34 Muestra la parte fecha de una expresin fecha/hora Muestra una parte de una expresin fecha/hora Muestra una fecha como suma de un intervalo de tiempo a una fecha Muestra una fecha como resta de un intervalo de tiempo a una fecha Muestra el nmero de das entre 2 fechas

DATE_FORMAT Muestra una fecha y hora con diferentes formatos


Tipos de Datos para fechas y horas en la base de datos SQL Server

DATE DATETIME TIMESTAMP

Formato YYYY-MM-DD Formato YYYY-MM-DD HH:MM:SS Se genera un valor basado en la hora del sistema. Se actualiza automticamente.

SMALLDATETIME Formato YYYY-MM-DD HH:MM:SS

Funciones para SQL Server sobre los tipos de datos de fecha y hora anteriores

GETDATE Muestra la fecha y hora actuales DATEPART Muestra parte de una fecha y hora

DATEADD Muestra una fecha como suma o resta de un intervalo de tiempo sobre una fecha DATEDIFF Muestra el tiempo entre 2 fechas CONVERT Muestra la fecha y hora en diferentes formatos
Ejemplos del uso de fecha y hora

CREATE TABLE pedidos ( idpedido int NOT NULL, nombreproducto varchar(50) NOT NULL, fechapedido datetime NOT NULL PRIMARY KEY (idpedido) )

idpedido 1

nombreproducto papel oficina

fechapedido 2012-02-23 14:05:00

Si queremos almacenar solo la fecha (y no la hora) utilizaremos el tipo de datos 'date' en lugar de 'datetime'. VALORESNULL El valor NULL representa a un valor desconocido. Este valor NULL puede ser asignado como valor a cualquier columna de una tabla. Si el valor de una columna es opcional, quiere decir, que podemos insertar una fila en la tabla sin asignarle ningn valor a esa columna opcional, as que esa columna tomar el valor NULL. El valor NULL es un valor especial, y por tanto, no se puede comparar con los operadores aritmticos normales (=, >, <, <>), y en su lugar debemos utilizar los operadores IS y IS NOT. En la tabla personas, tenemos la columna 'apellido2' que es opcional y puede tener valores nulos: >

nombre ANTONIO LUIS ANTONIO

apellido1 PEREZ LOPEZ GARCIA

apellido2 PEREZ

edad 30 45 50

Ejemplo de uso de IS NULL

SELECT * FROM personas WHERE apellido2 IS NULL


>

nombre ANTONIO ANTONIO

apellido1 PEREZ GARCIA

apellido2

edad 30 50

Ejemplo de uso de IS NOT NULL

SELECT * FROM personas WHERE apellido2 IS NOT NULL


>

nombre LUIS

apellido1 LOPEZ

apellido2 PEREZ

edad 45