1. SQL DDL
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Data Definition Language
http://en.wikipedia.org/wiki/Data_Definition_Language
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
2. Definamos los términos:
• Esquemas= describe una relación=descripción de la estructura
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
de datos
• Fila = Registro = Tupla
http://es.wikipedia.org/wiki/Tupla o http://en.wikipedia.org/wiki/Tuple
• Tabla = Relación=Instancia=estructura de datos con datos
incluidos en un tiempo determinado.
http://en.wikipedia.org/wiki/Relation_(database)
• Atributos =Nombre de columnas=cabeceras
http://en.wikipedia.org/wiki/Column_(database)
• Dominio = Conjunto de valores permitidos. Matemáticamente,
definir un dominio a un atributo es; cualquier valor del atributo
debe ser un elemento del conjunto especificado.
Tipo de datos(cadenas,enteros,fechas,binarios entre otros)
Rango de datos, Formato de datos
http://en.wikipedia.org/wiki/Data_domain
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
3. Que es SQL y para que sirven:
• “S.Q.L.” o “sequel”
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
• Soportado por la mayoría de base de datos comerciales
• estandarizado – nuevas carateristicas son adicionadas con el
Tiempo
• Interactivo via GUI o prompt(linea de comandos), o embedidos en
los programas.
• Declarativo, basado en el algebra relacional.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
4. SQL:DDL (Lenguaje de definición de datos)
• DDL: Lenguaje de Definición de Datos
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
• Permite crear objetos en la Base de Datos
• son las sentencias que afectan a la estructura de los datos.
Tipos de Objetos:
- Tablas
- Índices
- Vistas
- Otros
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
5. SENTECIAS DLL
Se pueden crear tablas con la instrucción
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
CREATE TABLE nombre_tabla
( atributos: cada uno con su tipo de datos y
restricciones
);
Se pueden crear índices:
CREATE INDEX nombreindice ON tabla(columna(s));
Las vistas no son más que “consultas con nombres”
Ejemplo:
CREATE VIEW nombre_vista AS consulta;
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
6. Lenguaje de definición de datos (LDD)
Comando CREATE DATABASES– define una nueva base de datos.
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Sintaxis Posgresql
CREATE DATABASE name
[ [ WITH ] [ OWNER [=] dbowner ]
[ TEMPLATE [=] template ]
[ ENCODING [=] encoding ]
[ LC_COLLATE [=] lc_collate ]
[ LC_CTYPE [=] lc_ctype ]
[ TABLESPACE [=] tablespace ] Lugar donde se almacena los archivos en disco
[ CONNECTION LIMIT [=] connlimit ] ]
WITH OWNER –Define propietario de la base de datos.
TEMPLATE -- Define y copia los objetos estructuras de una base de datos de referencia .
ENCODING – Es la codificación de cómo se almacenan los caracteres en la base de datos
•No se puede cambiar el encode a una Base de Datos existente(Respaldar y volverla a crear)
•Codificar la Base de Datos en UTF-8 por que este tipo de codificación permite cualquier tipo de carácter.
•http://es.wikipedia.org/wiki/Codificaci%C3%B3n_de_caracteres.
LC_COLLAT– (Intercalación ) se refiere a las reglas utilizadas para ordenar y comparar caracteres.
Evidentemente, se trata de un concepto que afecta sólo a los campos de texto.
LC_CTYPE - Especifica una colección de nombres de tabla de las cuales esta tabla hereda todos los campos.
CONNECTION LIMIT– Permite hasta un numero determinado de conexciones.
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
7. Lenguaje de definición de datos (LDD)
Comando CREATE TABLE – define una nueva tabla.
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Sintaxis Posgresql
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [
{ column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]
| table_constraint |
LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] }
[, ... ]
])
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH OIDS | WITHOUT OIDS ] números seriales sirven como identificador de
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] (usada en tablas temporales)
tabla vaciarse de registros cada vez que se ejecuta un COMMIT
[ TABLESPACE tablespace ]
TEMP--Cuando se utiliza esta clausula se crean tablas temporales. Estas tablas se usan para almacenar datos
que seran usados posteriormente, guardar resultados parciales, analizar grandes cantidades de filas.
DEFAULT-- Un valor por defecto para el campo.
table_constraint o column_constraint -- Las cláusulas opcional de restricciones (CONSTRAINT) especifica una
lista de restricciones de integridad que las nuevas inserciones o las actualizaciones deberán satisfacer para
que una sentencia insert o update se puedan realizar.
INHERITS -- Especifica una colección de nombres de tabla de las cuales esta tabla hereda todos los campos.
TABLESPACE– Define el lugar , en el sistema de archivos, donde los archivos de la tabla se almacenan en
disco.
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
8. Sea el modelo:
el jefe de
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
adscrito a
el subordinado
de
el lugar de trabajo de
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
9. CREATE TABLE departamento
( codigo INTEGER PRIMARY KEY,
nombre VARCHAR(6) NOT NULL UNIQUE,
ciudad VARCHAR(12) CHECK (ciudad IN
('Medellín', 'Bogotá', 'Cali')) NOT NULL
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
);
El atributo ciudad sólo admitirá 1 de estas 3
ciudades. Es necesario además colocarle la
restricción de no nulidad.
CREATE TABLE empleado
( documento INTEGER PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
jefe INTEGER REFERENCES empleado,
salario INTEGER NOT NULL, Clave foránea
comisión INTEGER , sobre la
cargo VARCHAR(20) NOT NULL, misma tabla
depto INTEGER NOT NULL REFERENCES departamento
);
Clave foránea
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
10. Apliquemos SQL
Modificaciones– ALTER TABLE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
• Se puede modificar la estructura de una tabla con la instrucción
ALTER TABLE
ALTER TABLE nombre_tabla ADD nuevocampo TIPO_DE_DATO;
• Para eliminar una columna de la tabla
ALTER TABLE nombre_tabla DROP COLUMN campo;
• Para eliminar una tabla (estructura y datos)
– DROP TABLE nombre_tabla;
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
11. Apliquemos SQL
Modificaciones– ALTER TABLE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplo
CREATE TABLE productos (
id_producto integer,
nombre text,
precio integer
);
ALTER TABLE productos ADD COLUMN descripcion text CHECK
(description <> '');
• Para eliminar una columna
ALTER TABLE productos DROP COLUMN descripcion;
• Para eliminar una tabla (estructura y datos)
DROP TABLE productos;
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
12. Restricciones de Integridad
Las Restricciones automáticamente fuerzan las integridad de datos.
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
• las restricciones definen reglas que determinan los valores permitidos
en una columna.
• Aseguran que los cambios realizados a una BD no generen
inconsistencia en la información.
• Esto permite restringir los valores que se pueden insertar en una
columna, de modo que no se acepten los valores no válidos.
Existen dos tipos de restricciones generales:
Restricciones de Columna: sólo restringe los valores de la columna.
Restricción de tablas: restricciones que afectan a mas de una columna de
la tabla; asegurando que la combinación de los valores para las columnas
implicadas cumplan los requerimientos de la restricción.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
13. Restricciones de Integridad
• Restricciones aplicadas a las generales
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
– Restricciones de dominio: Especifica que el valor de cada atributo A debe
ser un valor atómico del dominio dom (A) para ese atributo.
– Restricciones de clave: Es un subconjunto de atributos de una relación
que permiten identificar de manera única la tupla. Todas las tuplas o filas
deben ser diferentes.
– Toda relación tiene por lo menos una superclave o clave primaria.
– El valor de uno o varios de los atributos clave identifican de manera única
una tupla de la relación.
– Restricciones de integridad: La clave primaria(PK) no debe tener valores
nulos.
– La PK no puede ser NULL porque es un valor desconocido.
– La PK no se debe modificar y no cambian
– La PK debe ser única y no cambia en el tiempo
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
14. Restricciones de Integridad
• Restricciones aplicadas a las generales
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
– Restricciones de Integridad referencial: Se especifica entre dos
relaciones y sirve para mantener la consistencia entre tuplas de dos
relaciones.
• Una tupla en una relación que haga una referencia a otra relación
deberá referirse a una tupla existente en otra relación.
• Vínculos entre las entidades.
• La clave externa puede hacer referencia a su propia relación.
• Clave externa o foránea(FK)
– Los atributos de FK tiene el mismo dominio de la clave primaria de otro
esquema de relación R2
– El valor de la FK en una tupla t1 de R1 ocurre como valor de clave primaria
en alguna tupla t2 de R2 o bien es nulo.
– Restricciones de Integridad semántica: Se especifica de cómo una
columna maneja datos específicos ingresados y el valor que se guarda en
esa columna.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
15. Restricciones de dominio
Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
los datos.
Dominios base en SQL:
• CHAR(p): Cadena de caracteres de longitud fija p (máxima longitud p)
• VARCHAR(p): Cadena de caracteres de longitud variable. Máxima longitud p.
• NUMERICOS: Valor numérico de los siguientes tipos: enteros, precisión o
punto flotante.
• DATE: Fechas válidas.
• BINARY: Binarios utilizados para almacenar cadenas de bytes(BLOB).
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
16. TIPOS DE DATOS (NUMERICOS)
•Se debe buscar el tipo de dato numérico que mejor balance ofrezca entre
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
rango, tamaño de almacenamiento, y desempeño.
•Tres tipo de datos numéricos
•Enteros
•Precisión
•La precisión es el número de dígitos de un número. La escala es el número de
dígitos situados a la derecha de la coma decimal de un número. Por ejemplo, el
número 123,45 tiene una precisión de 5 y una escala de 2.
•Utilizado para realizar cálculos exactos. Tiene una precisión máxima de 1000
dígitos.
•Punto flotante
•se utilizan cuando se calculan funciones que requieren precisión fraccionaria.
•Seriales
•No es un verdadero tipo de datos, es una convención que permite configurar
un identificador único de columna que usa un generador de secuencia para
generarlo.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
17. TIPOS DE DATOS (NUMERICOS)
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Name Storage Size Description Range
smallint 2 bytes small-range integer -32768 to +32767
integer 4 bytes usual choice for integer -2147483648 to +2147483647
-9223372036854775808 to
bigint 8 bytes large-range integer 9223372036854775807
decimal variable user-specified precision, exact no limit
numeric variable user-specified precision, exact no limit
real 4 bytes variable-precision, inexact 6 decimal digits precision
double precision 8 bytes variable-precision, inexact 15 decimal digits precision
serial 4 bytes autoincrementing integer 1 to 2147483647
bigserial 8 bytes large autoincrementing integer 1 to 9223372036854775807
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
18. TIPOS DE DATOS (CARACTER)
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Name Description
character varying(n),
varchar(n) variable-length with limit
character(n), char(n) fixed-length, blank padded
text variable unlimited length
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
19. TIPOS DE DATOS (Date/Time)
•Fechas se almacenan internamente como datos numéricos, por lo que es
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
posible realizar operaciones aritméticas con ellas.
• Timestamps (fractional seconds precision) son típicamente usados para
seguimiento de eventos, controlar concurrencia entre otros, se genera
automáticamente cada vez que insertamos o modificamos una fila.
•Time zone el valor de la hora será ajustado a la zona horaria de la sesión
actual.
•Intervals son intervalos de tiempo.
•functions-datetime Funciones definidas que permiten obtener información
de estos tipos de datos.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
20. TIPOS DE DATOS (Date/Time)
Storage
Name Description Low Value High Value Resolution
Size
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
timestamp [ (p) ] 1
[ without time microsecond
zone ] 8 bytes both date and time 4713 BC 5874897 AD / 14 digits
1
timestamp [ (p) ] both date and time, microsecond
with time zone 8 bytes with time zone 4713 BC 5874897 AD / 14 digits
1
178000000 microsecond
interval [ (p) ] 12 bytes time intervals -178000000 years years / 14 digits
date 4 bytes dates only 4713 BC 5874897 AD 1 day
time [ (p) ] [ 1
without time microsecond
zone ] 8 bytes times of day only 00:00:00 24:00:00 / 14 digits
1
time [ (p) ] with times of day only, microsecond
time zone 12 bytes with time zone 00:00:00+1359 24:00:00-1359 / 14 digits
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
21. TIPOS DE DATOS (BOLEANO)
•El tipo de datos Boleano permite manejar dos estados como
verdadero/falso, sí/no o activado/desactivado.
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
•Lo valores permitidos para representar el estado verdadero
•TRUE
•'t‘
•‘true‘
•'y‘
•'yes‘
•'1‘
•Valores permitidos para representar el estado falso
•FALSE
•‘f‘
•'false‘
•'n‘
•'no‘
•'0’
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
22. Restricciones de Integridad
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Los cinco tipos de restricciones aplicados en sentecias SQL:
Restricciones (CONSTRAINT )
NOT NULL
UNIQUE
PRIMARY KEY
FOREING KEY
CHECK
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
23. Restricciones de Integridad
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
• Nulos: Un atributo puede o no admitir nulos. En SQL se especifica
mediante la cláusula NOT NULL.
• Integridad Referencial: Garantiza la existencia de las Claves
Foráneas.
Para ello se utilizan las cláusulas REFERENCES y FOREIGN KEY
• Clave Primaria: Garantiza la unicidad y obligatoriedad del o los
atributos definidos como clave primaria. Para ello se utiliza la
cláusula PRIMARY KEY.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
24. Restricciones de Integridad
• Clave Alternativa: Garantiza la unicidad de los atributos declarados como
tal. Se utiliza la cláusula UNIQUE.
Si se desea hacer obligatoria debe especificarse adicionalmente NOT
NULL.
• Las reglas CHECK para atributos:
Involucra condiciones de chequeo para uno o varios atributos.
Sintaxis : CHECK ( condicion)
• Mantención de la integridad
• Medida básica (después de llaves foráneas)
• Restringir valores lo más posible
• Clases de CHECK para restringir el dominio de datos
• CHECK ( x = 1 )
• CHECK ( pais IN ( „Colombia', „Mexico', „Brasil' ))
• CHECK ( valor >= 100 AND valor < 200 )
JOSÉ CUARTAS BASES DE DATOS
25. Apliquemos SQL
Restricción - UNIQUE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
La restricción UNIQUE asegura que una columna o un grupo de columnas no
permitirán valores repetidos – en otras palabras, se impone la unicidad de los
valores en la columna o el conjunto.
Una restricción UNIQUE se puede utilizar en cualquier columna que no sea parte
de una restricción PRIMARY KEY, que también impone valores únicos.
Además, las restricciones UNIQUE se pueden usar en columnas que permitan
valores nulos, mientras que las restricciones PRIMARY KEY no pueden. Los
valores nulos son ignorados por la restricción UNIQUE.
Una columna con una restricción UNIQUE puede referenciarse con una
restricción FOREIGN KEY.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
26. Apliquemos SQL
Restricción - UNIQUE
Para crear una restricción UNIQUE en una tabla, se usa el comando CREATE
TABLE o ALTER TABLE.
Nomenclatura para crear un UNIQUE en CREATE TABLE en una columna:
UNIQUE
nombre_columna tipo_dato [Opcional: NOT NULL] UNIQUE
Ejemplo 1: Cree una tabla llamada ejemplo_UNICO definida por la siguiente
estructura: ejemplo_UNIQUE_columna (codigo: smallint, nombre: varchar (20)).
Colocando el Campo código con una Restricción UNIQUE y NOT NULL.
CREATE TABLE ejemplo_UNIQUE_columna (
codigo smallint NOT NULL UNIQUE,
nombre varchar(20) Compruebe la restricción UNIQUE insertando dos filas
utilizando el mismo código.
)
JOSÉ CUARTAS BASES DE DATOS
27. Apliquemos SQL
Restricción - UNIQUE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Nomenclatura para creación UNIQUE en CREATE TABLE en múltiples columnas:
UNIQUE
En este caso la restricción no es por una columna en particular, sino que por un
conjunto de columnas. Por lo tanto la restricción se coloca después de haber
definido todos los campos de la tabla y antes de cerrar la instrucción CREATE
TABLE. Se utiliza para crear esta restricción la instrucción CONSTRAINT.
Nomenclatura:
CONSTRAINT nombre_restriccion UNIQUE (campo1, …, campoN)
NOTA: el nombre de la restricción UNIQUE se recomienda por norma que
comience con UQ_nombre_restriccion.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
28. Apliquemos SQL
Restricción - UNIQUE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Nomenclatura para creación UNIQUE en CREATE TABLE:
UNIQUE agrupado
Ejemplo 2: Crear la tabla ejemplo_UNICO_GR basada en la siguiente estructura:
ejemplo_UNIQUE_GR (tipodocumento : smallint, digito: char(2),nombre: varchar(20)). El
tipodocumento y digito deben ser no nulos y además en conjunto deben ser únicos.
CREATE TABLE ejemplo_UNICO_GR(
tipodocumento smallint NOT NULL, Compruebe la restricción UNIQUE
agrupada, dos filas con los mismos
digito char(2) NOT NULL, valores en el campo tipodocumento
y digito.
nombre varchar(20),
CONSTRAINT UQ_documento_digito UNIQUE (tipodocumento,digito)
)
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
29. Apliquemos SQL
Restricción - UNIQUE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Nomenclatura para creación UNIQUE en ALTER TABLE:
UNIQUE realizando una alteración de una tabla ya creada
Nomenclatura
ALTER TABLE nombre_tabla
ADD CONSTRAINT UQ_nombre_restriccion UNIQUE (nombre_campo)
Ejemplo 3: Adicione una restricción UQ_nombre_ALT a la tabla
ejemplo_UNIQUE_columna, para el atributo nombre.
ALTER TABLE "ejemplo_UNIQUE_columna“
ADD COSNTRAINT "UQ_nombre_restriccion" UNIQUE (nombre)
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
30. Apliquemos SQL
Restricción - UNIQUE
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Borrar una restricción UNIQUE creada.
Para borrar una restricción UNIQUE se debe utilizar la instrucción ALTER TABLE
con su opción DROP.
Nomenclatura
ALTER TABLE nombre_tabla
DROP CONSTRAINT UQ_nombre_restriccion
Ejemplo 4: Borre la restricción UQ_nombre_restriccion de la tabla
ejemplo_UNIQUE_columna.
ALTER TABLE "ejemplo_UNIQUE_columna“
DROP CONSTRAINT "UQ_nombre_restriccion"
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
31. Apliquemos SQL
Restricción – PRIMARY KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
La restricción PRIMARY KEY se usa para especificar la clave primaria de una
tabla, la columna o conjunto de columnas que identifican unívocamente a una fila.
Debido a que identifica a una fila la clave primaria nunca puede ser NULL, esto es
la que lo diferencia de la restricción UNIQUE.
Para la definición de la restricción PRIMARY KEY se pueden utilizar las
instrucciones CREATE TABLE y ALTER TABLE.
Nomenclatura para CREATE TABLE:
nombre_campo tipo_dato PRIMARY KEY
Ejemplo 1: Crea una Tabla denominada ejemplo_Clave_PK, basada en la
siguiente estructura: ejemplo_Clave_PK (codigo: integer, nombre: varchar(20)).
Colocando el campo código como clave primaria.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
32. Apliquemos SQL
Restricción – PRIMARY KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplo 1:
CREATE TABLE “ejemplo_Clave_PK” ( Compruebe si se cumple la
codigo integer PRIMARY KEY, restricción de clave primaria
ingresando dos filas con el
nombre varchar(20) mismo código.
)
Además usando CREATE TABLE se le puede asignar un nombre a la restricción
PRIMARY KEY (IDEAL) , usando la siguiente nomenclatura:
Para cuando se coloca al lado del campo:
nombre_campo tipo_dato CONSTRAINT PK_nombre_clave PRIMARY KEY
Para cuando se coloca antes de cerrar el CREATE TABLE
CONSTRAINT PK_nombre_clave PRIMARY KEY (columna o columnas)
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
33. Apliquemos SQL
Restricción – PRIMARY KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Nomenclatura para ALTER TABLE:
ALTER TABLE nombre_tabla
ADD CONSTRAINT PK_nombre_clave PRIMARY KEY (columna o columnas)
Nomenclatura para BORRAR una clave primaria:
ALTER TABLE nombre_tabla
DROP CONSTRAINT PK_nombre_clave
NOTA: EN LA BASE DE DATOS NO PUEDEN EXISTIR DOS
RESTRICCIONES CON EL MISMO NOMBRE, AUNQUE SEAN DE
TABLAS DISTINTAS.
NOTA: Por nomenclatura al dar un nombre a una clave primaria es
ideal comenzar con la letras PK
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
34. Apliquemos SQL
Restricción – PRIMARY KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplo 2:
Compruebe si se cumple la
restricción de clave primaria
Eliminamos la PK del ejmplo anterior. ingresando dos filas con el
mismo código.
ALTER TABLE “ejemplo_Clave_PK”
DROP CONSTRAINT nombre_de_la_restriccion
ALTER TABLE “ejemplo_Clave_PK”
ADD CONSTRAINT “PK_ejemplo_Clave” PRIMARY KEY (codigo, nombre )
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
35. Apliquemos SQL
Restricción – FOREIGN KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Una restricción FOREIGN KEY define una clave externa, que identifica una
relación entre dos tablas.
La columna o columnas clave externa de una tabla referencia a una clave
candidata – una o varias columnas – de otra tabla.
Cuando se inserta una fila en la tabla con la restricción FOREIGN KEY, los
valores que se van a introducir en la columna o columnas que se han definido
como clave externa se comprueban frente a los valores de la clave candidata de
la tabla referenciada. Si ninguna fila de la tabla referenciada se ajusta a los
valores de la clave externa, la nueva fila no se puede insertar.
La restricción FOREIGN KEY también se comprueba cuando se realizan
actualizaciones y borrados en la tabla referenciada o la tabla que posee la clave
externa.
Una clave externa sólo puede referenciar columnas que tengan las restricciones
PRIMARY KEY o UNIQUE en la tabla referenciada.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
36. Apliquemos SQL
Restricción – FOREIGN KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Además, el tipo de dato y el tamaño de la columna o columnas de la clave
externa, también debe coincidir con el de la columna o columnas referenciadas.
Esta restricción FOREIGN KEY se puede asignar utilizando la sentencia CREATE
TABLE y ALTER TABLE.
Nomenclatura en CREATE TABLE (Siempre se agrega antes de finalizar la
creación de la tabla):
CONSTRAINT FK_nombre_clave_ajena FOREIGN KEY (columna o columnas
que guardaran los valores de la clave ajena) REFERENCES
nombre_tabla_referencia (columna o columna que poseen datos a validar)
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
37. Apliquemos SQL
Restricción – FOREIGN KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplo 1: Crear las siguientes tablas basadas en las siguientes estructuras:
universidad(codigo_uni: integer,nombre:varchar(20))
estudiante (tipo_documento: char(2), numero_documento: integer, nombre:
varchar(20), universidad: integer)
Restricciones: Universidad clave primaria codigo_uni y Estudiante clave primaria
tipo_documento y numero_documento. Además en estudiante universidad es una
clave externa que se debe verificar en universidad.
Paso 1: Crear la Tabla UNIVERSIDAD
CREATE TABLE “UNIVERSIDAD” (
codigo_uni integer,
nombre varchar(20) NOT NULL,
CONSTRAINT PK_universidad PRIMARY KEY (codigo_uni)
)
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
38. Apliquemos SQL
Restricción – FOREIGN KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplo 1:
Paso 2: Crear la Tabla ESTUDIANTE
CREATE TABLE “ESTUDIANTE” (
tipo_documento char(2),
numero_documento integer),
nombre varchar(20) NOT NULL,
universidad integer NOT NULL,
CONSTRAINT PK_estudiante PRIMARY KEY (tipo_documento,
numero_documento),
CONSTRAINT FK_estudiante_universidad FOREIGN KEY (universidad)
REFERENCES “UNIVERSDIAD”(codigo_uni)
)
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
39. Apliquemos SQL
Restricción – FOREIGN KEY
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Nomenclatura en ALTER TABLE (para cuando se desea crear una clave externa
después de haber creado la tabla):
ALTER TABLE nombre_tabla
ADD CONSTRAINT FK_nombre_clave_ajena FOREIGN KEY (columna o
columnas para recepción de clave ajena) REFERENCES
nombre_tabla_referencia (columna o columnas de referencia)
Nomenclatura para borrar una clave foránea:
ALTER TABLE nombre_tabla
DROP CONSTRAINT FK_nombre_restriccion
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
40. Apliquemos SQL
Restricción – CHECK
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
La restricción CHECK se usa para restringir los valores permitidos de una
columna o unos valores específicos. Los valores de una columna que se van a
introducir o actualizar se confirman.
Se puede agregar esta restricción utilizando las instrucciones CREATE TABLE o
ALTER TABLE.
Nomenclatura CREATE TABLE:
CONSTRAINT CK_nombre_restriccion CHECK (condiciones)
Ejemplo 6: Crear una Tabla ejemplo_CH basandose en la siguiente estructura:
ejemplo_CK (codigo: integer, nombre: varchar(20)). Donde codigo es la clave
primaria y solo puede aceptar valores entre 1 y 100.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
41. Apliquemos SQL
Restricción – CHECK
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplo 6:
CREATE TABLE Ejemplo_CK (
codigo integer,
nombre varchar(20),
CONSTRAINT PK_codigo PRIMARY KEY (codigo),
CONSTRAINT CK_codigo_condicion CHECK (codigo > 0 and codigo < 101)
)
Para probar la realidad de la restricción ingrese un
registro a la tabla Ejemplo_CK con un codigo con
valor mayor que 100.
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
42. Apliquemos SQL
Restricción – CHECK
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Nomenclatura para ALTER TABLE (en el caso de que se cree una restricción
después de haber creado la tabla):
ALTER TABLE nombre_tabla
ADD CONSTRAINT CK_nombre_restriccion CHECK (condiciones)
Nomenclatura para Borrar una restricción CHECK:
ALTER TABLE nombre_tabla
DROP CONSTRAINT CK_nombre_restriccion
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/
43. Apliquemos SQL
Restricción – CHECK
http://datosintensos.blogspot.com/
http://datosintensos.blogspot.com/
Ejemplos con la cláusula CHECK:
CREATE TABLE empleado
( documento INTEGER PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
pais VARCHAR(30)
salario INTEGER NOT NULL CHECK (salario > 0 ) ,
comision INTEGER CHECK (comision between 0 and 100),
cargo VARCHAR(20) NOT NULL,
depto INTEGER NOT NULL,
CONSTRAINT CK_pais CHECK ( pais IN ( „Colombia', „Mexico', „Brasil' ))
);
JOSÉ CUARTAS BASES DE DATOS
Actualízate sobre gestión de información en http://datosintensos.blogspot.com/