You are on page 1of 34

Nodelo Relacional de datos - 1

NANIPULACION DE DATOS:
LENGUAJES RELACIONALES - SQLZ
Sfrucfured Query Longuoge (lenguaje estructurado de consulta)
- Primer lenguaje de BD de alto nivel. Anos 70.
- Disenado e implementado en IBM Research(San Jos - California),
para el SGBD Relacional experimental SYSTEM R
- Definicin de un lenguaje estndar
ANSI (American National Standars Institute)
+ ISO (Organization for International Standardization)
- SQL1 (ANSI 1986), extendido en 1989 ( SQL-9)
- SQL-92 (SQLZ), y
- SQL3 (extensiones de Orientacin a Ob]etos y otros conceptos recientes;
denominado SQL:1999)
Nodelo Relacional de datos - 2
SQLZ
- Lenguaje de Bases de Datos COMPLETO {No slo "de consulta")
- Definicin y Nanipulacin de Datos (DDL + DML)
- Definicin de Visfos (VDL)
- Creacin y Destruccin de ndices (aunque en SQLZ "ya no existen)
- Incorporacin de SQL dentro de cdigo escrito con un Lengua]e de Programacin de
propsito general (Pa s ca l, C, etc.)
- Los proveedores de SGBDR comerciales implementan variaciones de SQL
- algunos incluyen caracteristicas que no estan estandarizadas ( triggersfreglas activas)
- Niveles de compatibilidad con el estandar de SQL
Entry SQL
Intermediate SQL
Full SQL
Nodelo Relacional de datos - 3
Estructura del seminario sobre SQL2
ConsuItus o SeIeccin de dutos
Modificucin de dutos
Vistus
Definicin y AIterucin de dutos
- Esquemus Dominios keIuciones
kestricciones de Integridud SeneruIes {Asertos}
Seguridud y ControI de Acceso
Aneo: resumen de Iu sintuis o estructuru de SQL-9Z
Nodelo Relacional de datos - +
CONSULTAS BSICAS EN SQL
donde:
<lis t a a t r ibu t os > atributos cuyos valores va a obtener la consulta
<lis t a t a bla s > relaciones necesarias para realizar la consulta
<con dicin > expresin booleana para identificar tuplas que obtendra la consulta
(expresin de reunin yfo de seleccin)
Fecho de nocimienfo y direccion deI empIeodo IIomodo Jose 8. SiIvo
SELECT fech a n , dir eccin
FROM EMPLEADO
WHERE n ombr ep = J os AND in ic = B AND a pellido = Silva;
- La consulta selecciona tuplas de <lis t a t ablas >
que satisfacen <c ondic i n> y
proyecta el resultado sobre los atributos de <lis t a at ribut os >
- Clausula SELECT:
Instruccin basica de
obtencin de informacin
SELECT <lis t a a t r ibu t os >
FROM <lis t a t a bla s >
WHERE <con dicin >
Nodelo Relacional de datos - 5
CONSULTAS BSICAS EN SQL2
La clausula SELECT ... FROM ... WHERE...
- No es igual a la operacin Restriccin del Algebra Relacional
SELECT de SQL tiene muchas mas opciones y matices
- Para el caso de una nica tabla T enlis t a t a bla s !es equivalente a...

