Está en la página 1de 75

Tema 5.

SQL El estndar de las Bases de Datos Relacionales


Elmasri/Navathe 07

Definicin de datos y restricciones (CREATE TABLE), y cambios en el esquema (DROP y ALTER) Consultas (SELECT...FROM...WHERE) restringidas * Actualizacin (INSERT, DELETE, UPDATE)

restringidas * En este curso NO se cubren todos los aspectos de SELECT. No se estudian, por ejemplo, SELECT anidados o la clusula HAVING (consultar el temario de la asignatura). En el examen NO se admiten soluciones que incluyan aspectos de SQL no cubiertos en la asignatura.

FBD Tema 5 Dpto. LSI - Donostia

SQL
(Structured Query Language)

lgebra relacional orden de las operaciones SQL: lenguaje declarativo Se indica cul es el resultado esperado Permite que el SGBD seleccione las operaciones y el orden ms adecuados para obtener el resultado: optimizacin SGBD comerciales son variantes de SQL Estndares SQL: SQL1 1986, SQL2 1992, SQL3 (extiende SQL2 con conceptos de BD y OO) SQL: Lenguaje de Definicin de Datos (LDD) Lenguaje de Manipulacin de Datos (LMD): consulta y actuali

FBD Tema 5 Dpto. LSI - Donostia

Esquema y catlogo en SQL2


Esquema de BD: el trmino se incorpor en SQL2

CREATE SCHEMA Nombre [AUTHORIZATION Usuario];


Cuenta propietaria del esquema

Catlogo del SGBD: coleccin de esquemas en un entorno SQL Catlogo del SGBD
Esquema 1
Tablas
Restricciones

Esquema 2

INFORMATION _SCHEMA

Elementos de un esquema

Vistas Dominios
Autorizaciones

...

Esquema especial que da a los usuarios autorizados informacin de todos los esquemas del catlogo del SGBD

RI: slo entre relaciones del mismo catlogo del SGBD Esquemas del catlogo del SGBD: pueden compartir elementos (por ejemplo dominios)
FBD Tema 5 Dpto. LSI - Donostia 3

Instruccin CREATE TABLE


CREATE TABLE DEPARTAMENTO ( NOMBRED VARCHAR(15) NOT NULL, NUMEROD INT NOT NULL, NSS_JEFE CHAR(9) NOT NULL, FECHA_INIC_JEFE DATE, PRIMARY KEY(NUMEROD), UNIQUE(NOMBRED), FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS) );

