Professional Documents
Culture Documents
Ejemplos:
Descripcin CHARACTER(20)
Nombre VARCHAR(12)
En CREATE TABLE.
CREATE DOMAIN TIPO_NSS AS CHAR(9); Tras la descripcin de atributos (columnas).
Claves:
DEFAULT
PRIMARY KEY: Clave primaria.
Valor por defecto.
UNIQUE: Clave candidata.
Si no se especifica es NULL.
FOREIGN KEY: Clave extranjera.
NOT NULL
Restriccin. Integridad referencial (clave extranjera):
Calificar con:
ON DELETE
ON UPDATE
Opciones:
SET NULL
CASCADE
SET DEFAULT
Borrar esquema
CREATE TABLE EMPLEADO ...
CONSTRAINT CLESUPEREMP FOREIGN KEY
(NSS_SUPERV) REFERENCES EMPLEADO(NSS) DROP SCHEMA EMPRESA CASCADE;
ON DELETE SET NULL
ON UPDATE CASCADE;
RESTRICT: Borrar slo si no contiene elementos
Si se modifica, CASCADE: Borrar esquema y contenidos
Al borrar un empleado
propagar el nuevo
poner NULL en todos
valor a todos los
los empleados que lo
empleados que lo
tengan como jefe
tienen como jefe
Borrar tabla
Aadir Borrar
ALTER TABLE EMPRESA.EMPLEADO ALTER TABLE EMPRESA.EMPLEADO
ADD PUESTO VARCHAR(12); DROP CONSTRAINT CLESUPEREMP;
Valores null (alternativa: default, orden update). Es preciso haberle dado un nombre.
No con NOT NULL.
Aadir
Borrar ALTER TABLE EMPRESA.EMPLEADO
ALTER TABLE EMPRESA.EMPLEADO ADD CONSTRAINT CLESUPEREMP
DROP DIRECCIN CASCADE; FOREIGN KEY (NSS_SUPERV) REFERENCES
EMPLEADO(NSS)
CASCADE borra restricciones y vistas que le
ON DELETE SET NULL
hagan referencia.
ON UPDATE CASCADE;
RESTRICT slo se borra si no hay restricciones
ni vistas que le hagan referencia.
Modificar definicin
ALTER TABLE
EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE DROP DEFAULT;
ALTER TABLE
EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE SET DEFAULT 333445555;
EMPLEADO DEPARTAMENTO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIN SEXO ... NOMBRED NMEROD NSS_JEFE FECHA_INIC_JEFE
{=, <, >, <=, >=, <>}, AND, OR, NOT WHERE: Condiciones de y
El resultado de una
consulta SQL tuplas repetidas
puede contener ...
PROYECTO
NOMBREP NMEROP LOCALIZACINP NMD
EMPLEADO
C2: SELECT NMEROP, NMD, APELLIDO, DIRECCIN, NOMBRE INIC APELLIDO NSS FECHA_NCTO DIR
FECHA_NCTO
SEXO SALARIO NSS_SUPERV ND
FROM PROYECTO, DEPARTAMENTO, EMPLEADO
WHERE NMD=NMEROD AND NSS_JEFE=NSS AND DEPARTAMENTO
LOCALIZACINP=Stafford; NOMBRE ND NSS FECHA_INIC_JEFE
PR_ST LOCALIZACINP=Stafford(PROYECTO)
DP_CNPR_ST NMD=NMEROD DEPARTAMENTO
JEFE_DP_PRY DP_CN NSS_JEFE=NSS EMPLEADO
RESULTADO NMEROP, NMD, APELLIDO, DIRECCIN,
FECHA_NCTO (JEFE_DP_PRY)
DISTINCT
SELECT * Es lo que ocurre si no
se indica nada
Selecciona todos los atributos de las relaciones de C11: SELECT ALL SALARIO
FROM. FROM EMPLEADO;
Tambin se puede poner EMPLEADO.* (calificar Si slo nos interesan los salarios distintos.
atributos).
En SQL existen las operaciones UNION (), Empleados que viven en Houston, estado de Texas:
INTERSECT () y EXCEPT (resta).
Algunos SGBD slo implementan la unin. C12: SELECT NOMBRE, APELLIDO
En este curso slo consideraremos que existe la FROM EMPLEADO
unin para resolver consultas en SQL. WHERE DIRECCIN LIKE %Houston, TX%;
LIKE: Compara una subcadena de caracteres.
Por defecto las tuplas repetidas se eliminan del _ sustituye a un carcter arbitrario.
resultado. % a un n indeterminado de caracteres.
Incluyendo ALL se conservan las repeticiones.
Se exige compatibilidad de unin:
Mismos atributos y mismo orden entre ellos. Empleados que nacieron en la dcada de 1950:
Nmeros de proyecto donde participa Wong como C12A: SELECT NOMBRE, APELLIDO
FROM EMPLEADO
trabajador o como jefe del dpto. controlador:
WHERE FECHA_NCTO LIKE _ _ 5%;
Operaciones aritmticas y
Conjuntos explcitos de valores y BETWEEN
de concatenacin
Nombre y salario de los empleados que trabajan en NSS de los empleados que trabajan en los proyectos
ProductoX tras aumentarles el sueldo un 10% : 1, 2 3.
Entre 30000 y
40000 ambos
incluidos
Empleados y proyectos donde trabajan ordenados por Nombre y apellido de empleados sin supervisores.
departamento y en cada departamento alfabticamente
por apellido y nombre : C18: SELECT NOMBRE, APELLIDO
FROM EMPLEADO
C15: SELECT NOMBRED, APELLIDO, NOMBRE, NOMBREP WHERE NSS_SUPERV IS NULL;
FROM DEPARTAMENTO, EMPLEADO, TRABAJA_EN, En lugar de = y se usa IS e IS NOT.
PROYECTO
SQL considera el valor nulo de diferente forma.
WHERE NMEROD=ND AND NSS=NSSE AND
NP=NMEROP Las tuplas con valores nulos en el atributo de
ORDER BY NOMBRED, APELLIDO, NOMBREP; reunin no se incluyen en el resultado (salvo en
reunin externa).
C1B: SELECT NOMBRE, APELLIDO, DIRECCIN Nombre y salario de los empleados que trabajan en
FROM (EMPLEADO NATURAL JOIN (DEPARTAMEN- ProductoX tras aumentarles el sueldo un 10% :
TO AS DEPTO(NOMBRED, ND, NSSG,FECHAIG)))
WHERE NOMBRED=Investigacin; Se estn
renombrando
atributos C13A: SELECT NOMBRE, APELLIDO, 1.1*SALARIO
FROM (EMPLEADO INNER JOIN TRABAJA_EN
Renombra DEPARTAMENTO.NMEROD por ND. ON NSS=NSSE) INNER JOIN PROYECTO
Condicin de reunin implcita: ON NP=NMEROP )
EMPLEADO.ND = DEPTO.ND WHERE NOMBREP=ProductoX;
35.000 15.000 10.000 11.666 Qu ocurre cuando todos los salarios valen null?
35.000 / 3
Qu ocurre cuando la tabla est vaca?
C. P. G. 2007 FBD Tema 4 39 C. P. G. 2007 FBD Tema 4 40
Atributos de agrupacin: GROUP BY Atributos de agrupacin: GROUP BY (2)
Obtener el nmero de departamento junto a su nmero Obtener por cada proyecto su nmero y nombre
junto al nmero de empleados que trabajan en l.
de empleados y salario medio:
C25: SELECT NMEROP, NOMBREP, COUNT(*)
C24: SELECT ND, COUNT(*), AVG(SALARIO) FROM PROYECTO INNER JOIN TRABAJA_EN
FROM EMPLEADO ON NMEROP=NP Agrupacin por
GROUP BY ND; varios atributos
GROUP BY NMEROP, NOMBREP;
En GROUP BY est el/los atributo/s de agrupacin.
NOMBREP NMEROP NP HORAS
Atributos de SELECT todos en GROUP BY. PROYECTO
ProductoX 1 1 32.5
INNER JOIN
Atrib. de GROUP BY no obligatorio en SELECT. TRABAJA_EN:
ProductoX 1 1 20.0
ProductoY 2 2 7.5
Se suelen poner en SELECT algunos/todos los de ProductoY 2 2 20.0
GROUP BY. ProductoY 2 2 10.0
EMPLEADO ProductoZ 3 3 40.0
NOMBRE ProductoZ 3 3 10.0
SALARIO ND
Automatizacin 10 ... 10 10.0
John 30.000 5 10 10.0
Automatizacin 10
Franklin 40.000 5 ND COUNT(*) AVG(SALARIO) 10 35.0
Automatizacin 10
Ramesh ... 38.000 ... 5 5 4 33250 20 10.0
Reorganizacin 20
Joyce 25.000 5 4 3 31000 Reorganizacin 20 20 15.0
Alicia 25.000 4 1 1 55000 Reorganizacin 20 20 nulo
Jennifer 43.000 4
Nuevas_prestaciones 30 30 5.0
Ahmad 25.000 4
Fig. 8.4 (a) Nuevas_prestaciones 30 30 20.0
Jaime 55.000 1
Nuevas_prestaciones 30 30 30.0
CREATE TABLE VEHI-ITINE ( Analizar todas las R.I. violadas por cada operacin cuando
Cod-bast INTEGER NOT NULL,
Cod-iti INTEGER NOT NULL,
se ejecuta sobre la BD de la figura siguiente:
Fecha DATE,
PRIMARY KEY (Cod-bast, Cod-iti), a. INSERT INTO CUENTA VALUES (7, 7, 20000, null, null)
FOREIGN KEY (Cod-bast) REFERENCES VEHICULO (Cod-bast)
ON DELETE CASCADE ON UPDATE CASCADE, b. INSERT INTO CLIENTE VALUES (123, Pepi, null, null)
FOREIGN KEY (Cod-iti ) REFERENCES ITINERARIO (Cod-iti)
c. INSERT INTO CUENTA-CLIENTE VALUES (4, null)
ON DELETE CASCADE ON UPDATE CASCADE);
d. INSERT INTO CUENTA VALUES (10, 4, 100000, 2, 3)
CREATE TABLE POR-DONDE (
Cod-iti INTEGER NOT NULL, e. DELETE FROM CLIENTE WHERE DNI=999
Cod-c INTEGER NOT NULL,
Orden INTEGER, f. DELETE FROM CUENTA-CLIENTE WHERE NCta=0 and
DNI>000
g. UPDATE CUENTA-CLIENTE SET NCta=5, DNI=111
FOREIGN KEY (Cod-c) REFERENCES CIUDAD (Cod-c)
WHERE NCta=0 and DNI=111
ON DELETE CASCADE ON UPDATE CASCADE);
h. UPDATE CUENTA-CLIENTE SET NCta=3, DNI=222
WHERE NCta=0
i. UPDATE CLIENTE SET Nombre=Ataulfo A. WHERE
DNI>888
j. UPDATE CUENTA SET Banco=2, NSuc=2 WHERE NCta=0
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
(1,1) (0,N)
a. Datos de todos los bancos. EJEMPLAR ESTA_EN BIBLIOTECA
(0,N)
b. Direcciones de todos los bancos. Da
PRESTAMO FechaPrstamo Mes
c. DNI de los clientes que viven en la calle Urbieta. Ao
(0,N)
d. Diferentes TAE ofrecidos por el banco sito en la SOCIO
Plaza Circular 1. Puede haber varios
ejemplares con el
e. Datos de los clientes junto a los datos de todas sus BIBLIOTECA COD_BIB FACULTAD TFNO BIBLIOTECARIA mismo ttulo
CUENTA
b. Ttulos junto al nmero total de prstamos en cada ao
NmCta Inters Saldo Banco NmSucursal
entre 1990 y 2000. Slo aparecern si se han prestado al
CLIENTE menos a diez socios distintos en el mismo ao (evitando
que un socio sesgue la estadstica al tomar un ttulo varias
DNI Nombre Dir Tfno veces).
ttulo ao total de prstamos
PRSTAMO
Fundamentos de BD 1997 43
NmPrs TAE Importe Banco NmSucursal Fundamentos de BD 2000 59
BD:, Qu gozada! 1987 57
CUENTA_CLIENTE PRSTAMO_CLIENTE BD:, Qu gozada! 1993 34
NmCta DNI NmPrs DNI
C. P. G. 2007 FBD Tema 4 57 C. P. G. 2007 FBD Tema 4 58
Escribe las siguientes consultas en SQL sobre la BD anterior: 2. Nombres de aquellos buques que, en el mismo da, hayan
c. Lista de pares ordenados de bibliotecas que tengan salido de un puerto y llegado a otro puerto situado en un
ejemplares de libros de la misma rea. Por ejemplo, si las mar distinto al del puerto de partida, junto al nombre de
bibliotecas A, B y C tienen libros de informtica y las bi- los mares visitados.
bliotecas A y C de filosofa, debern aparecer:
<A,B,Informtica>, <A,C,Informtica>, 3. Nmero de pases visitados por cada buque que haya
<A,C,Filosofa>, <B,A,Informtica>,
visitado algn puerto.
<B,C,Informtica>, ...