Iisfo ofribufos
(
condicion
(T))
- SQL2 vs. Modelo Relacional Formal (MPF)
- SQL2 permite que las relaciones (tablas) tengan 2 o ms tuplas
idnticas en todos los valores de sus atributos (el MPF no!!)
Tabla SQL con]unto de tuplas (en general)
TubIu SQL ~ MuIticongunto (EDJ, boIso, soco) de tupIus
- Es posible for;or que las tablas SQL sean conjunfos de fupIos:
- mediante opcin DISTINCT (en una SELECT) o
- con resfricciones de cIove
Nodelo Relacional de datos - 6
CONSULTAS BSICAS EN SQL
Mombre, opeIIido y direccion de fodos Ios empIeodos deI depfo de Invesfigocion
SELECT n ombr ep, a pellido, dir eccin
FROM EMPLEADO, DEPARTAMENTO
WHERE n ombr ed=In ves t iga cin condicin de seleccin
AND n mer od=n d; condicin de reunin entre las tablas
- Cualquier numero de condiciones seleccinJreunin en SELECT
Poro codo proyecfo ubicodo en Sonfiogo, obfener eI n" deI proyecfo, n" deI depfo que
Io confroIo y eI opeIIido, direccion y fecho de nocimienfo deI gerenfe de ese depfo
SELECT n mer op, n md, a pellido, dir eccin , fech a n
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE n md=n mer od AND n s s gt e=n s s AND lu ga r p=Sa n t ia go;
- Una SELECT puede obtener tuplas repetidas
SoIorio de Ios empIeodos de Ios deporfomenfos de Adminisfrocion e Invesfigocion
SELECT s a la r io
FROM EMPLEADO, DEPARTAMENTO
WHERE (n ombr ed=Admin is t r a cin OR n ombr ed=In ves t iga cin )
AND n mer od=n d;
Nodelo Relacional de datos - 7
CONSULTAS BSICAS: OMISIN DE WHERE, y *
- Omisin de WHERE SELECCIM IMCOMDICIOMAL WHERE TRUE
seleccin de todas las tuplas
- de la relaci n (unica) de la cl ausula FROM, o
- del producto cartesiano o cruzado (si FROM contiene varias tablas)
SeIeccionor fodos Ios nss de empIeodos
SELECT n s s FROM EMPLEADO;
SeIeccionor fodos Ios combinociones de nss de empIeodos y nombres de depfos
SELECT n s s , n ombr ed
FROM EMPLEADO, DEPARTAMENTO;
- Obtencin de los valores de todos Ios utributos de las tuplas seleccionadas
-Uso del simbolo * (TODOS LOS ATPI8UTOS)
-No es necesario listar todos los nombres tras clausula SELECT
SELECT * FROM EMPLEADO WHERE n d=5;
SELECT * FROM EMPLEADO,DEPARTAMENTO
WHERE n ombr ed=In ves t iga cin AND n d=n mer od;
SELECT * FROM EMPLEADO, DEPARTAMENTO;
Nodelo Relacional de datos - 8
CONSULTAS BSICAS: CADENAS DE CARACTERES
COMPAkACIM DE SUCADEMAS DE CAkACTEkES
Operador LIKE
- Caracteres reservados: % y _ (comodines)
Mombres y opeIIidos de Ios empIeodos cuyo direccion esfe en Higueros, esfodo de Mexico
SELECT a pellido, n ombr ep FROM EMPLEADO
WHERE dir eccin LIKE %Higue ras , MX% ;
COMCATEMACIM DE CADEMAS DE CAkACTEkES
Operador | |
Mombres compIefos de Ios empIeodos cuyo direccion esfe en Higueros, esfodo de Mexico
SELECT n ombr ep | | in ic | | a pellido FROM EMPLEADO
WHERE dir eccin LIKE %Higu er a s , MX% ;
Nodelo Relacional de datos - 9
CONSULTAS BSICAS: ARITMTICA y TIEMPO
OPEkACIOMES AkITMTICAS
- Aplicacin de operadores aritmticos ( + - * / ) sobre valores numricos
SoIorios de Ios empIeodos que frobojon en eI proyecfo Pr odu ct oX, fros un oumenfo deI I07
SELECT a pellido, n ombr ep, 1 . 1 *s alario
FROM EMPLEADO, TRABAJ A_EN, PROYECTO
WHERE n s s =n s s e AND n mp=n mer op AND n ombr epr =Pr odu ct oX ;
(^ojo eI voIor r ea lde Ios soIorios en Io fobIo EMPLEADO no combio.^)
OPEkACIOMES COM FECHASHOkASMAkCAS DE TIEMPO E IMTEkVALOS
- Incremento {+) y Decremento{-) de atributos tipo DATE, TIME, TIMESTAMP
en un int e rvalo compatible con el tipo
- Especificacin del valor de un INTERVAL
como diferencia de dos valores DATE, TIME o TIMESTAMP
Nodelo Relacional de datos - 10
CONSULTAS BSICAS: CALIFICACIN
)En SQL los nombres de atributos deben ser nicos dentro de cada relacin
- Consulta que referencia a varios atributos de igual nombre,
pero de relaciones distintas
AMISEDAD --------------------------- Solucin: CALIFICACIM
EjempIo disfinfo oI deI esquemo COMPAMA
Codigo, nombre y direccion de Ios empIeodos deI deporfomenfo de Morkefing
EMPLEADO(codEmp, nombre , c odDe pt o, dir eccin , ...)
DEPARTAMENTO(c odDe pt o, nombre , ...)
SELECT codEmp, EMPLEADO. nombre , dir eccin
FROM EMPLEADO, DEPARTAMENTO
WHERE DEPARTAMENTO. nombre =Ma r ket in g
AND DEPARTAMENTO. c odDe pt o = EMPLEADO. c odDe pt o;
Nodelo Relacional de datos - 11
- Puede utilizarse los seudnimos para ucortur nombres de reIocion
dentro de las consultas con calificacin:
EMPLEADO(codEmp, nombre , c odDe pt o, dir eccin , ...)
DEPARTAMENTO(c odDe pt o, nombre , ...)
SELECT codEmp, E. nombre , dir eccin
FROM EMPLEADO E, DEPARTAMENTO D
WHERE D. nombre =In ves t iga cin
AND D. c odDe pt o = E. c odDe pt o;
- Consulta que se refiere DOS veces a la misma relacin (recursividad de 1 nivel)
AMISEDAD -------------------------- Solucin: SEUDMIMOS
Obfener nombre y opeIIido de codo empIeodo y de su supervisor (jefe) inmediofo
SELECT E. n ombr ep, E. a pellido, S. n ombr ep, S. a pellido
FROM EMPLEADO E, EMPLEADO AS S
WHERE E. n s s s u per =S. n s s ;
CONSULTAS BSICAS: SEUDNIMOS
Nodelo Relacional de datos - 12
CONSULTAS BSICAS: CAMBIO DE NOMBRE DE ATRIBUTOS
- En el resultado de evaluar la consulta
Mombres de codo empIeodo y su supervisor, combiondo oI mismo fiempo Ios nombres
de Ios ofribufos resuIfonfes o n ombr e_emplea do y n ombr e_s u per vis or
SELECT E.n ombr ep AS nombre _e mple ado,
S.n ombr ep AS nombre _s upe rvi s or
FROM EMPLEADO AS E, EMPLEADO AS S
WHERE E.n s s s u per = S.n s s ;
Muevo cobecero poro Io reIocion resuIfodo
- Seudnimos de atributos (yJo relacin) en clausula FROM
EMPLEADO(codEmp, nombre , c odDe pt o, dir eccin , ...)
DEPARTAMENTO(c odDe pt o, nombre , ...)
SELECT c od, nom, dir
FROM EMPLEADO E( c od, nom, de p , dir, . . . ), DEPARTAMENTO
WHERE nombre =In ves t iga cin AND de p = c odDe pt o;
Nodelo Relacional de datos - 13
CONSULTAS BSICAS:
ORDEN DE PRESENTACIN DE LAS TUPLAS
SQL permite presentar las tupIus resuItudo de una consulta de forma ordenudu
- Ordenacin segn vuIores de uno o varios utributos
- Ascendente ASC (por defecto) o Descendente DESC
- Suele ser una operacin muy cosfoso
) las tuplas NO se ordenan en disco: se YHQ ordenudus pero no Io HVWiQ
Mombre y opeIIido de Ios empIeodos y proyecfos en Ios que frobojon, en orden descendenfe por
deporfomenfos y, denfro de c/depfo, en orden oIfobefico y oscendenfe por opeIIido y nombre
SELECT n ombr ed, a pellido, n ombr ep, n ombr epr
FROM DEPARTAMENTO, EMPLEADO, TRABAJ A_EN, PROYECTO
WHERE n mer od=n d AND n s s =n s s e AND n mp=n mer op
ORDER BY n ombr ed DESC, a pellido ASC, n ombr ep ASC;
Nodelo Relacional de datos - 1+
TABLAS COMO CONJUNTOS EN SQL2
- SQL no eIimino fupIos repefidos del resultado de una consulta, porque...
- La eliminacin de duplicados es costosa (ordenar+recorrer+eliminar)
- El usuario puede desear ver las tuplas repetidas en el resultado de una consulta
- Si se aplica una funci n agregada a tuplas, rara vez deben eliminarse duplicados
DISTINCT: Para eliminar duplicados del resultado de una consulta SQL
El resultado = PeIocion deI ModeIo PeIocionoI FormoI (con]unto de tuplas)
SoIorio de fodos Ios empIeodos
SELECT s a la r io
FROM EMPLEADO;
SoIorios disfinfos de Ios empIeodos (sin imporfor cuonfos percibon codo confidod)
SELECT DISTINCT s a la r io
FROM EMPLEADO;
Nodelo Relacional de datos - 15
TABLAS COMO CONJUNTOS
OPEkACIOMES DE COMJUMTOS
UNION( ), INTERSECT( ), EXCEPT ( )
-Resultado: con]untos de tuplas ---las tuplas repetidas se eliminan
-Para NO eliminar duplicados: UNION ALL, INTERSECT ALL, EXCEPT ALL
-Las relaciones han de ser compatibles:
igual n de atributos, en el mismo orden y con el mismo dominio
Mmeros de Ios proyecfos en Ios que porficipo eI empIeodo de opeIIido SiIvo, yo seo
como frobojodor, o bien como gerenfe deI deporfomenfo que confroIo eI proyecfo
( SELECT n mer op
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE n md=n mer od AND n s s gt e=n s s AND a pellido=Silva )
UNION
( SELECT n mer op
FROM PROYECTO, TRABAJ A_EN, EMPLEADO
WHERE n mer op=n mp AND n s s e=n s s AND a pellido=Silva );
Nodelo Relacional de datos - 16
TABLAS COMO CONJUNTOS: CONJUNTOS EXPLCITOS
COMJUMTO EXPLCITO DE VALOkES en clausula WHERE
- Lista de valores encerrada entre parntesis
nss de Ios empIeodos que frobojon en Ios proyecfos I, Z o 3
SELECT DISTINCT n s s e FROM TRABAJ A_EN
WHERE nmp IN (1 , 2 , 3 );
Operudor IM
v IN V indica si el valor pertenece al conjunto de valores V
-Devuelve TRUE si algun elemento e de V cumple quev = e
nss de Ios empIeodos que frobojon en oIgn proyecfo que no seo eI 4 ni eI o
SELECT DISTINCT n s s e FROM TRABAJ A_EN
WHERE nmp NOT IN (4 , 6 );
Nodelo Relacional de datos - 17
TABLAS COMO CONJUNTOS: CONJUNTOS EXPLCITOS
Operudor AMY {o SOME}
v <op> ANY V o v <op> SOME V ,, donde <op> {>, , <, , <>, = }
-Compara un valor individual vcon un con]unto V
-Devuelve TRUE si algun elemento e de V cumple quev <op> e
nss de Ios empIeodos que frobojon en oIguno de Ios proyecfos I, Z o 3
SELECT DISTINCT n s s e FROM TRABAJ A_EN
WHERE nmp = ANY (1 , 2 , 3 );
Operudor ALL
v <op> ALL V,, donde <op> {>, , <, , <>, = }
-Compara un valor v con con]unto V
-Devuelve TRUE si para todo elemento e de V se cumple quev <op> e
nss de Ios empIeodos que frobojon o Io ve; en Ios fres proyecfos I, Z y 3
SELECT DISTINCT n s s e FROM TRABAJ A_EN
WHERE nmp = ALL (1 , 2 , 3 );
Nodelo Relacional de datos - 18
CONSULTAS ANIDADAS EN SQL2
COMSULTA AMIDADA:
- valores obtenidos de la BD que se usan en la condicin de otra consulta, para
obtener otros datos
- Es una consulta SELECT completa, dentro de clusula WHERE de otra
consulta {consuIfo exferior)
- Es posible tener varios niveles de consultas anidadas
Mmeros de Ios proyecfos en Ios que porficipo eI empIeodo de opeIIido SiIvo, como frobojodor o
como gerenfe deI deporfomenfo que confroIo eI proyecfo
SELECT DISTINCT n mer op FROM PROYECTO
WHERE n mer op IN ( SELECT nme rop
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE nmd=nme rod
AND ns s gt e =ns s AND ape llido=Silva )
OR
n mer op IN (SELECT nmp
FROM TRABAJA_EN, EMPLEADO
WHERE ns s e =ns s AND ape llido=Si lva );
Nodelo Relacional de datos - 19
CONSULTAS ANIDADAS: COMPARACIN DE CONJUNTOS
Operudor IM (otro uso del mismo operador)
t IN S indica si la tuplatpertenece al conjunto de tuplas S (subconsulta)
Mombre y direccion de Ios empIeodos que frobojon en oIgn proyecfo.
SELECT n ombr ep, dir eccin EMPLEADO
WHERE ns s IN ( SELECT ns s e FROM TRABAJA_EN );
M"s de seguridod socioI de oqueIIos empIeodos que frobojon en oIgn proyecfo en eI que froboje
eI empIeodo Jose 8. SiIvo, de formo foI que ombos fengon Io mismo combinocion (proyecfo,
horos), es decir fodo empIeodo que froboje Ios mismos horos que Jose 8. SiIvo, en codo
proyecfo en eI que frobojen ombos. EI nss de Jose 8. SiIvo es 'IZ34bo789.
SELECT DISTINCT n s s e FROM TRABAJ A_EN
WHERE (nmp, horas ) IN ( SELECT nmp, horas FROM TRABAJA_EN
WHERE ns s e =1 2 3 4 5 6 7 8 9 );
Nodelo Relacional de datos - 20
Operudor AMY o SOME (otro uso del mismo operador)
t <op> ANY S o t <op> SOME S,, donde <op> {>, , <, , , = }
- Compara una tupla t con las tuplas resultado de una consulta anidada
-Devuelve TRUE si alguna tupla e de S cumple quet <op> e
Operudor ALL (otro uso del mismo operador)
t <op> ALL S,, donde <op> {>, , <, , , = }
- Compara una tupla t con las tuplas resultado de una consulta anidada
-Devuelve TRUE si para toda tupla e de S se cumple quet <op> e
Mombres y opeIIidos de Ios empIeodos cuyo soIorio es menor que eI de TODOS Ios empIeodos deI
deporfomenfo b
SELECT n ombr ep, a pellido FROM EMPLEADO
WHERE s alari o < ALL ( SELECT s alario
FROM EMPLEADO
WHERE n d=5 );
CONSULTAS ANIDADAS: COMPARACIN DE CONJUNTOS
Nodelo Relacional de datos - 21
- Colisin de nombres de atributos entre consulta exterior y anidada Ambigedud
Mombres y opeIIidos de codo empIeodo con dependienfes de iguoI nombre y sexo que eI
SELECT n ombr ep, a pellido FROM EMPLEADO E
WHERE n s s IN ( SELECT n s s e FROM DEPENDIENTE
WHERE n s s e=n s s AND n ombr ep=n ombr e_dep
AND s e xo=s e xo);
SoIucin:
- REGLA: "unu referenciu u un DWULEXWRQRFDOLILFDGR se refiere u Iu
reIucin decIurudu en Iu FRQVXOWDDQLGDGDPiVLQWHULRU"
- Si es necesario hacer referencia desde una consulta anidada,
a atributos de relaciones declaradas en una consulta externa CALIFICAk
Mombres y opeIIidos de codo empIeodo con dependienfes de iguoI nombre y sexo que eI
SELECT n ombr ep, a pellido FROM EMPLEADO E
WHERE n s s IN ( SELECT n s s e FROM DEPENDIENTE
WHERE n s s =n s s e AND n ombr ep=n ombr e_dep
AND E.s exo=s exo);
CONSULTAS ANIDADAS: ATRIBUTOS AMBIGUOS
Nodelo Relacional de datos - 22
CONSULTAS ANIDADAS: CORRELACIN
COMSULTAS COkkELACIOMADAS:
-Una condicin de la consulta anidada hace referencia a
un atributo de una relacin declarada en la consulta exterior
La consulta anidada se evuIu unu vez puru cudu tupIu
(o combinacin de tuplas) de Iu consuItu eterior
SELECT n ombr ep, a pellido FROM EMPLEADO E
WHERE n s s IN ( SELECT n s s e FROM DEPENDIENTE
WHERE ns s =ns s e AND n ombr ep=n ombr e_dep AND E.s exo=s exo);
Evaluar la consulta anidada para cada tupla de EMPLEADO,
Si el valor de n s s de la tupla EMPLEADO esta en el resultado de la consulta
anidada, seIeccionor la tupla EMPLEADO poro eI resuIfodo fofoI
- Una CONSULTA ANIDADA que use el operador = o IN
siempre puede expresarse como una NICA CONSULTA
SELECT E.n ombr ep, E.a pellido
FROM EMPLEADO E, DEPENDIENTE D
WHERE E.n s s =D.n s s e AND E.n ombr ep=D.n ombr e_dep AND E.s exo=D.s exo;
Nodelo Relacional de datos - 23
CONSULTAS ANIDADAS: EXISTS y UNIQUE
COMPkOACIM DE kELACIOMES VACAS: EXISTS (S)
- Devuelve TRUE si la relacin S confiene oI menos uno fupIo
- Devuelve FALSE si S es una relacin vacia ( sin fupIos)
S sueIe ser uno consuIfo onidodo correIocionodo
Mombres y opeIIidos de empIeodos con oIgn dependienfes de iguoI nombre y sexo que eI
SELECT E.n ombr ep, E.a pellido FROM EMPLEADO E
WHERE EXISTS ( SELECT * FROM DEPENDIENTE
WHERE E. ns s =ns s e AND s exo=E.s exo AND E.n ombr ep=n ombr e_dep);
Mombres de empIeodos sin personos dependienfes
SELECT n ombr ep, a pellido FROM EMPLEADO E
WHERE NOT EXISTS ( SELECT * FROM DEPENDIENTE WHERE n s s =n s s e );
COMPkOACIM DE TUPLAS DUPLICADAS: UNIQUE (S)
- Devuelve TRUE si MO hay fupIos repefidos en S
S sueIe ser uno consuIfo onidodo correIocionodo
Mombres y opeIIidos de EmpIeodos que frobojon en un nico proyecfo
SELECT n ombr ep, a pellido FROM EMPLEADO
WHERE UNIQUE ( SELECT n s s e FROM TRABAJ A_EN WHERE n s s =n s s e );
Nodelo Relacional de datos - 2+
VALORES NULOS { NULL )
(^
Recordamos...
Codo NULL es distinto de todos Ios demos NULL
en uno PEUMIM, Ios fupIos con NULL en Ios ofribufos de reunion MO se
incIuyen en eI resuIfodo (excepfo si PEUMIM EXTEPMA)
^)
Operudor IS MULL IS MOT MULL
v IS NULL es TRUE si el valor v es NULL (informocion desconocido)
v IS NOT NULL es TRUE si el valor v es un valor no NULL
Mombres de empIeodos sin supervisores
SELECT n ombr ep, a pellido FROM EMPLEADO
WHERE ns s s upe r IS NULL;
Nodelo Relacional de datos - 25
FUNCIONES AGREGADAS
Operucin COUNT( )
-Cuenta el numero de tuplas o valores especificados en una consulta
Operucin SUM( ), MAX( ), MIN( ), AVG( )
-Suma, maximo, minimo y media aritmtica
-Aplicadas a un multicon]unto (bag, saco) de voIores numericos
- Pueden ser usadas en clausula SELECT o en HAVING (*se vera*)
Sumo de Ios soIorios, soIorio moximo, soIorio mnimo y soIorio medio, de Ios empIeodos
SELECT SUM(s alario), MAX(s alario), MIN(s alario), AVG(s alario)
FROM EMPLEADO;
Sumo de Ios soIorios, soIorio moximo, soIorio mnimo y soIorio medio, pero de Ios empIeodos deI
deporfomenfo de Invesfigocion
SELECT SUM(s a la r io), MAX(s a la r io), MIN(s a la r io), AVG(s a la r io)
FROM EMPLEADO, DEPARTAMENTO
WHERE n d=n mer od AND n ombr ed=In ves t iga cin ;
Nodelo Relacional de datos - 26
FUNCIONES AGREGADAS
USO DE * EM LAS FUMCIOMES ASkESADAS
Mmero fofoI de empIeodos de Io compoho
SELECT COUNT(*) FROM EMPLEADO (cuenfo fiIos o fupIos)
Confor eI nmero de empIeodos de Io compoho que tienen un gefe
SELECT COUNT(n s s s u per ) FROM EMPLEADO;
(no cuenfo fupIos con n s s s u per o NULL)
Mmero de empIeodos en eI deporfomenfo de Invesfigocion
SELECT COUNT(*) FROM EMPLEADO, DEPARTAMENTO
WHERE n d=n mer od AND n ombr ed=In ves t iga cin ;
USO DE DISTINCT EM LAS FUMCIOMES ASkESADAS
Confor eI nmero de vuIores distintos de soIorio que pueden cobror Ios empIeodos
SELECT COUNT(s alario) FROM EMPLEADO;
Error MO se eIiminon dupIicodos, os que COUNT(s a la r io) COUNT(*)
SELECT COUNT(DISTINCT s alari o) FROM EMPLEADO; OI ll
Nodelo Relacional de datos - 27
FUNCIONES AGREGADAS
FUMCIOMES ASkESADAS EM COMSULTAS COkkELACIOMADAS
- Subconsulta que incluye la funcin, dentro del WHERE de la consulta exterior
Mombres de Ios empIeodos con Z o mos dependienfes
SELECT a pellido, n ombr ep FROM EMPLEADO
WHERE 2 ( SELECT COUNT(*)
FROM de pe ndie nt e
WHERE ns s =ns s e );
Nodelo Relacional de datos - 28
AGRUPACIN
CIusuIu GROUP BY
- Subgrupos de tuplas dentro de una relacin
- Los grupos se forman segun el valor de algunos atributos: ofribufos de ogrupocion
- Las fupIos de codo grupo tendran iguoI voIor en Ios ofribufos de ogrupocion
APLICACIM DE FUMCIOMES ASkESADAS A SkUPOS
Poro codo deporfomenfo, obfener su n" y nombre, eI n" de empIeodos de dicho deporfomenfo y eI
soIorio medio de Ios empIeodos deI mismo
SELECT nd, COUNT(*), AVG(s a la r io)
FROM EMPLEADO
GROUP BY nd ;
- Los utributos de ugrupucin deben upurecer en cIusuIu SELECT
para que su valor (unico para cada grupo) aparezca ]unto al resultado
de aplicar la funcin a cada grupo
Nodelo Relacional de datos - 29
AGRUPACIN
CIusuIu HAVIMS
-Siempre ]unto a GROUP BY
-Condicin que deben cumplir los grupos de tuplas asociados a cada
valor de los atributos de agrupacin
-Un grupo que MO cumpIe Io condicion, no se seIecciono para el resultado
Poro codo proyecfo en eI que trubugen ms de dos empIeudos, obfener nmero y nombre deI
proyecfo, y eI n" de empIeodos que frobojon en eI
SELECT n mer op, n ombr epr , COUNT(*)
FROM PROYECTO, TRABAJ A_EN
WHERE n mer op=n mp
GROUP BY n mer op, n ombr epr
HAVING COUNT(*) > 2 ;
Nodelo Relacional de datos - 30
AGRUPACIN
WHERE... se aplica a tupIus individuuIes
HAVING... se aplica a grupos de tupIus
M" fofoI de empIeodos cuyos soIorios reboson Ios 40.000$ en codo deporfomenfo,
pero soIo en eI coso de deporfomenfos en Ios que frobojen mos de b empIeodos
(^ConsuIfo incorrecfo por que7 ^)
SELECT n ombr ed, COUNT(*)
FROM DEPARTAMENTO, EMPLEADO
WHERE n mer od=n d
AND s a la r io>40000
GROUP BY n ombr ed
HAVING COUNT(*) > 5 ;
(^ pisfo orden de ejecucion ^)
(^ConsuIfo correcfo^)
SELECT n ombr ed, COUNT(*)
FROM DEPARTAMENTO, EMPLEADO
WHERE n mer od=n d
AND s a la r io>40000
AND n d IN (SELECT n d
FROM EMPLEADO
GROUP BY n d
HAVING COUNT(*) > 5)
GROUP BY n ombr ed ;
Nodelo Relacional de datos - 31
REUNIN DE RELACIONES {JOIN)
Mombres y direccion de empIeodos deI deporfomenfo de Invesfigocion
SELECT n ombr ep, a pellido, dir eccin
FROM EMPLEADO, DEPARTAMENTO reunin (join) de fobIos
WHERE n ombr ed=In ves t iga cion AND nd=nme rod; condicion de reunion
kELACIOMES o TALAS kEUMIDAS (nuevo en SQLZ)
Especificacin en la clusula FROM de la tabla resultante de una REUNION
- Antes se especificaba en clausulas FROM y WHERE
- Consulta mos comprensibIe (no me;cIo condiciones de reunion y de seIeccion)
Mombres y direccion de empIeodos deI deporfomenfo de Invesfigocion
SELECT n ombr ep, a pellido, dir eccin
FROM (EMPLEADO JOIN DEPARTAMENTO ON n d=n mer od) nico fobIo reunido
WHERE n ombr ed=In ves t iga cion ;
Nodelo Relacional de datos - 32
REUNIN DE RELACIONES {JOIN)
AMIDAMIEMTO DE ESPECIFICACIOMES DE kEUMIM
Poro codo proyecfo ubicodo en Sonfiogo, obfener n" de proyecfo, n" deI deporfomenfo que Io
confroIo y opeIIido, direccion y fecho de nocimienfo deI gerenfe de ese deporfomenfo
SELECT n mer op, n md, a pellido, dir eccin , fech a n
FROM ( ( PROYECTO JOIN DEPARTAMENTO ON nmd=nme rod )
J OIN EMPLEADO ON n s s gt e=n s s )
WHERE lu ga r p=Sa n t ia go;
Nodelo Relacional de datos - 33
REUNIN INTERNA DE RELACIONES
kEUMIM IMTEkMA {inner goin}
-Tipo de reunin por defecto
SELECT ...
FROM (R1 JOIN R2 ON <c ond_re unin>)
WHERE ...
- Si exisfe uno fupIo fI en uno de Ios reIociones y ofro fupIo fZ en Io ofro,
foIes que cumpIen Io condicion de reunion, Io fobIo resuIfodo (reunido)
incIuiro Io fupIo resuIfodo de combinor fI y fZ
SELECT E.n ombr ep AS n ombr e_emplea do, S.n ombr ep AS n ombr e_s u per vis or
FROM (EMPLEADO E JOIN EMPLEADO S ON E.n s s s u per = S.n s s );
- Son excluidas las tuplas EMPLEADO con NULL en n s s s u per
-Tambin puede especificarse comoR1INNER JOIN R2 ON <con d_r eu n in >
Nodelo Relacional de datos - 3+
REUNIN NATURAL DE RELACIONES
kEUMIM MATUkAL {nuturuI goin}
-SIN condicin de reunin
SELECT ...
FROM ( R1 NATURALJOIN R2 )
WHERE ...
- EQUIPPEUMIM IMPLCITA
para cada par de ofribufos de iguoI nombre en uno y ofro reIocion
9Cada par de atributos slo se incluye UNA vEZ en el resultado
9Si no coinciden Ios nombres de los atributos
PEMOM8PAP uno de los atributos, con AS en la clausula FROM
SELECT n ombr ep, a pellido, dir eccin
FROM (EMPLEADO
NATURAL J OIN (DEPARTAMENTO AS DEP(n ombr ed, nd, n s s g, fech )))
WHERE n ombr ed=In ves t iga cion ;
Nodelo Relacional de datos - 35
REUNIN EXTERNA DE RELACIONES
kEUMIM EXTEkMA {outer goin}
-Se necesita considerar tuplas con valor NULL en los atributos de reunin
SELECT E.n ombr ep AS n ombr e_emplea do, S.n ombr ep AS n ombr e_s u per vis or
FROM (EMPLEADO E LEFT OUTER JOIN EMPLEADO S ON n s s s u per =n s s );
- INCLUIDAS las tuplas de EMPLEADO E con NULL en n s s s u per
LEFT [OUTER] JOIN Reunin externa izquierda
RIGHT [OUTER] JOIN Reunin externa derecha
FULL [OUTER] JOIN Reunin externa completa o total
Nodelo Relacional de datos - 36
En una consulta SQL...
- Hay un maximo de 6 clausulas
- Slo son obligatorias SELECT y FROM
OkDEM DE ESPECIFICACIM
SELECT <lis t a a t r ibu t os > atributos o funciones que se van a obtener
FROM <lis t a t a bla s > relaciones necesarias (incluso las reunidas)
WHERE <con dicin pa r a t u pla s > condiciones para seleccin de tuplas
GROUP BY <lis t a a t r ibu t os a gr u pa cin > especificacin del agrupamiento de tuplas
HAVING <con dicin pa r a gr u pos > condicin para seleccin de grupos de tuplas
ORDER BY <lis t a a t r ibu t os or den a cin > orden de presentacin del resultado de la consulta
OkDEM DE EVALUACIM
I) FROM (es decir reunion o join de reIociones, si se especifico mos de uno)
Z) WHERE
3) GROUP BY
4) HAVING
b) ORDER BY
EVALUACIN DE CONSULTAS SQLZ
Nodelo Relacional de datos - 37
EVALUACIN DE CONSULTAS SQLZ
FLEXIILIDAD DE LAS COMSULTAS SQL
- muchus formus de especificor Io mismu consuItu
- el usuario elige la tcnica o enfoque mas cmodo
EjempIo especificocion de uno consuIfo con
o) con dicion es de r eu n in en cIousuIo WHERE, o
b) r ela cion es r eu n ida s en Io cIousuIo FROM, o
c) con s u lt a s a n ida da s y eI operodor de comporocion IN
/
Confusin del usuario que fecnico uso7
Algunas tcnicas son mas eficientes que otras
eI usuorio debe deferminor cuoI
- En condiciones ideuIes,,,
- Usuorio: slo deberia preocuparse de especificur Io consuItu correctumente
- SS8D: se ocupa de egecutur la consuItu de manera eficiente
- En la prcticu NO es asi
mejor si eI usuorio sube que fipos de consuIfos son mos y menos cosfosos
Consejo (opfimi;ocion de consuIfos)
ConsuIfos con mnimo unidumiento
y mnimo ordenumiento impIcito
Nodelo Relacional de datos - 38
Orden INSERT
-Aade una tupIu compIetu a una relacin
-Incluye nombre de la relacin y lista de valores para los atributos,
escrifos en igual orden al especificado en la instruccin CREATE TABLE
INSERT INTO EMPLEADO
VALUES ( Rica r do, C, Ma r t n ez, 653298653, 30-DIC-52,
Olmo 98, Cedr os , MX, M, 37000, 987654321, 4 ) ;
-Si se desea poner los valores de los atributos en cualquier orden, hay que
especificar los nombres de los atributos en ese mismo orden
INSERT INTO EMPLEADO
(nombre p, inic , ape lli do, ns s , nd, s alari o, ns s s upe r, dire c c ion, fe c han, s e xo)
VALUES ( Rica r do, C, Ma r t n ez, 653298653, 4, 37000, 987654321
Olmo 98, Cedr os , MX, 30-DIC-52, M );
MODIFICACIN DE DATOS en SQLZ: IMSEkCIM
Nodelo Relacional de datos - 39
IMSEkCIM DE VAkIAS TUPLAS en unu soIu instruccin INSERT
-Tuplas separadas por comas
-Cada tupla se encierra entre parntesis
ESPECIFICACIM EXPLCITA DE ALSUMOS ATkIUTOS (y no todos)
- Omisin de atributos cuyo vuIor se desconoce
-Los atributos no especificados tomaran el vuIor...
Por omisin: valor tomado de su clausula DEFAULT, o bien
NULL: si no se defini clausula DEFAULT para el atributo y permite nulos
Insercion de un nuevo empIeodo deI que soIo se conoce su nombre, opeIIidos y nss
INSERT INTO EMPLEADO (nombre p, ape llido, ns s )
VALUES ( Rica r do, Ma r t n ez, 653298653 ) ;
MODIFICACIN DE DATOS: IMSEkCIM
Nodelo Relacional de datos - +0
MAMEJO Y MAMTEMIMIEMTO DE kESTkICCIOMES DE IMTESkIDAD
9SSD con impIementucin totuI de SQLZ
- El SGBD mane]a e impone toda RI especificada con DDL
9SSD con impIementucin de uIgunus kI (menor compIejidod, moyor eficiencio)
- SSD implementacomprobaciones para hacer cumplir las RI que s maneja
INSERT INTO EMPLEADO (n ombr ep, a pellido, n s s , n d)
VALUES ( Rober t o, Hu er t a s , 2 ) ;
Insercion recho;odo no se incIuye voIor poro eI ofribufo n s s , decIorodo NOT NULL
- Progrumudor asegura la NO violacin de las kI no verificudus por el DBNS
INSERT INTO EMPLEADO (n ombr ep, a pellido, n s s , n d)
VALUES ( Rober t o, Hu er t a s , 980760540, 2 ) ;
Si eI SSD MO munegu Iu Integridud keferenciuI insercion permifido
iiiEI progromodor debe oseguror que esfo MO poselll
Si eI SSD S munegu Iu Integridud keferenciuI insercion recho;odo
no exisfe deporfomenfo con n mer od=2
MODIFICACIN DE DATOS: IMSEkCIM
Nodelo Relacional de datos - +1
IMSEkCIM DE TUPLAS kESULTADO DE UMA COMSULTA
- Curgu de una relacin con informocion sinopfico de la BD
Seo uno reIocion IMFO_DEPTOS voco, en Io que queremos oImocenor Ios nombres de codo
deporfomenfo, su n" de empIeodos y eI soIorio conjunfo de Ios empIeodos deI mismo
INFO_DEPTOS ( n ombr e_dept o, n m_emps , s a l_t ot a l)
INSERT INTO INFO_DEPTOS ( n ombr e_dept o, n m_emps , s a l_t ot a l )
SELECT nombre d, COUNT(*), SUM(s alari o)
FROM DEPARTAMENTO, EMPLEADO
WHERE nme rod=nd
GROUP BY nombre d ;
Ahora es posible hacer SELECT ... FROM INFO_DEPTOS ...
- O]o: la tabla INFO_DEPTOS puede contener informocion MO ocfuoIi;odo
Si se modifico informocion en EMPLEADO y/o DEPARTAMENTO,
Ios cumbios MO se refIegurn en Iu reIucin INFO_DEPTOS
Es necesario crear una relacin de este tipo mediante una VISTA,
para que est siempre contenga los datos mas actuales
MODIFICACIN DE DATOS: IMSEkCIM
Nodelo Relacional de datos - +2
Orden DELETE
-Elimina tupIus compIetus de una unica relacin
-Slo 1 relacin en clusula FROM
-Clausula WHERE para seIeccionur Ius tupIus que eIiminor
- Si no hay WHERE, se eliminan todas las tuplas
- La tabla permonece, pero queda voco
- PkOPASACIM DE ELIMIMACIOMES
- Segun occiones especificodos en codo Pesfriccion de Infegridod PeferencioI
escrifos con DDL en Ios CREATE TABLE
DELETE FROM EMPLEADO WHERE a pellido=Bojr qu ez; elimina 0 tuplas
DELETE FROM EMPLEADO WHERE n s s =123456789 ; elimina 1 tupla
DELETE FROM EMPLEADO
WHERE n d IN ( SELECT n mer od FROM DEPARTAMENTO
WHERE n ombr e=In ves t iga cin ) ; elimina + tuplas
DELETE FROM EMPLEADO ; elimina todas las tuplas
MODIFICACIN DE DATOS: ELIMIMACIM
Nodelo Relacional de datos - +3
Orden UPDATE
-Modifica valores de atributos en unu o ms tupIusde una relacin
-Se modifican tuplas de una nica tabla a la vez
- CIusuIu SET especifica utributos que modificur y nuevos vuIores
- CIusuIu WHERE para seIeccionur tupIus que actualizar
- Si no hay WHERE, se aplica la modificacin a todas las tuplas
- PkOPASACIM DE MODIFICACIOMES
Si cumbiu eI voIor de cIuve cundidutu, esfe combio se propugu o voIores
de cIuve ugenu de fupIos de ofros reIociones, si os se especifico en Ios
PIs PeferencioI en Io definicion de Io fobIo con CREATE TABLE
Poro eI proyecfo nmero I0, combior eI Iugor o 8eIen y eI n" deI deporfomenfo confroIodor oI b.
UPDATE PROYECTO SET lu ga r p = Belen , n md = 5
WHERE n u mer op=10 ;
MODIFICACIN DE DATOS: ACTUALIZACIM
Nodelo Relacional de datos - ++
MODIFICACIM DE VAkIAS TUPLAS A LA VEZ EM UPDATE
Oforgor o fodos Ios empIeodos deI deporfomenfo de Invesfigocion un oumenfo soIorioI deI I07
UPDATE EMPLEADO SET s a la r io = s a la r io*1.1
WHERE n d IN (SELECT n mer od
FROM DEPARTAMENTO
WHERE n ombr ed=In ves t iga cin ) ;
MULL O DEFAULT COMO MUEVO VALOk DE UN ATRIBUTO
UPDATE EMPLEADO SET s a la r io = DEFAULT;
UPDATE EMPLEADO SET n s s s u per = NULL WHERE ... ;
MODIFICACIN DE DATOS: ACTUALIZACIM
Nodelo Relacional de datos - +5
DEFINICIN DE DATOS {DDL} EN SQL2
ESQUEMA de Base de Datos Relacional
- Agrupa relaciones (tablas) y otros elementos, de una mismo opIicocion
- 1
as
versiones de SQL: todas las tablas dentro del un esquema unico y
global a todas las aplicaciones que accedian a la BD
Orden CREATE SCHEMA: sentencia de definicinfcreacin de esquemas
CREATE SCHEMA COMPAA AUTHORIZATION J SILVA ;
8nombre de esquemu: idenfifico el esquema (COMPAA)
8identificudor de uutorizucin: usuariofcuenta propieforio del esquema (J SILVA)
8Conjunfo de definiciones de cudu eIemento contenido en el esquema
- Elementos del Esquema:
TubIus Vistus Dominios uutorizuciones usertos etc,
Nodelo Relacional de datos - +6
DDL: DEFINICIN DE TABLAS
Orden CREATE TABLE
-Define (crea) una relacin: nombre, ofribufos y resfricciones
-Para cada utributo:
nombre, fipo de dofos (dominio) y resfricciones de ofribufo
- kestricciones de tabla
- de cIove condidofo e infegridod de enfidod,
- de infegridod referencioI, o
- restricciones de ofro fipo
CREATE TABLE EMPLEADO (
n ombr ep ...
in ic ...
apellido ...
n s s ...
fech a n ...
dir eccion ...
s exo ...
s alar io ...
n s s s u per ...
n d ...
);
Nodelo Relacional de datos - +7
DDL: DEFINICIN DE TABLAS
IMDICACIM DEL ESQUEMA AL QUE PEkTEMECE UMA kELACIM
-Esquema Explicito
CREATE TABLE COMPAA.EMPLEADO ...
-Esquema Implicito en el contexto
CREATE TABLE EMPLEADO ...
OkDEMAMIEMTO DE ATkIUTOS Y TUPLAS EM SQLZ
-Atributos ordenados tal como aparecen en CREATE TABLE
-Las filas {tuplas) NO estn ordenadas
- Las relaciones creadas con CREATE TABLE son reIociones 8ASE
-El SGBD las almacena fisicamente en algun fichero de la base de datos
Nodelo Relacional de datos - +8
DDL: DEFINICIN DE TABLAS
ESPECIFICACIM DEL TIPO DE DATOS DE UM ATkIUTO
1) Especificar directamente el TIPO DE DATO tras el nombre del atributo
CREATE TABLE EMPLEADO (
n ombr ep VARCHAR(1 5 ) ...
... );
2) Declarar un DOMIMIO y usar su nombre como "tipo de datos
- Facilita combio deI fipo de dofos usado por muchos atributos
- Esquema mas comprensibIe
CREATE DOMAIN NOMBRES AS CHAR(15);
...
CREATE TABLE EMPLEADO (
n ombr ep NOMBRES ...
... );
Nodelo Relacional de datos - +9
DDL: DEFINICIN DE TABLAS
- TIPOS DE DATOS
- Mumricos
Enteros y Reales INTEGER, SMALLINT, FLOAT, REAL, DOUBLE PRECISION
Con formato DECIMAL(p, e ) ( DEC(p,e), NUMERIC(p,e) )
p: precisin, e: escala. valor por omisin escala e = 0
- Cudenu de curucteres
Longitud fija CHAR(n) ( n: n caracteres )
Longitud variable VARCHAR(n) ( n: maximo n caracteres )
- Cudenu de its
Longitud fija BIT(n) (n: n bits) ,
Longitud variable BIT VARYING(n) n: max n bits. valor por omisin n = 1
- DATE (10 posiciones) = YEAR , MONTH , DAY (yyyy-mm-dd)
- TIME (8 posiciones) = HOUR , MINUTE , SECOND (hh:mm:ss)
Slo permitidas fechas y horas vlidas
- TIMESTAMP (marca de tiempo) = DATE, TIME, fracciones de segundo y desplazamiento
respecto al huso horario estandar (WITH TIME ZONE)
- INTERVAL valor relativo para incrfdecrementar el v.a. de fecha, hora o WLPHVWDPS
Se califica con YEAR/ MONTH DAY/ TIME para indicar su naturaleza
Nodelo Relacional de datos - 50
DDL: DEFINICIN DE DOMINIOS
DOMIMIOS DE DATOS
CREATE DOMAIN <nombre domini o> <t ipo de dat os >
[DEFAULT <valor>]
[ <lis t a de de finic in de re s t ric c ione s de dominio> ] ;
- El <t ipo de da t os > ha de ser uno de los proporcionados por el sistema ( built-in)
- VoIor por defecfo (opcional)
- Especifica el valor por omisin para atributos definidos de este dominio
- Sera asignado a cada columna definida sobre el dominio, si no tiene ya su propia DEFAULT
- Definicion de Pesfricciones de Infegridod de Dominio: (opcional)
- Con]unto de RI que se aplican a cada columna definida sobre el dominio
- Cada restriccion puede tener un nombre (clausula CONSTRAINT <n ombr e_RI>)
- E]emplo: enumeracin de posibles valores componentes del dominio
CREATE DOMAIN COLOR VARCHAR(8) DEFAULT s in Color
CONSTRAINT c olor_valido
CHECK (VALUE IN ( rojo, amarillo , azul, ve rde , s inColor ) ) ;
Nodelo Relacional de datos - 51
DDL: DEFINICIN DE TABLAS
ESPECIFICACIM DE kESTkICCIOMES DE ATkIUTO
- OPCIM DE MULO
- Indica si un atributo puede contener NULL
- Restriccin NULL o NOT NULL
CREATE TABLE EMPLEADO (
n ombr ep VARCHAR(15) NOT NULL, ... );
- La restriccin NOT NULL es obIigutoriu puru ofribufos de cIuve primuriu
- VALOP POP OMISIM ( o por defecfo)
- Clausula DEFAULT <valor>
CREATE TABLE EMPLEADO ( ...
s a la r io DECIMAL(10,2) NULL DEFAULT 1 0 0 0 0 0 ... );
- Si un atributo no tiene clausula DEFAULT, su valor por defecto es...
El de su dominio, si su tipo de datos es un dominio y ste incluye DEFAULT
El NULL, en cualquier otro caso, siempre que el atributo permita NULL
Nodelo Relacional de datos - 52
DDL: DEFINICIN DE TABLAS
ESPECIFICACIM DE kESTkICCIOMES DE TALA
- PRIMARY KEY (. . . ) Especifica atributos que componen la CIuve Primuriu
- UNIQUE (. . . ) Indica CIuves AIternutivus
- FOREIGN KEY (. . . ) Especifica CIuves Eternus (Integridad Referencial )
- CHECK (. . . ) Indica condicin que debe cumplir toda tupla de la tabla
CREATE TABLE EMPLEADO (
n ombr ep VARCHAR(15) NOT NULL,
. . . ,
n s s CHAR (9) NOT NULL,
n if CHAR(9) NOT NULL,
. . . ,
n s s s u per CHAR(9) NULL,
n d INTEGER NOT NULL,
PRIMARY KEY ( ns s ),
UNIQUE ( nif ),
CHECK ( ns s s upe r <> ns s ),
FOREIGN KEY (ns s s upe r) REFERENCES EMPLEADO(ns s ),
FOREIGN KEY (nd) REFERENCES DEPARTAMENTO(nume rod)
);
Nodelo Relacional de datos - 53
DDL: DEFINICIN DE TABLAS
ACCIOMES DISPAkADAS POk IMTESkIDAD kEFEkEMCIAL
- PoIficos de monfenimienfo de Io Infegridod PeferencioI
ON DELETE <a ccin > ON UPDATE <a ccin >
donde <a ccin > {NO ACTION, SET NULL, CASCADE, SET DEFAULT }
ESPECIFICACIM DE kESTkICCIOMES DE TALA MOMkADAS
- Es opcional CONSTRAINT <n ombr e_RI> <r es t r iccin CHECK>
- Nombres de restriccin nicos dentro del mismo esquema
- Identifican una restriccin, por si despus debe ser sustituida por otra
CREATE TABLE EMPLEADO (
. . . ,
CONSTRAINT pk_e mple ado PRIMARY KEY ( n s s ),
CONSTRAINT ni f_unic o UNIQUE ( n if ),
CONSTRAINT no_aut o_ je fe CHECK ( n s s s u per <> n s s ),
CONSTRAINT je fe _e mp FOREIGN KEY (n s s s u per ) REFERENCES EMPLEADO(n s s )
ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT de p_e mp FOREIGN KEY (n d) REFERENCES DEPARTAMENTO(n u mer od)
ON DELETE SET NULL ON UPDATE CASCADE
);
Nodelo Relacional de datos - 5+
VISTA - VIEW
- Es una keIucin derivudu de otras relaciones
- Las tubIus o vistus de las que se deriva la vista son sus TubIus use
- Son reIuciones {tubIus} virtuuIes (no necesariamente exisfen en formo fsico)
CREATE VIEW <nombre _vis t a> [ <lis t a_nombre s _at ribut os > ]
AS <c ons ult a_de _de finic i n>
- La consulta de definicin determina el contenido de Iu vistu
CREATE VIEW EMPLEADO_DEPENDIENTE
AS SELECT n ombr ep, n ombr e_depen dien t e, pa r en t es co
FROM EMPLEADO, DEPENDIENTE
WHERE n s s = n s s e;
- Las vistas pueden utilizarse como...
- Necanismo de simpIificocion de consuIfos
- Necanismo de seguridod
Cuructersticu fundumentuI de las vistas
- ActuuIizucin Permunente (responsable: el SGBD)
Lo visfo MO se creu cuondo se define, sino cuondo se consuItu
VISTAS EN SQL2
Nodelo Relacional de datos - 55
- Por defecto la vista heredo Ios nombres de Ios ofribufos...
9... seleccionados desde las tablas base (tambin llamadas "tablas de definicin)
9... siempre que ningun atributo sea el resultado de una funcin u operacin aritmtica
CREATE VIEW VISTA_TRABAJ A_EN
AS SELECT nombre p, ape llido, nombre pr, horas
FROM EMPLEADO, PROYECTO, TRABAJ A_EN
WHERE n s s = n s s e AND n mp = n mer op ;
CREATE VIEW INFO_DEPTO (nombre _de pt o, nm_de _e mps , s al_t ot al)
AS SELECT nombre d, COUNT(*), SUM(s alario)
FROM DEPARTAMENTO, EMPLEADO
WHERE n mer od = n d
GROUP BY n ombr ed ;
- No tienen ninguna limitacin en operaciones de Consulta
ApeIIido y nombre de empIeodos que frobojon en eI proyecfo IIomodo "Pr odu ct oX
SELECT n ombr epr , n ombr ep, a pellido
FROM VISTA_TRABAJ A_EN
WHERE n ombr epr =Pr odu ct oX ;
- Tienen algunas limitaciones en operaciones de Modificacin
ESPECIFICACIN DE VISTAS: CREATE VIEW
Nodelo Relacional de datos - 56
- Es complicada y puede ser ambigua
Nodificar vistus definidus sobre mItipIes tubIus suele dar problemas:
UPDATE VISTA_TRABAJ A_EN
SET n ombr epr = Pr odu ct oY
WHERE a pellido = Silva AND n ombr ep=J os AND n ombr epr = Pr odu ct oX ;
Puede traducirse a DOS posibIes modificuciones de Ios reIuciones buse:
a) UPDATE TRABAJ A_EN
SET n mp = (SELECT n mer op FROM PROYECTO WHERE n ombr epr = Pr odu ct oY)
WHERE n s s e = (SELECT n s s FROM EMPLEADO
WHERE a pellido = Silva AND n ombr ep = J os )
AND n mp = (SELECT n mer op FROM PROYECTO
WHERE n ombr epr = Pr odu ct oX) ;
PeIociono J os Silva con Io fupIo Pr odu ct oY de PROYECTO y no con Io de `Pr odu ct oX
b) UPDATE PROYECTO SET n ombr epr = Pr odu ct oY
WHERE n ombr epr = Pr odu ct oX ;
Mismo efecfo que a) pero modificondo eI n ombr epr en PROYECTO
PEPO modifico fodos Ios fupIos de Io visfo cuyo n ombr epr ~ Pr odu ct oX | / |
MODIFICACIN DE VISTAS EN SQL
Nodelo Relacional de datos - 57
- Algunas modificuciones de vistas curecen de sentido
UPDATE INFO_DEPTO
SET s a l_t ot a l = 100000
WHERE n ombr ed=In ves t iga cin ;
Pues s a l_t ot a l se define como 'sumo de Ios soIorios individuoIes de Ios empIeodos
y muchos ocfuoIi;ociones de Ios fobIos bose sofisforon esfo ocfuoIi;ocion
MO se garantiza que "todu vistu seu uctuuIizubIe"
- Una vista sera actualizable...
9 Si implicara una nicu uctuuIizucin posibIe de las tubIus definicin
9 Si eistierun vurius posibIes uctuuIizuciones pero existiera un
procedimienfo especfico de ocfuoIi;ocion de Ios fobIos bose, tal que...
El usuorio pudiero eIegir el procedimiento, especificondoIo en la definicin de la vista,
o bien
El SS8D pudiero eIegir el procedimiento, segun la ocfuoIi;ocion mos probobIe
MODIFICACIN DE VISTAS EN SQL
Nodelo Relacional de datos - 58
En general...
Uno visfo con UMA nicu tubIu de definicin
Actualizable si los atributos contienen la clave primaria u otra candidata de
la relacin base (se esfobIece uno fronsformocion de codo fupIo de Io visfo o
uno nico fupIo bose)
Uno visfo definido sobre MLTIPLES tubIus medionfe reuniones
NO es actualizable
Uno visfo definido medionfe ASkUPACIM y funciones ASkESADAS
NO es actualizable
OPCIM DE VEkIFICACIM DE VISTAS
CIusuIu WITH CHECK OPTION
- Al final de la definicin de toda visfo que se voyo o ufiIi;or poro modificocion
- Permite al sistema:
-Comprobar si la vista es actualizable, y
-Planear una estrategia de e]ecucin de actualizaciones
MODIFICACIN DE VISTAS EN SQL
Nodelo Relacional de datos - 59
Dos enfoques:
1. ESTRATEGIA DE ACTUALIZACIM DE COMSULTAS DE DEFIMICIM
- ConsuItu sobre Io vistu se froduce o uno ConsuItu sobre TubIus Definicin
- Lo visfo se reIIenu de tupIus o porfir de Io ejecucion de Io consuItu
- Desventa]a: poco eficiente cuando...
- la vista se define con consulta compleja, con tiempo de e]ecuci n apreciable,
- y se aplican muchas consultas sobre la vista en poco tiempo
2. ESTRATEGIA DE MATEkIALIZACIM DE VISTAS
- 1" ConsuItu sobre Io visfo creucin de TubIu TemporuI Fsicu
- Se conservo la tabla para posferiores consuIfos sobre la visfo
- Necesaria esfrofegio poro ocfuoIi;ocion incremenfoI de la Tabla Temporal fros
cualquier modificocion de fobIos bose ( actualizacin permanente)
- Si no se hace referencia a la vista tras un tiempo, eI sisfemo Io eIiminoro
(y la recalculara en una consulta futura)
IMPLEMENTACIN DE VISTAS EN SQL
Nodelo Relacional de datos - 60
DDL: ALTERACIN DE TABLAS
MODIFICACIOM DE LA ESTkUCTUkA DE LAS
kELACIOMES ASE DEL ESQUEMA
PosibiIidodes
- Adicin y Eliminacin de Atributos (columnas)
- Nodificacin de la Definicin de Atributos
- Adicin y Eliminacin de Restricciones de Tabla
ALTER TABLE <nombre _re lac i on> . . . ;
Nodelo Relacional de datos - 61
DDL: ALTERACIN DE TABLAS
ADICIM DE ATkIUTO {COLUMMA}
ALTER TABLE <nombre _re lac ion> ADD <de finic in_at ribut o> ;
Ahodir o Io reIocion EMPLEADO deI esquemo COMPAA, un ofribufo poro confener eI
puesfo de frobojo
ALTER TABLE COMPAA.EMPLEADO ADD pu es t o VARCHAR(12);
- Todas las tuplas de EMPLEADO tendran pu es t o a NULL
NO esta permitida la restricci n NOT NULL en la definici n del nuevo ofribufo
(si es necesorio, podro esfobIecerse despues)
- Para introducir un valor para pue s t oen cada tupla existente en EMPLEADO:
(a) Especificar la clausula DEFAULT al anadir el atributo:
ALTER TABLE EMPLEADO ADD pu es t o VARCHAR(12) DEFAULT apre ndiz;
(b) Utilizar despus una orden UPDATE VHYHUi
Nodelo Relacional de datos - 62
DDL: ALTERACIN DE TABLAS
ELIMIMACIM DE UM ATkIUTO {COLUMMA}
ALTER TABLE <nombre _re lac ion> DROP <nombre _at ribut o> <opc ion> ;
<opc ion> puede ser...
CASCADE: elimina el atributo y toda restriccin o vista que le haga referencia
RESTRICT: slo elimina el atributo si ninguna vista ni restriccin le referencia
EIiminocion deI ofribufo dir eccin de Io reIocion EMPLEADO deI esquemo COMPAA
ALTER TABLE COMPAA.EMPLEADO DROP dir eccin CASCADE;
Nodelo Relacional de datos - 63
DDL: ALTERACIN DE TABLAS
MODIFICACIOM DE LA DEFIMICIM DE UM ATkIUTO {COLUMMA}
ALTER TABLE <nombre _re lac ion> ALTER <nombre _at ribut o> <ac c ion> ;
Modificucin de Io cIousuIo por omision
- Eliminacin de la clausula DEFAULT existente
ALTER TABLE COMPAA.DEPARTAMENTO ALTER n s s gt e DROP DEFAULT;
- Definicin de una nuevacl u s u la por omis in
ALTER TABLE DEPARTAMENTO ALTER n s s gt e SET DEFAULT 1 2 3 4 5 6 7 8 9 ;
Nodelo Relacional de datos - 6+
DDL: ALTERACIN DE TABLAS
-La restriccin de tabla que se desea modificar debe tener un nombre!!
ELIMIMACIM DE UMA kESTkICCIM DE TALA
ALTER TABLE <nom_re lac ion> DROP CONSTRAINT <nombre _RI> <opc i on>;
ALTER TABLE COMPAA.EMPLEADO DROP CONSTRAINT jefe_emp CASCADE;
ADICIM DE UMA kESTkICCIM DE TALA
ALTER TABLE <nom_re lac ion> ADD CONSTRAINT <nombre _RI> <de fin_RI>;
ALTER TABLE EMPLEADO ADD CONSTRAINT s alar io_ok CHECK (s a la r io > 0);
Nodelo Relacional de datos - 65
DDL: ALTERACIN DE DOMINIOS
Orden ALTER DOMAIN <nombre _dominio> <ac c in>;
- EIiminocion y PeempIo;o de uno definicion por defecfo
ALTER DOMAIN <n om_domin io> DROP DEFAULT;
ALTER DOMAIN <n om_domin io> SET DEFAULT <va lor >;
- EIiminocion y/o especificocion de nuevos resfricciones de dominio
ALTER DOMAIN <n om_domin io> DROP CONSTRAINT <n om_RI_domin io>;
ALTER DOMAIN <n om_domin io>
ADD [CONSTRAINT <n om_RI>] <r es t r iccin _CHECK>;
Nodelo Relacional de datos - 66
DDL: ELIMINACIN DE ELEMENTOS DEL ESQUEMA
ELIMIMACIM DE UMA VISTA. Orden DROP VIEW
-Destruye una relacin derivada, ]unto con su definicin en el catalogo
DROP VIEW <nombre _vis t a> ;
ELIMIMACIM DE UM DOMIMIO. Orden DROP DOMAIN
-Destruye un dominio de datos, ]unto con su definicin en el catalogo
DROP DOMAIN <nombre _domini o> <opc in> ;
<opc ion> puede ser...
RESTRICT: slo destruye el dominio si no hoy ningn ofribufo definido sobre eI
CASCADE: se destruye el dominio y, todo ofribufo definido sobre eI,
poso o fener eI t ipo de da t os sobre eI que se hobo definido eI dominio
Nodelo Relacional de datos - 67
DDL: ELIMINACIN DE ELEMENTOS DEL ESQUEMA
ELIMIMACIM DE UMA kELACIM. Orden DROP TABLE
-Destruye una relacin base ]unto con su definicin en el catalogo
DROP TABLE <nombre _re lac in> <opc ion>;
<opc ion> puede ser...
RESTRICT: Destruye la tabla soIo si no se Ie hoce referencio desde ninguno
ofro reIocion (cIove ojeno), ni es fobIo bose de uno visfo
CASCADE: Elimina la tabla ]unto con resfricciones y visfos que la referencian
ELIMIMACIM DE UM ESQUEMA. Orden DROP SCHEMA
-Destruye un esquema de BD ]unto con su definicin en el catalogo
DROP SCHEMA <nombre _e s que ma> <opc ion>;
<opc ion> puede ser...
RESTRICT: Destruye el esquema soIo si no confiene ningn eIemenfo
CASCADE: Elimina el esquemo, y los fobIos, dominios y demos eIemenfos
contenidos en el esquema
Nodelo Relacional de datos - 68
DDL: CATLOGO RELACIONAL
CATLOSO de una Base de Datos Relacional (nuevo concepfo en SQLZ)
- CoIeccin nombrudu de esquemus en un entorno SQL
8Existe un esquema especial, INFORMATION_SCHEMA, con
datos sobre la definicin de todos los elementos de todos los
esquemas existentes en el catlogo
- Slo pueden definirse Restricciones de Integridad (RI Referencial, etc.)
entre relaciones que existan en esquemas del mismo catlogo
- Es posible compartir elementos (definiciones de dominio, etc.) entre
esquemas del mismo catlogo

You might also like