CREATE TABLE DEPARTAMENTO ( NOMBRED VARCHAR(15) NOT NULL, NUMEROD INT NOT NULL DEFAULT 888665555,

FBD Tema 5 Dpto. LSI - Donostia

Tipos de datos en SQL2


Enteros de diversos tamaos: INTEGER / INT SMALLINT Reales: FLOAT REAL DOUBLE PRECISION Nmeros con formato: NUMERIC(i,j) DECIMAL(i,j) / DEC(i,j) i dgitos enteros y j dgitos decimales Por defecto: i segn la implementacin, j=0 Cadena de caracteres de longitud fija: CHAR(n) CHARACTER(n) Cadena de caracteres de longitud variable: CHARACTER VARYING(n) VARCHAR(n) CHAR VARYING(n) n=mximo definido. Por defecto n=1 Cadena de bits de longitud fija: BIT(n) n = nmero de bits Por defecto n=1 Cadena de bits de longitud variable: BIT VARYING(n) n=mximo definido. Por defecto n=1 Fecha: DATE Slo admite fechas vlidas Generalmente YYYY-MMDD Componentes: YEAR, MONTH, DAY Hora: TIME(i) Slo admite horas vlidas Normalmente HH-MM-SS Componentes: HOUR, MINUTE, SECOND i = posiciones de fracciones de sg. Hora con desplaza miento de huso horario: TIME WITH TIME ZONE +13:00 a -12:59 Sin WITH TIME ZONE: huso local de la sesin Marca de tiempo: TIMESTAMP [WITH TIME ZONE] Componentes: DATE, TIME y mnimo 6 posiciones de fracciones de sg. Intervalo de tiempo: INTERVAL valor relativo (de tiempo) para incrementar o decrementar a un valor de fecha, hora o marca de tiempo Se pueden calificar con YEAR/MONTH o DAY/TIME (unidad mayor/unidad menor)
5

FBD Tema 5 Dpto. LSI - Donostia

Dominios en SQL2
Un dominio es un tipo de datos definido por el usuario
CREATE DOMAIN TIPO_NSS AS CHAR(9);

En CREATE TABLE se pueden usar para definir atributos:


CREATE TABLE EMPLEADO ( NSS TIPO_NSS NOT NULL, ...

DEFAULT: CREATE DOMAIN TIPO_NSS AS CHAR(9) DEFAULT 987654321;

Valor por defecto de los atributos declarados con ese dominio si no se especifica DEFAULT el valor por defecto es NULL

FBD Tema 5 Dpto. LSI - Donostia

CREATE TABLE: especificacin de restricciones y valores por omisin


Definicin de atributos:
NOT NULL: DEFAULT

no se permite que el atributo tome valor nulo

un-valor: se indica qu valor tomar el atributo si no se le asigna nada. Si no se indica DEFAULT, el valor por defecto es el valor nulo

Especificacin de restricciones (tras las definiciones de atributo):


PRIMARY KEY: clave primaria UNIQUE: clave candidata FOREIGN KEY: clave extranjera

Se puede calificar con: ON DELETE: en caso de borrarse la tupla a la que se hace referencia con un valor de la clave extranjera ON UPDATE: en caso de modificarse el valor de clave primaria al que se hace referencia con el valor de clave extranjera
CREATE TABLE DEPARTAMENTO ( NOMBRED VARCHAR(15) NOT NULL, NUMEROD INT NOT NULL DEFAULT 1, NSS_JEFE CHAR(9) NOT NULL, FECHA_INIC_JEFE DATE, PRIMARY KEY(NUMEROD), UNIQUE(NOMBRED), FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS) ON UPDATE CASCADE ON DELETE SET NULL ); FBD Tema 5 Dpto. LSI - Donostia 7

CREATE TABLE: especificacin de restricciones y valores por omisin (2)


FOREIGN KEY (clave extranjera):

Acciones posibles (en ON DELETE / ON UPDATE): SET NULL: el valor de clave extranjera en cuestin se sustituye por el valor nulo SET DEFAULT: el valor de clave extranjera en cuestin se sustituye por el valor por defecto del atributo clave extranjera CASCADE: en caso de ON DELETE se borran las tuplas que hacen referencia a la tupla que desaparece. En caso de ON UPDATE se aplica la misma modificacin en las claves extranjeras que la realizada sobre la clave primaria a la que hacen referencia. CASCADE es adecuada para: vnculos (TRABAJA_EN) atributos multivaluados (LOCALIZACIONES_DEPT) tipos de entidad dbiles (DEPENDIENTE) RESTRICT (cuando NO se pone ON DELETE / ON UPDATE): impide el borrado (si falta ON DELETE) o la modificacin (si falta ON UPDATE) de cualquier tupla referenciada desde un valor de la clave extranjera en cuestin.
CREATE TABLE DEPARTAMENTO ( NOMBRED VARCHAR(15) NOT NULL, NUMEROD INT NOT NULL DEFAULT 1, NSS_JEFE CHAR(9) NOT NULL, FECHA_INIC_JEFE DATE, PRIMARY KEY(NUMEROD), UNIQUE(NOMBRED), FOREIGN KEY(NSS_JEFE) REFERENCES EMPLEADO(NSS) ON UPDATE CASCADE ON DELETE SET NULL ); FBD Tema 5 Dpto. LSI - Donostia 8

Borrar esquemas (DROP SCHEMA) y borrar tablas (DROP TABLE)


Borrar un esquema completo:
DROP SCHEMA EMPRESA CASCADE RESTRICT:borra el esquema slo si NO contiene

ningn elemento
CASCADE

FBD Tema 5 Dpto. LSI - Donostia

Evolucin del esquema: columnas


(ALTER TABLE)

Aadir columnas:
ALTER TABLE EMPRESA.EMPLEADO ADD PUESTO VARCHAR(12);

En las tuplas existentes se asignan valores NULL. Alternativas: definir DEFAULT o introducir valores con
la orden UPDATE (se estudiar ms adelante) NOT NULL no est permitido

Borrar columnas:
ALTER TABLE EMPRESA.EMPLEADO DROP DIRECCIN CASCADE; CASCADE

borra tambin las restricciones (constraints) y vistas que hagan referencia a la columna (DIRECCIN) slo borra la columna (DIRECCIN) si no hay restricciones ni vistas que le hagan referencia
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER NSS_JEFE DROP DEFAULT; ALTER TABLE EMPRESA.DEPARTAMENTO ALTER NSS_JEFE SET DEFAULT 333445555;

RESTRICT

Modificar la definicin de columnas:

Elimina la definicin DEFAULT 888665555 Inserta una nueva definicin de DEFAULT para el atributo NSS_JEFE
FBD Tema 5 Dpto. LSI - Donostia 10

Evolucin del esquema: restricciones (constraints)


(ALTER TABLE)

Borrar restricciones:
ALTER TABLE EMPRESA.EMPLEADO DROP CONSTRAINT CLE_SUPERV_EMP;

Es preciso haberle dado un nombre con CONSTRAINT en la definicin (por ejemplo en CREATE TABLE) Aadir restricciones:
ALTER TABLE EMPRESA.EMPLEADO ADD CONSTRAINT CLE_SUPERV_EMP
FOREIGN KEY (NSS_SUPERV) REFERENCES EMPLEADO(NSS) ON DELETE SET NULL ON UPDATE CASCADE;

FBD Tema 5 Dpto. LSI - Donostia

11

OPERACIONES DE ACTUALIZACIN INSERT


A1: INSERT INTO EMPLEADO VALUES a6IZACIN

FBD Tema 5 Dpto. LSI - Donostia

12

OPERACIONES DE ACTUALIZACIN INSERT (2)


A3A: CREATE TABLE INFO_DEPTOS ( NOMBRE_DEPTO VARCHAR(15), NM_DE_EMPS INTEGER, SAL_TOTAL INTEGER);

A3B: INSERT INTO INFO_DEPTOS (NOMBRE_DEPTO, NM_DE_EMPS, SAL_TOTAL) SELECT NOMBRED, COUNT (*), SUM(SALARIO) FROM DEPARTAMENTO INNER JOIN EMPLEADO ON NMEROD=ND GROUP BY NOMBRED;

Inserta varias tuplas (el resultado de la consulta) Utilidad: tabla temporal donde realizar consultas Sus datos pueden perder actualidad Alternativa sin este problema: vista

FBD Tema 5 Dpto. LSI - Donostia

13

OPERACIONES DE ACTUALIZACIN DELETE


A4A: DELETE FROM EMPLEADO WHERE APELLIDO=Brown

Una sola tabla WHERE: seleccin de tuplas a eliminar El borrado se puede propagar (RI referencial)

A4B: DELETE FROM EMPLEADO WHERE NSS=123456789

A4C: DELETE FROM EMPLEADO WHERE ND IN (SELECT NMEROD FROM DEPARTAMENTO WHERE NOMBRED=Investigacin) A4D: DELETE FROM EMPLEADO

Sin WHERE se borran todas las tuplas (quedara la tabla vaca) Usando DROP TABLE se hubiera eliminado adems la definicin de la tabla

FBD Tema 5 Dpto. LSI - Donostia

14

FBD Tema 5 Dpto. LSI - Donostia

15

Consultas bsicas
SELECT columnas FROM tablas [WHERE condicin]
El Eltemario temariode deFBD FBDNO NOcubre cubre todos los aspectos de SELECT .. todos los aspectos de SELECT En NOestudiaremos estudiaremos Enparticular particularNO SELECT SELECTanidados anidados

Fecha de nacimiento y direccin de John Smith


NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN SEXO SALARIO NSS_SUPERV

FECHA_NCTO, DIRECCIN (1) C0: SELECT FECHA_NCTO, DIRECCIN FROM EMPLEADO WHERE NOMBRE=John AND (1) = NOMBRE=John Y APELLIDO=Smith(EMPLEADO) APELLIDO=Smith

Secuencia - Condiciones en WHERE: {=, <>, <, >, <=, >=}, AND, OR, NOT

El resultado de una consulta SQL puede contener ...

tuplas repetidas

FBD Tema 5 Dpto. LSI - Donostia

16

Consultas bsicas (2)


Nombre y direccin de los empleados del departamento de Investigacin
EMPLEADO NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

...

...
DEPARTAMENTO

SEXO SALARIO NSS_SUPERV ND FECHA_INIC_JEFE

NOMBRED NMEROD NSS_JEFE

NOMBRE, APELLIDO, DIRECCIN (2) C1: SELECT NOMBRE, APELLIDO, DIRECCIN FROM EMPLEADO, DEPARTAMENTO WHERE NOMBRED=Investigacin AND NMEROD=ND (2) = NOMBRED=Investigacin (1) (1) = DEPARTAMENTO ||NME-

ROD=ND EMPLEADO

Secuencia: || - -
WHERE:condiciones

de y ||

FBD Tema 5 Dpto. LSI - Donostia

17

Consultas bsicas (3)


N de proyecto, n de departamento que lo controla, apellido, direccin y fecha de nacimiento del jefe del departamento, de todos los proyectos realizados en Stafford
EMPLEADO NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN DEPARTAMENTO NOMBRED NMEROD NSS_JEFE PROYECTO NOMBREP NMEROP LOCALIZACINP NMD FECHA_INIC_JEFE

...

C2: SELECT NMEROP, NMD , APELLIDO, DIRECCIN, FECHA_NCTO FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NMD=NMEROD AND NSS_JEFE=NSS AND LOCALIZACINP=Stafford

FBD Tema 5 Dpto. LSI - Donostia

18

3s 0 Rucn77LEADO

Calificar atributos
Nombre, apellido y direccin de los empleados del departamento de investigacin

C1A:SELECT EMPLEADO.NOMBRE, APELLIDO, DIRECCIN FROM EMPLEADO, DEPARTAMENTO WHERE DEPARTAMENTO.NOMBRE = Investigacin AND DEPARTAMENTO.NMEROD=EMPLEADO.NMEROD

EMPLEADO NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

...

...
DEPARTAMENTO

SEXO SALARIO NSS_SUPERV NMEROD

NOMBRE NMEROD NSS_JEFE

FECHA_INIC_JEFE

Con EMPLEADO.NOMBRE se distingue el atributo


NOMBRE NOMBRE

de la tabla EMPLEADO del atributo de la tabla DEPARTAMENTO

FBD Tema 5 Dpto. LSI - Donostia

19

Alias
Nombre y apellido de cada empleado junto al nombre y apellido de su supervisor

EMPLEADO S NOMBRE INIC APELLIDO NSS FECHA_NCTO EMPLEADO E NOMBRE INIC APELLIDO NSS FECHA_NCTO

... ...

NSS_SUPERV ND

NSS_SUPERV ND

C8: SELECT E.NOMBRE, E.APELLIDO, S.NOMBRE, S.APELLIDO Uso de alias FROM EMPLEADO E, EMPLEADO S WHERE E.NSS_SUPERV=S.NSS Declaracin de alias
Uso de alias

Admite varias referencias a una misma tabla (til para consultas recursivas de un nivel) E y S representan dos copias diferentes de la tabla EMPLEADO, pero no hay ms que una copia de EMPLEADO en la BD

Para cambiar los nombres de atributo:


FROM EMPLEADO AS E(NP, IN, AP, NSS, FN, DIR, SEX, SAL, NSSS, ND), ...

Se pueden usar alias aunque no haya varias referencias a una misma tabla para manejar nombres ms cortos Por ejemplo, C1A se puede escribir:

C1B:SELECT E.NOMBRE, E.APELLIDO, E.DIRECCIN FROM EMPLEADO E, DEPARTAMENTO D WHERE D.NOMBRE = Investigacin AND D.NMEROD=E.NMEROD
FBD Tema 5 Dpto. LSI - Donostia 20

Omisin de WHERE
Indica seleccin de tuplas incondicional Equivale a WHERE TRUE Producto cartesiano: sin WHERE y ms de una relacin en FROM NSS de todos los empleados:

C9: SELECT NSS FROM EMPLEADO

Combinaciones posibles de NSS de empleados con nombres de departamento:

C10: SELECT NSS, NOMBRED FROM EMPLEADO , DEPARTAMENTO

Es importante especificar todas las condiciones de y || en WHERE ya que el resultado puede ser una tabla incorrecta y de gran tamao

FBD Tema 5 Dpto. LSI - Donostia

21

SELECT *
Selecciona todos los atributos de las tablas de FROM

C1C:SELECT * FROM EMPLEADO WHERE ND=5 C1D:SELECT * FROM EMPLEADO, DEPARTAMENTO WHERE NOMBRED=Investigacin AND ND=NMEROD C10A:SELECT * FROM EMPLEADO, DEPARTAMENTO

Tambin se puede usar en SELECT la calificacin de atributos con *. Ejemplo: EMPLEADO.*

FBD Tema 5 Dpto. LSI - Donostia

22

UNION y UNION ALL INTERSECT e INTERSECT ALL EXCEPT y EXCEPT ALL


En SQL existen las operaciones UNION (), INTERSECT () y EXCEPT (resta). Por defecto las tuplas repetidas se eliminan del resultado Usando UNION ALL se conservan las repeticiones Se exige compatibilidad de unin (ver en tema anterior) Nmeros de proyecto donde participa Smith como trabajador o como jefe del departamento controlador:

C4: SELECT NUMEROP FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NMD=NMEROD AND NSS_JEFE=NSS AND APELLIDO=Smith UNION SELECT NP FROM TRABAJA_EN, EMPLEADO WHERE NSSE=NSS AND APELLIDO=Smith

FBD Tema 5 Dpto. LSI - Donostia

24

Comparar subcadenas
(LIKE en WHERE)

Empleados que viven en Houston, Texas:

C12: SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE DIRECCIN LIKE %Houston, TX%

Compara parte de una cadena de caracteres (DIRECCIN) % sustituye a un n arbitrario de caracteres _ sustituye a un solo carcter

Empleados que nacieron en la dcada de 1950:

C12A: SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE FECHA_NCTO LIKE 195_ _ _ _ _ _ _

FBD Tema 5 Dpto. LSI - Donostia

25

Operaciones aritmticas: +, -, *, / y operacin de concatenacin: ||


Nombre y salario de los empleados que trabajan en ProductoX tras aumentarles el sueldo un 10% :

C13: SELECT NOMBRE, APELLIDO, 1.1*SALARIO FROM EMPLEADO, TRABAJA_EN, PROYECTO WHERE NSS=NSSE AND NP=NMEROP AND NOMBREP=ProductoX

+, -,* y / son operadores aritmticos || concatena cadenas de caracteres. Ejemplo:


SELECT Nombre= || NOMBRE

+, - tambin sirven para sumar/restar a una fecha, hora o marca de tiempo, un intervalo compatible Se puede calcular un intervalo como la diferencia entre fechas, horas o marcas de tiempo

Qu produce 1.1 * SALARIO cuando SALARIO vale NULL?

FBD Tema 5 Dpto. LSI - Donostia

26

Ordenacin de tuplas
(ORDER BY)

Empleados y proyectos donde trabajan, ordenados por departamento y, dentro de cada departamento, ordenados alfabticamente por apellido y nombre :

C15: SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, PROYECTO WHERE NMEROD=ND AND NSS=NSSE AND NP=NMEROP ORDER BY NOMBRED, APELLIDO, NOMBRE

Por defecto, el orden es ascendente DESC indica orden descendente ASC indica orden ascendente

ORDER BY

NOMBRED DESC, APELLIDO ASC, NOMBRE ASC

FBD Tema 5 Dpto. LSI - Donostia

27

Operador BETWEEN y conjuntos explcitos de valores


Operador BETWEEN: Informacin de los empleados del departamento 5 cuyo salario est entre 30.000 y 40.000
C14: SELECT * FROM EMPLEADO WHERE (SALARIO BETWEEN 30000 AND 40000) AND ND=5

La condicin de WHERE es equivalente a:


SALARIO >= 30000 AND SALARIO <= 40000 AND ND=5

Conjuntos explcitos de valores: NSS de los empleados que trabajan en los proyectos 1, 2 o 3
C17: SELECT DISTINCT NSSE FROM TRABAJA_EN WHERE NP IN (1,2,3)

El conjunto explcito se encierra entre parntesis

FBD Tema 5 Dpto. LSI - Donostia

28

IS NULL e IS NOT NULL


Nombre y apellido de empleados sin supervisores

C18: SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE NSS_SUPERV IS NULL

En lugar de = y se usa IS e IS NOT SQL considera el valor nulo de diferente forma Las tuplas con valores nulos en el atributo de reunin no se incluyen en el resultado (salvo en reunin externa) Si pusiera WHERE NSS_SUPERV = NULL Para las filas con NSS_SUPERV nulo se estara comparando si NULL = NULL Esta comparacin NO devuelve cierto Tampoco devuelve falso La comparacin devuelve NULL (UNKNOWN)
Una condicin puede NO verificarse por FALSE o por NULL

Cualquier cosa operada con NULL devuelve NULL


(UNKNOWN)

FBD Tema 5 Dpto. LSI - Donostia

29

Renombrar atributos del resultado con AS


C8A: SELECT E.APELLIDO AS NOMBRE_EMPLEADO, S.APELLIDO AS NOMBRE_SUPERVISOR FROM EMPLEADO AS E, EMPLEADO AS S WHERE E.NSS_SUPERV = S.NSS

Cambia el nombre de cualquier columna (atributo) que aparezca en el resultado Antes hemos visto que la construccin AS tambin sirve para declarar alias de tablas:
FROM FROM EMPLEADO E, ... EMPLEADO AS E, ... SQL1 SQL2 SQL2

FROM EMPLEADO AS E(NP, IN, AP, NSS, FN, DIR, SEX, SAL, NSSS, ND), ...

FBD Tema 5 Dpto. LSI - Donostia

30

Tablas combinadas
(INNER y NATURAL JOIN en FROM)

Nombre y direccin de los empleados del departamento de Investigacin

C1: SELECT NOMBRE, APELLIDO, DIRECCIN FROM

FBD Tema 5 Dpto. LSI - Donostia

31

Tablas combinadas (2)


(INNER y NATURAL JOIN en FROM)

Uso de NATURAL JOIN:


C1B: SELECT NOMBRE, APELLIDO, DIRECCIN FROM (EMPLEADO NATURAL JOIN (DEPARTAMENTO AS DEPTO (NOMBRED, ND, NSSG, FECHAIG))) WHERE NOMBRED=Investigacin

Renombra DEPARTAMENTO.NMEROD por ND condicin de reunin implcita: EMPLEADO.ND = DEPARTAMENTO.ND Anidamiento de INNER y de NATURAL JOIN:
C2: SELECT NMERO, NMD, APELLIDO, DIRECCIN, FECHA_NCTO FROM PROYECTO, DEPARTAMENTO, EMPLEADO WHERE NMD=NMEROD AND NSS_JEFE=NSS AND LOCALIZACINP=Stafford C2A:SELECT NMEROP, NMD, APELLIDO, DIRECCIN FECHA_NCTO FROM (PROYECTO INNER JOIN DEPARTAMENTO ON NMD=NMEROD) INNER JOIN EMPLEADO ON NSS_JEFE=NSS WHERE LOCALIZACINP=Stafford

FBD Tema 5 Dpto. LSI - Donostia

32

Funciones agregadas y de agrupacin


COUNT (cuenta), SUM (suma), MAX (mximo), MIN (mnimo), AVG (media)

El argumento de una funcin agregada puede ser una expresin: AVG(1.1*SALARIO) MAX y MIN se pueden aplicar a atributos NO numricos (con orden total en el dominio) Suma de los salarios de todos los empleados, junto a los salarios mximo, mnimo y medio:

C19: SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO), AVG(SALARIO) FROM EMPLEADO

EMPLEADO NOMBREP John Franklin Ramesh Joyce Alicia Jennifer Ahmad James SALARIO NULL 15.000 10.000 10.000 10.000 20.000 20.000 20.000 ND 5 5 5 5 4 4 4 1

DEPARTAMENTO NOMBRED NMEROD Investigacin Administracin Direccin 5 4 1

...

...

...

C19:

SUM(SA- MAX(SA- MIN(SA- AVG(SALLARIO) LARIO) LARIO) ARIO)

105.000 20.000 10.000 15.000

FBD Tema 5 Dpto. LSI - Donostia

33

Funciones agregadas y de agrupacin (2)


Suma de los salarios de los empleados del departamento de Investigacin, junto a los salarios mximo, mnimo y medio del mismo:

C20: SELECT SUM(SALARIO), MAX(SALARIO), MIN(SALARIO), AVG(SALARIO) FROM EMPLEADO INNER JOIN DEPARTAMENTO ON ND=NMEROD WHERE NOMBRED=Investigacin

Cuntos empleados hay en la compaa y cuntos en el departamento Investigacin:

C21: SELECT COUNT(*) FROM EMPLEADO C22: SELECT COUNT(*) FROM EMPLEADO INNER JOIN DEPARTAMENTO ON ND=NMEROD WHERE NOMBRED=Investigacin
EMPLEADO NOMBREP Franklin

C20:

SUM(SA- MAX(SA- MIN(SA- AVG(SALLARIO) LARIO) LARIO) ARIO)

35.000 15.000 10.000 11.666


35.000 // 33 35.000

FBD Tema 5 Dpto. LSI - Donostia

34

Funciones agregadas y de agrupacin (3)


Cuntos valores de salario diferentes hay:
NO cuenta

C23: SELECT COUNT(DISTINCT SALARIO) FROM EMPLEADO

los valores nulos

Cuntos valores de salario hay (con repeticiones):


Cuenta las filas con salario NO nulo

C23: SELECT COUNT(SALARIO) FROM EMPLEADO

Cuntos empleados hay:


Cuenta todas las filas de la tabla

C23: SELECT COUNT(*) FROM EMPLEADO

EMPLEADO NOMBREP John Franklin Ramesh Joyce Alicia Jennifer Ahmad James SALARIO NULL 15.000 10.000 10.000 10.000 20.000 20.000 20.000 ND 5 NULL 5 5 4 4 4 1

C23:
COUNT(DISTINCT SALARIO)

3 C23:
COUNT( SALARIO)

...

...

7 C23:
COUNT( *)

Qu ocurre cuando todos los salarios valen NULL? Qu ocurre cuando la tabla est vaca?
FBD Tema 5 Dpto. LSI - Donostia

35

Atributos de agrupacin: GROUP BY


Obtener cada nmero de departamento junto a su nmero de empleados y salario medio:

C24: SELECT ND, COUNT(*), AVG(SALARIO) FROM EMPLEADO GROUP BY ND

En GROUP BY est el/los atributo/s de agrupacin NO confundir GROUP BY y ORDER BY (que ordena) Todos los atributos de SELECT deben estar en
GROUP BY

Los atributos de GROUP BY no es obligatorio que estn en SELECT Se suelen poner en SELECT algunos/todos los de
GROUP BY
EMPLEADO NOMBREP John Franklin Ramesh Joyce Alicia Jennifer Ahmad James SALARIO 30.000 15.000 10.000 10.000 10.000 20.000 20.000 20.000 ND 5 5 5 5 4 4 4 1 C24:
ND COUNT(*) AVG(SALARIO)

...

...

5 4 1

4 3 1

16.250 16.666 20.000

Fig. 8.4 (a)

Los valores nulos forman su propio grupo


C24:
ND COUNT(*) AVG(SALARIO)

EMPLEADO NOMBREP Jon Juan Rosa Ana SALARIO NULL 10 10 10 ND NULL NULL 5 5

NULL 5

2 2

10 10

...

...

FBD Tema 5 Dpto. LSI - Donostia

36

Atributos de agrupacin: GROUP BY (2)


Obtener por cada proyecto su nmero y nombre junto al nmero de empleados que trabajan en l

C25: SELECT NMEROP, NOMBREP, COUNT(*) FROM PROYECTO INNER JOIN TRABAJA_EN ON NMEROP=NP GROUP BY NMEROP, NOMBREP
PROYECTO

FBD Tema 5 Dpto. LSI - Donostia

37

GROUP BY con ORDER BY


Obtener por cada proyecto su nmero y nombre junto al nmero de empleados que trabajan en l, ordenado ascendentemente por el nmero de empleados

C25: SELECT NMEROP, NOMBREP, COUNT(*) FROM PROYECTO INNER JOIN TRABAJA_EN ON NMEROP=NP GROUP BY NMEROP, NOMBREP ORDER BY COUNT(*) ASC

Si se renombran los atributos del resultado con AS, el nuevo nombre NO se puede usar en ORDER BY (en general, no slo con funciones agregadas):

C25: SELECT NMEROP, NOMBREP, COUNT(*) AS NUM_EMP FROM PROYECTO INNER JOIN TRABAJA_EN ON NMEROP=NP GROUP BY NMEROP, NOMBREP ORDER BY NUM_EMP ASC

NO se puede usar el nuevo nombre (AS) del atributo del resultado en ORDER BY
FBD Tema 5 Dpto. LSI - Donostia

38

Constructor de valor de tupla


Una sola comparacin incluye todos los valores de dos tuplas:
WHERE (NOMBRE,EDAD,ESTADO_CIVIL) = (Jos Mara, 18, S) WHERE NOMBRE= Jos Mara AND EDAD=18 AND ESTADO_CIVIL=S

WHERE (C1, C2, C3) < (T1, T2, T3) WHERE C1<T1 OR (C1=T1 AND C2<T2) OR (C1=T1 AND C2=T2 AND C3<T3)

FBD Tema 5 Dpto. LSI - Donostia

39

Anlisis de consultas SQL


SELECT <atributos y funciones> FROM <tablas> [WHERE <condicin>] [GROUP BY <atributos agrupacin>] [ORDER BY <atributos ordenacin>]
Tambin hay HAVING, que este curso no estudiaremos

Una consulta SQL se evala conceptualmente as: Primero FROM, seguido de WHERE, en tercer lugar GROUP BY y por ltimo ORDER BY Si no hay GROUP BY ni ORDER BY, para cada combinacin de tuplas (una de cada tabla de FROM), se evala la condicin de WHERE. Si es cierta se colocan en el resultado los valores correspondientes a los atributos del SELECT. Esta NO es una forma eficiente de implementar una consulta SQL. As pues, cada SGBD tiene rutinas para optimizar la evaluacin.

FBD Tema 5 Dpto. LSI - Donostia

40

Anlisis de consultas SQL (2)


En SQL hay varias alternativas para especificar la misma consulta : Ventaja: el programador elige la tcnica que le resulte ms cmoda. Desde el punto de vista de optimizacin de consultas, conviene que las consultas tengan el menor anidamiento y el menor ordenamiento implcito posible. Desventaja: el programador puede desconocer cul es la tcnica ms eficiente en cada caso Idealmente, el SGBD debera procesar la consulta de la misma manera sin importar cmo se haya escrito. En la prctica esto resulta muy difcil, y es conveniente que el usuario sea consciente de qu construcciones tienen un costo ms elevado que otras.

FBD Tema 5 Dpto. LSI - Donostia

41

Caractersticas adicionales de SQL


Especificacin de vistas (CREATE VIEW) Especificacin de restricciones de integridad generales (CREATE ASSERTION) Concesin y revocacin de privilegios (GRANT y REVOKE) Sentencias SQL en lenguajes de programacin: Metodologa para insertarlas. Ligaduras con varios lenguajes de programacin. El concepto de cursor para recorrer el resultado de las consultas. Instrucciones de control de transacciones. Cada SGBD contar con un conjunto de instrucciones para especificar parmetros de diseo fsico: Se denomina LDA, o lenguaje de definicin de almacenamiento Las primeras versiones de SQL tenan instrucciones para crear ndices, pero se eliminaron porque no aparecan en el nivel del esquema conceptual. Operadores CASE, NULLIF, COALESCE, CAST

FBD Tema 5 Dpto. LSI - Donostia

42

Ejercicios

FBD Tema 5 Dpto. LSI - Donostia

43

Ejercicio: consultas SQL EMPRESA


(8.13 (7.18) Elmasri/Navathe 02) Sobre el esquema de BD de la figura 7.7 (ver pg. siguiente): a) Empleados del departamento 5 que trabajan ms de 10 horas/semana en el proyecto Producto X b) Empleados con un dependiente con su mismo nombre de pila c) Empleados cuyo jefe directo es Franklin Wong d) Nombre de cada proyecto junto al nmero total de horas trabajadas por los empleados en l. e) Nombres de todos los empleados que trabajan en cada uno de los proyectos f) Empleados que no trabajan en ningn proyecto g) Nombre de cada departamento junto al salario medio de los empleados asignados al mismo

h) Salario medio de las empleadaa1m1 8s(Nombre dec15b265)b

FBD Tema 5 Dpto. LSI - Donostia

44

Ejercicio: consultas SQL EMPRESA (2)


(8.13 Elmasri/Navathe 02)

EMPLEADO NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN

...

... SEXO
DEPARTAMENTO

SALARIO NSS_SUPERV ND

NOMBRED NMEROD NSS_JEFE FECHA_INIC_JEFE

LOCALIZACIONES_DEPT NMEROD LOCALIZACIND PROYECTO NOMBREP NMEROP LOCALIZACINP NMD

TRABAJA_EN NSSE DEPENDIENTE NSSE NOMBRE_DEPENDIENTE SEXO FECHA_NCTO PARENTESCO NP HORAS

Figura 7.7 restricciones de integridad referencial representadas en el esquema de la base de datos relacional EMPRESA

FBD Tema 5 Dpto. LSI - Donostia

45

Ejercicio: consultas SQL BIBLIOTECA


(8.11 (7.23) Elmasri/Navathe 02) a) Nmero de copias de la tribu perdida en la sucursal de Sharpstown. b) Identificador de sucursal y nmero de copias del libro La tribu Perdida en cada una de las sucursales. c) Lectores sin libros en prstamo. d) Ttulo del libro, nombre y direccin del lector de los prstamos de la sucursal de Sharpstown con fecha de devolucin la de hoy. e) Por cada sucursal: nombre y total de ejemplares de libro en prstamo. f) Para los lectores con ms de 5 libros en prstamo,

FBD Tema 5 Dpto. LSI - Donostia

46

Ejercicios consultas SQL BIBLIOTECA (2)


h) Tiempo medio que duran los prstamos de libros (en conjunto). i) Tiempo medio que duraron los prstamos de libros (en conjunto) que se prestaron el ao 2002. j) Nmero total de prstamos, nmero de socios de la biblioteca que han tomado libros en prstamo y nmero medio de libros que han tomado en prstamo los socios. k) Nmero medio de copias por libro de la biblioteca central (en conjunto) l) Nmero de socio junto al nmero de prstamos que ha tomado hasta el momento, ordenado por nmero de prstamos m) Identificador de libro junto al nmero de veces actualmente en prstamo n) Identificadores de cada libro y sucursal junto al nmero de veces que ha sido prestado el libro en la sucursal. o) Para cada libro: identificador de libro y nmero de autores. p) Para cada libro: ttulo y nmero de autores. q) Para cada da del mes pasado en el que hubiera prstamos, nmero de libros distintos que se prestaron ese da.
FBD Tema 5 Dpto. LSI - Donostia 47

Ejercicio: consultas SQL UNIVERSIDAD


(8.16 Elmasri/Navathe 02) a) Nombres de los alumnos de 4 de la carrera CC b) Nombre de los cursos impartidos por el profesor King en los aos 1998 y 99 c) Para cada seccin impartida por el profesor King, obtener el nmero de curso, semestre, ao y nmero de alumnos que se matricularon en esa seccin. d) Nombre y boletn de notas de los alumnos de 5 de la carrera CC. El boletn incluye el nombre y nmero del curso, las horas-crdito, el semestre, el ao y las notas de los cursos concluidos por el alumno. e) Nombre y carrera de los estudiantes calificados con nota A en todos sus cursos. f) Nombre y carrera de los estudiantes que NO tengan nota A en ningn curso.
ALUMNO

Nombre NmAlumno
CURSO

Grado Carrera

NombreCurso NmCurso HorasCrdito Departamento


REQUISITO

NmCurso NmRequisito
SECCION

IdentSeccin NmCurso Semestre Ao Profesor


INFORME_ CALIFICACIONES

NmAlumno IdentSeccin Nota


FBD Tema 5 Dpto. LSI - Donostia 48

Ejercicio: consultas SQL BANCOS


Sobre el esquema que aparece en la siguiente pgina: a) Cdigo de banco y DNI de cliente, para todos aquellos clientes que tienen cuenta en ms de una sucursal del banco, ordenada por cdigo de banco y DNI b) Nombre de banco, nmero de sucursal, prstamo medio y nmero de TAE diferentes en la sucursal, ordenado descendentemente por prstamo medio. c) DNI y nombre de clientes que tienen solicitado algn prstamo igual o superior a 60.000 , en sucursales de la calle Urbieta de Donostia d) Nombre del banco y media de los TAE ofrecidos en sus sucursales a clientes de Donostia, para aquellos bancos cuyo cdigo comienza por 011 y donde los prstamos sean de un importe superior a 60.000 . El resultado deber estar ordenado crecientemente por media de TAE. e) Todos los datos de clientes y cdigo del banco donde tienen solicitado prstamo, para aquellos clientes que tengan algn prstamo en sucursales de Donostia pero que no tengan cuentas en el mismo banco donde tienen el prstamo.

FBD Tema 5 Dpto. LSI - Donostia

49

Ejercicio: consultas SQL BANCOS (2)

BANCO

SUCURSAL

Cdigo Nombre
CUENTA

Banco NmSucursal Ciudad Dir

NmCta Inters Saldo Banco NmSucursal


CLIENTE

DNI Nombre Dir Tfno


PRSTAMO

NmPrs TAE Importe Banco NmSucursal


CUENTA_CLIENTE PRSTAMO_CLIENTE

NmCta DNI

NmPrs DNI

BDR correspondiente al esquema ER de la figura 3.17 Salvo que se ha aadido el atributo Ciudad a SUCURSAL y se ha cambiado el atributo Dir de BANCO a SUCURSAL

FBD Tema 5 Dpto. LSI - Donostia

50

Ejercicio: consultas SQL BIBLIOTECA-2


EJEMPLAR
(0,N) (1,1)

ESTA_EN

(0,N)

BIBLIOTECA Da Mes Ao
Puede haber varios ejemplares con el mismo ttulo

PRESTAMO
(0,N)

FechaPrstamo

SOCIO
BIBLIOTECA COD_BIB FACULTAD TFNO BIBLIOTECARIA

EJEMPLAR COD_EJE TTULO AUTOR EDITORIAL REA COD_BIB SOCIO DNI NOM_SOCIO TFNO CIUDAD CARRERA

PRSTAMO DNI COD_EJE DA MES AO DIAS_PRESTADO

Escribe las siguientes consultas SQL sobre la BD anterior: a) Pares de ttulos distintos del rea de informtica sacados en prstamo por el mismo socio. Posible salida:
ttulo Fundamentos de BD Fundamentos de BD BD:, Qu gozada! ttulo BD:, Qu gozada! SQL para novatos Fundamentos de BD

b) Lista de pares ordenados de bibliotecas que tengan ejemplares de libros de la misma rea. Por ejemplo, si las bibliotecas A, B y C tienen libros de informtica y las bibliotecas A y C de filosofa, debern aparecer: <A,B,Informtica>, <A,C,Informtica>, <A,C,Filosofa>, <B,A,Informtica>, <B,C,Informtica>, ...
FBD Tema 5 Dpto. LSI - Donostia 51

Ejercicio: definicin y actualizacin SQL de ITINERARIOS


Matricula Cod-bast Marca Clase Codigo

VEHICULO (0,N)
Fecha V_I

(1,1) (1,1) (0,N)


De donde A donde Por donde pasa

(1,N) (1,N) (1,N)


Orden

PAIS (0,N)
P_C

Nombre Moneda Cod-c Nombre Habit

Cod_iti Dieta

(1,N)

(1,1) CIUDAD

ITINERARIO

a) Completa las instrucciones de creacin de la BD para el esquema ER anterior (ver pginas siguientes). b) Incluir el itinerario (111, 50000, 95, 141) que sale de Sevilla (95, "Sevilla", 500000, 34) y llega a Friburgo (141, "Friburgo", 300000, 49), pasando por Zaragoza (93, "Zaragoza", 450000, 34), Pars (16, "Pars", 6000000, 33) y Karlstadt (148, "Karlstadt", 200000, 49). Los pases correspondientes son Espaa (34, "Espaa", "Peseta"), Francia (33, "Francia", "Franco") y Alemania (49, "Alemania", "Marco"). Ninguno de los datos est en la BD. c) Todos los itinerarios que pasan por Sevilla (solo pasar, no salir o llegar) se han desviado por Crdoba. Los datos de Crdoba (957, Crdoba, 134000, 34) no estn en la BD. d) El vehculo con n de bastidor 3 ha tenido un accidente y lo han llevado a la chatarra. Se ha cambiado el vehculo a los itinerarios donde figuraba por (345, "Renault", "BI-9999-XX", "Express"), que no est an en la BD.
FBD Tema 5 Dpto. LSI - Donostia 52

FBD Tema 5 Dpto. LSI - Donostia

53

Ejercicio: definicin y actualizacin SQL de ITINERARIOS (3)


CREATE TABLE VEHI-ITINE ( Cod-bast INTEGER NOT NULL, Cod-iti INTEGER NOT NULL, Fecha DATE, PRIMARY KEY (Cod-bast, Cod-iti), FOREIGN KEY (Cod-bast) REFERENCES VEHICULO (Cod-bast) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Cod-iti ) REFERENCES ITINERARIO (Cod-iti) ON DELETE CASCADE ON UPDATE CASCADE); CREATE TABLE POR-DONDE ( Cod-iti INTEGER NOT NULL, Cod-c INTEGER NOT NULL, Orden INTEGER,

FOREIGN KEY (Cod-c) REFERENCES CIUDAD (Cod-c) ON DELETE CASCADE ON UPDATE CASCADE);

FBD Tema 5 Dpto. LSI - Donostia

54

Ejercicio: anlisis de restricciones de integridad en BANCOS


Analizar todas las R.I. violadas por cada operacin cuando se ejecuta sobre la BD de la figura de la siguiente pgina:
a) INSERT INTO CUENTA VALUES (7, 7, 20000, null, null) b) INSERT INTO CLIENTE VALUES (123, Pepi, null, null) c) INSERT INTO CUENTA-CLIENTE VALUES (4, null) d) INSERT INTO CUENTA VALUES (10, 4, 100000, 2, 3) e) DELETE FROM CLIENTE WHERE DNI=999 f) DELETE FROM CUENTA-CLIENTE WHERE NCta=0 and DNI>000 WHERE NCta=0 and DNI=111 h) UPDATE CUENTA-CLIENTE SET NCta=3, DNI=222 WHERE NCta=0 i) j) UPDATE CLIENTE SET Nombre=Ataulfo A. WHERE DNI>888 UPDATE CUENTA SET Banco=2, NSuc=2 WHERE NCta=0

g) UPDATE CUENTA-CLIENTE SET NCta=5, DNI=111

k) UPDATE CUENTA SET Banco=2 WHERE Banco=1 l) UPDATE CUENTA SET Banco=null, NSuc=null WHERE

Banco=1
m) UPDATE CUENTA SET Banco=null WHERE NCta=3

FBD Tema 5 Dpto. LSI - Donostia

55

Ejercicio: anlisis de restricciones de integridad en BANCOS (2)


BANCO Cdigo Nombre 1 BBVA 2 Santander 2101 Kutxa 2102 BBK Dir Gran Va, 17 Espoln, 1 Garibai, 6 Salaberra, 3 CLIENTE DNI Nombre Dir 111 Juan Legazpi, 1 222 Pedro Guridi, 5 333 Gaizka Lardizabal, 1 444 Luisa Nagusia, 2 555 Ceferina Elkano, 3 666 Yolanda Av. Madrid, 9 777 Segismundo H. Corts, 9 888 Ataulfo Cervantes, 1 999 Teodorico Velzquez, 7 000 Atenea Sorolla, 13 CUENTA NCta Inters 1 1 2 1 3 1 4 2 5 2 6 3 7 3 8 3 9 4 0 4 PRSTAMO NPres TAE 1 10 2 10 3 10 4 20 5 20 6 30 7 30 8 30 9 40 0 40 Saldo 20000 30000 40000 30000 40000 50000 60000 60000 70000 80000 Tfno 111111 222222 333333 444444 555555 666666 777777 888888 999999 101010

SUCURSAL Banco NSuc Ciudad 1 1 Bilbao 1 2 S. Sebastin 1 3 Vitoria 2 1 Santander 2 2 S. Sebastin 2101 1 S. Sebastin 2101 2 Pasajes PRSTAMO2102 1 Bilbao CLIENTE NPres DNI 2102 2 Sestao 0 111 2102 3 Portugalete CE 0 000 1 111 CUENTACLIENTE 2 111 NCta DNI 2 222 0 111 3 111 0 222 6 111 3 333 0 555 6 222 4 111 0 000 6 333 4 444 1 111 6 666 5 111 2 111 7 111 5 555 2 222 7 777 6 111 3 111 8 111 6 666 3 333 8 222 7 111 4 111 8 444 7 777 4 222 8 888 8 111 4 444 9 111 8 888 5 111 9 333 9 111 5 555 9 999 9 999

...

Banco NSuc 1 1 1 2 1 3 2 1 2 2 2101 1 2101 2 2102 1 2102 2 2102 3


CE CE

...

CE

CE

Importe 200000 300000 400000 300000 400000 500000 600000 600000 700000 800000

Banco NSuc 1 1 1 2 1 3 2 1 2 2 2101 1 2101 2 2102 1 2102 2 2102 3


CE CE

FBD Tema 5 Dpto. LSI - Donostia

CE

CE

56

Junio 00
Especie Mariposa Persona Coleccin Ejemplar EspecieColeccin ColoresMariposa Nombre Caractersticas Origen Hbitat Tfno EsperanzaVida CdColeccin NomEspecie EsPrincipal NombreCientfico DNI Nombre

Direccin

Cdigo

Ubicacin

PrecioEstimado Nmero Procedencia Tamao CdColeccin MejorEjemplar Color

NombreCientfico Nombre Cdigo

NombreCientfico

a) Obtener el nombre cientfico, hbitat y esperanza de vida de las mariposas de la coleccin de Jos Mari Poza ordenadas por esperanza de vida. Hay que asegurarse de que slo se obtiene una tupla por mariposa (y no por cada ejemplar de la misma). b) Obtener el nombre cientfico y esperanza de vida de todas las mariposas que tienen algn ejemplar de mayor tamao que el ejemplar nmero 5 de la mariposa con nombre cientfico Papilio macaon perteneciente a la coleccin de Jos Mari Poza.

FBD Tema 5 Dpto. LSI - Donostia

57

Septiembre 00
ZonaUrbana NombreZona Categora BloqueCasas Calle Nmero Npisos NombreZona M2 Puerta M2

CasaParticular NombreZona Nmero Piso Calle Nmero Persona PoseeC PoseeP DNI Planta

Nombre Edad NombreZona NmCasa Calle NmBloque Planta Puerta

DNI NombreZona NmCasa DNI Calle NmBloque Planta Puerta

a) Obtener el DNI, nombre y edad de dueos de casas particulares, con la peculiaridad de que todas sus casas (las que posee) estn situadas en una Zona Urbana cuya categora es de lujo. b) Obtener DNI, nombre y edad de las personas que viven en un piso de menos m2 que algn piso que cumpla al mismo tiempo las dos condiciones siguientes: a) Est situado en otro bloque distinto. b) Ese otro bloque pertenezca a una Zona Urbana de categora Residencial. c) Obtener datos de los pisos habitados por personas de ms de 60 aos y situados en un Bloque de Casas que no supere los 10 pisos. Por cada piso queremos obtener la calle y nmero donde se encuentra, adems de la siguiente informacin: Piso pequeo si tiene menos de 50 m2 Piso mediano si tiene entre 50 y 75 m2 Piso grande si tiene ms de 75 m2
FBD Tema 5 Dpto. LSI - Donostia 58

Junio 01
Artculo Nom Art Tipo Precio Tam ao Ingr Precio Sum inistrador Ingrediente Nom Art_Ingr NomArt NomIngr Prd_Ingr NomArt NomPrd NomIngr

eroFechaHoraPedidoHoraServidoTfno Ped_Art Nmero NomArt Cantidad Pedido Nm Dom icilio Tfno Direccin Prd ProductoEspecial NomArt Nom Ped_Prd NmeroNomArt NomPrd Cantidad

a) Media de tiempo que se tarda en servir cada uno de los productos especiales a ser consumidos en el local (y no en el domicilio). b) Considera los artculos de tipo pizza que llevan pimiento. Se desea conocer todos los datos de productos especiales que se basan en tales artculos y llevan champin entre los ingredientes para el producto especial. c) Direccin de aquellos domicilios que hayan solicitado pedidos de artculos con precios superiores al artculo de nombre Pizza 3 quesos

FBD Tema 5 Dpto. LSI - Donostia

59

Septiembre 01
Pelcula CdigoTtuloGnero Cine Nom Direccin Tfno bre Sexo Nacionalidad Persona Nom Producida Cdigo Nombre Actor Cdigo Nombre Dirigida Cdigo Nombre

Prem io Categora Ao Euros Cdigo Proyectada Cdigo Nom Nmero FechaInicioFechaFin ero Aforo Sala Nom Nm Prem Pers Categora Ao Nombre

a) Para cada pelcula de gnero policiaco obtener su ttulo y el nmero total de premios que se le han concedido. b) Nombres de los cines, con alguna sala de aforo igual o superior a 100 butacas, que no han proyectado la pelcula premiada con la categora mejor actriz del ao 2001. c) Obtener los nombres de los distintos actores que han participado en pelculas dirigidas por una persona que haya conseguido el premio al mejor director del festival en alguna ocasin. Queremos los actores participantes en cualquier pelcula dirigida por esa persona, no slo en las premiadas al mejor director.

FBD Tema 5 Dpto. LSI - Donostia

60

Junio 02

FBD Tema 5 Dpto. LSI - Donostia

61

Septiembre 02
C

C E N T R O C d_C entro N om bre D ireccin A U T O B S M atrcula N I A L U M N O D C U R S O D N I N _A sientos C om paa C d_C entro C d_P ueblo

P U E B L O C d_P ueblo N om bre

N om bre C d_C entro Id_C urso

a) Obtener el nombre de los alumnos que viajan en autobuses contratados por centros universitarios distintos a donde estudian, junto al nombre de su pueblo, la compaa del autobs y la fecha de inscripcin del alumno en el autobs. Si el autobs no pertenece a ninguna compaa tendr que figurar en vez de la compaa el cdigo del centro. Si todava no figurase en la BD el centro que contrata al autobs deber aparecer en su lugar la matrcula. Las filas del resultado debern aparecer ordenadas por nombre de pueblo y las que tengan el mismo nombre de pueblo ordenadas por fecha de inscripcin. Tngase en cuenta que un alumno puede viajar en varios autobuses de estas caractersticas y que el resultado deber recoger cada alumno junto a cada autobs en el que viaja que cumpla las condiciones anteriores. b) Obtener el listado de las paradas (Cd_Pueblo, Calle) por las que pasan los autobuses que tienen alguna parada en Beasain y los ha contratado el centro de cdigo IFSS. c) Obtener para cada centro su nombre y el nmero de alumnos matriculados en l que viajan en algn autobs que: Figura en la BD como ya contratado por algn centro (suponer que pueden figurar en la BD autobuses que no estn todava contratados). Realiza alguna parada en la calle Gorosabel del pueblo de cdigo TLS. Cuenta con ms de 40 plazas.
FBD Tema 5 Dpto. LSI - Donostia 62

d_Centro

Junio 03
C O PIST E R A N IF D ireccin Precio A L U M N O D N I C lave D ireccin C U R SA A SIG N A T U R A IdA signatura C urso C arrera N IF A PU N T E S IdA signatura Tem a N m eroH ojas FIC H AD N I IdA signatura Tem a FechaPeticin N m eroC opias FechaR ecogida

D N I

IdA signatura

a) DNI y Direccin, sin tuplas repetidas en el resultado, de aquellos alumnos que hayan rellenado fichas de peticin de apuntes de al menos dos asignaturas distintas. b) Indica por cada copistera (NIF) y asignatura (IdAsignatura) cul es la facturacin pendiente de pago por los alumnos de la asignatura.

FBD Tema 5 Dpto. LSI - Donostia

63

Septiembre 03
APAREJADOR N_Identificacin Nombre Tfno NombreMunicipio MUNICIPIO Nombre Direccin Tfno INMUEBLE N_Propiedad Tipo Direccin DNI NombreMunicipio M2 PERMISO N_Propiedad DNI FechaPeticin Descripcin N_Identificacin

...

...

FechaAsignacin Presupuesto FechaResolucin EstConcedido


Dominio booleano

PERSONA DNI Nombre Direccin TRABAJA NombreMunicipio N_Identificacin PETICIN N_Propiedad DNI

a) DNI, nombre y direccin de las personas solicitantes de algn permiso de obra asignado a un aparejador de la plantilla de Aduna (donde Aduna es el nombre de un municipio). b) Obtener el nombre del aparejador y a cuntos inmuebles distintos ha denegado algn permiso de obra. Slo queremos tener en cuenta aquellos permisos de obra donde el inmueble haya obtenido otro permiso de obra, solicitado con posterioridad y con el mismo presupuesto (el aparejador que acepta el permiso NO tiene por qu ser el mismo que el que lo deneg previamente).

FBD Tema 5 Dpto. LSI - Donostia

64

Septiembre 03
APAREJADOR N_Identificacin Nombre Tfno NombreMunicipio MUNICIPIO Nombre Direccin Tfno INMUEBLE N_Propiedad Tipo Direccin DNI NombreMunicipio M2 PERMISO N_Propiedad DNI FechaPeticin Descripcin N_Identificacin

...

...

FechaAsignacin Presupuesto FechaResolucin EstConcedido


Dominio booleano

PERSONA DNI Nombre Direccin TRABAJA NombreMunicipio N_Identificacin PETICIN N_Propiedad DNI

c) Obtener la descripcin, n de propiedad y el presupuesto mximo para aquellos permisos de obra que cumplen: El permiso est concedido, su campo descripcin tiene como valor cerramiento y corresponde a un inmueble de Lasarte de menos de 60 m2. Junto a tuplas con los mismos campos, para aquellos permisos de obra que cumplen: El permiso est concedido, el campo descripcin tiene como valor fachada y est asignado a un aparejador de la plantilla de Lasarte

FBD Tema 5 Dpto. LSI - Donostia

65

Junio 04
E Q U IP O N om bre D irector M A IL L O T C olor Prem io M etlico E T A P A N m ero K m Salida L legada G anador P U E R T O N m Etapa N m O rdenA ltitud C ategora Prim ero C IC L IST A D orsal N om bre FechaN cto EnC arrera Equipo PA R T IC IP A C I N D orsal Etapa Tiem po L L E V A _M A IL L O T C olor Etapa D orsal

Suponiendoque haya undom inio que incluya horas-m in-seg.

a) Obtener la clasificacin general de la vuelta, es decir, el dorsal, nombre del ciclista y nombre del equipo junto al tiempo total invertido en las etapas disputadas, para aquellos ciclistas que continan en carrera, ordenados de menor a mayor tiempo consumido. b) Obtener el dorsal y el nombre de los ciclistas que pertenecen al equipo del ciclista ganador de la dcima etapa (incluido este) y que participaron en dicha etapa

FBD Tema 5 Dpto. LSI - Donostia

66

Septiembre 04
DEPORTISTA NmeroId Nombre Apellido Direccin Telfono NmeroIdVolunt FechaCom FechaFin CdigoDeporte Pas EVENTO Ciudad Nombre

Fecha

VOLUNTARIO NmeroId Nombre Procedencia Profesin EQUIPO CdigoDeporte Pas Entrenador PARTICIPA CdigoDeporte NmeroIdDeportista DESTACA CdigoDeporte NmeroIdDeportista IDIOMA

DEPORTE Cdigo Nombre Historia Equipamiento RECORD CdigoDeporte NmeroIdDeportista Fecha Hora Ciudad TIPO RECORD CdigoDeporte NmeroIdDeportista Fecha Hora Tipo TIENE

CdigoDeporte Ciudad Nombre

NmeroIdVolunt Idioma

a) Nombre y procedencia de los voluntarios que hablan francs y acompaan a deportistas que participan en deportes cuyos eventos de clasificacin se celebraron en Pars. b) Nombre, apellido e identificacin de aquellos deportistas del equipo de Jorge Snchez que cumplan la siguiente condicin: han logrado algn record y todos los records que han conseguido son de tipo mundial. En el resultado debe excluirse a Jorge Snchez.

FBD Tema 5 Dpto. LSI - Donostia

67

Junio 05
V IA J ED estin o VF ech aS alid aD as P recio D a C iu d ad S alid aD N I

D N IN o m b re N _ T f b r 3 7 8 4 5 . 7 7 T 3 t ( g 9

a) Nombre y direccin de aquellos clientes (sin repeticiones) que hayan participado en algn viaje en el que se hayan hospedado ms noches en un mismo hotel que las noches que se hosped en el hotel Gabriella el cliente con DNI 15238432, en el viaje que realiz a Roma el 3/05/2005. b) Obtener, para cada destino de viaje DV, el nmero de guas que hablen italiano que han llevado o llevarn algn viaje a ese destino DV, con posibilidad de alojarse (en el destino de viaje DV) en algn hotel de Roma.

FBD Tema 5 Dpto. LSI - Donostia

68

Septiembre 05
sp ecieC ro talR azaF ech aN ctoM atad eroC ro talP ad reC ro talM ad reD N IG ran jaN o m G ran ja R E SE G R A N J AD N IN o m b reD ireccio nT fn oA d m in istrad o r E N F E R M E D A DN o m b re N oserep ite esp ecieenlas clav es tran jerasd e G A N A D E R OD N IN o m b reE -m ail ex p ad reym ad re p o rserla T R A T A M IE N T ON o m b reD u raci n m ism a

A P L IC A RE N F E R _ T R A T A ME n ferm ed adT ratam ien toE sp ecieC ro talF _ In icio E n ferm ed adT ratam ien to S N T O M AE n ferm ed adS in to m a M E D IC A M E N T OT ratam ien toM ed icam en to

a) Especie, crotal y fecha de nacimiento de las reses de la raza Angus con padre y madre conocidos (estn en la BD) y cuyo propietario es Domecq. Slo se obtendrn reses que NUNCA hayan padecido la enfermedad Brucelosis. b) Obtener la especie y crotal de las reses que, habiendo padecido la enfermedad Encefalopata, se les aplic para dicha enfermedad alguno de los tratamientos usados para esa misma enfermedad en la res de la especie bovina con crotal nmero 1. Esta ltima res no debe aparecer en el resultado.

FBD Tema 5 Dpto. LSI - Donostia

69

ER-Relacional Junio y Septiembre 00


Calle Nmero
N

NombreZona

Categora
1

Dir

NPisos

ZONA_URBANA 1

BLOQUE_CASAS
1 N

Nmero M
2

N
CASA_PARTICULAR

N
POSEEC

N POSEEP M N 1 M

P_P M2

Planta Puerta

PISO VIVEP

VIVEC

PERSONA DNI Nombre Edad

Nombre Nombre Caractersticas ESPECIE 1 NombreCientfico Origen Hbitat EsperanzaVida Colores N EJEMPLAR Nmero Procedencia N Tamao 1 N MARIPOSA 1 N M MejorEjemplar DNI

Direccin Tfno

PERSONA

N EsPrincipal

1 COLECCIN Cdigo

PrecioEstimado

Ubicacin

FBD Tema 5 Dpto. LSI - Donostia

70

ER-Relacional Junio y Septiembre 01


Precio NomArt Tipo Precio Tamao
Cantidad LLEVA (1,N) (0,N)

NomIngr

Suministrador
(0,N) LLEVA (1,N)

INGREDIENTE
BASE DE

ARTCULO
(0,N) INCLUIDO

(0,N)

(1,1) PRODUCTO

NomPrd

ESPECIAL
(0,N) INCLUIDO

(0,N)

PEDIDO

(0,N)

Cantidad

Nmero Fecha Direccin Tfno DOMICILIO


(0,N) (0,1) LLEVAR_A

Hora pedido Hora servido

Categora Euros
(0,1) CONCEDIDO (0,N) (1,N)

Ao

Cd
(0,N) CONCEDIDO (0,N) (0,N)

PREMIO
PRODUCIDA

Cdigo Ttulo PELCULA (1,N) ACTOR (0,N) PERSONA Gnero (1,N) (1,N) DIRIGIDA (0,N) Fecha Sexo Inicio Nombre Nacionalidad PROYECTADA FechaFin
(1,N)

Nmero Aforo

SALA

(1,1)

DE

(1,N)

CINE
71

FBD Tema 5 Dpto. LSI - Donostia

Nom Tfno Direccin

ER-Relacional Junio y Septiembre 02


Cd Direcc Tfno. (1,1) Cd (1,N) Pas

HOTEL
Nombre

RESIDE

EQUIPO
Camiseta (1,N)

Fecha Resultado (1,N) Equip1 (1,1) (1,N) JUEGA PARTIDO Equip2 E402 6006 2.98 7082 mc[9 TD03.07mc[93TD03.07m rbitros

NHabit

Total_Goles

COMPUESTO POR Fecha Lugar (1,1) (1,1) PASADO A (0,N) DNI Nombre FechaN Clubes_Ao Goles

CONTROL ANTIDOPAJE

JUGADOR

FBD Tema 5 Dpto. LSI - Donostia

72

ER-Relacional Junio 2003

Alumno

Copistera

Cursa

Asignada_a IdAsignatura

Apuntes

Pertenecen_a

Asignatura

Septiembre 2003

FBD Tema 5 Dpto. LSI - Donostia

73

ER-Relacional Junio 2004


Categora Altitud NOrden PUERTO
(1,1) (1,1) Horas

Nombre Director Primero


(0,N)

EQUIPO
(1,N)

Corresponde Nmero Km Salida Llegada


(0,N)

Tiempo

Min. Seg.

Consta
(1,1)

Dorsal Nombre

ETAPA

(1,N)

Participa

(1,N)

CICLISTA

Fecha_Ncto Edad En_Carrera

(1,1) (1,N) M

Gana (0,N) Lleva


N (0,N) 1 (0,N)

MAILLOT Color Premio Metlico

Septiembre 2004

FBD Tema 5 Dpto. LSI - Donostia

74

ER-Relacional Junio 2005


DNI Destino Fecha Salida Ident Das Precio da Precio total Ciudad salida Nmero Destino Hora salida Lugar salida Precio
LLEVA

Nombre (0,N) GUA N_Tfno Idiomas (1,N)


ASIGNADO

(1,1) VIAJE (0,N)


ASIGNADA

IdHotel Nombre

(0,N)

HOTEL

Localidad Capacidad DNI Nombre Direccin N_Tfno

M (1,N)

ALOJADO

(0,N) N N Noches (0,N)

(1,1) EXCURSIN OPCIONAL (0,N)

P (1,N)
ASISTE

CLIENTE

Septiembre 2005
Especie Crotal hija (0,1)
PADRE

Id

Raza

FechaNcto Matadero (0,1) hija RES


MADRE

Nombre Direccin Tfno (1,1)


ADMINISTRADA

padre (0,N) (1,1) GRANJA (1,N) (1,1)


PERTENECE PERTENECE

(0,N) madre (0,N) (1,1)


APLICADO

(0,N)

ENFERMEDAD (1,N)
SE_APLICA

Nombre Sntomas

(0,N)

(0,N) DNI Nombre E-mail GANADERO

(0,N)

APLICAR

(1,N) TRATAMIENTO

Nombre Duracin Medicamentos

InicioTratamiento

FinTratamiento

FBD Tema 5 Dpto. LSI - Donostia

75