Professional Documents
Culture Documents
SQL
restringidas *
En este curso NO se cubren todos los aspectos de SELECT.
No se estudian, por ejemplo, SELECT anidados o la cláusula HAVING
(consultar el temario de la asignatura).
• SQL:
– Lenguaje de Definición de Datos (LDD)
– Lenguaje de Manipulación de Datos (LMD):
consulta y actualización
– Definición de vistas
– Especificación de seguridad y autorización
– Definición de restricciones de integridad
– Especificación de control de transacciones
– Reglas para inclusión en lenguajes (C, PASCAL,...)
• Nos centraremos en SQL2
SQL Mod. Relacional
Tabla Relación
Fila Tupla
Columna Atributo
Elementos
Restricciones
Vistas
...
de un
esquema Dominios
Autorizaciones
Fig 8.1(b)
Atributos
Valor por
Atributos
• 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
• Definición de atributos:
– NOT NULL: no se permite que el atributo tome valor nulo
– DEFAULT 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
• Especificación 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
• Añadir 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á más adelante)
– NOT NULL no está permitido
• Borrar columnas:
ALTER TABLE EMPRESA.EMPLEADO DROP
DIRECCIÓN CASCADE;
– CASCADE borra también las restricciones
(constraints) y vistas que hagan referencia a la
columna (DIRECCIÓN)
– RESTRICT sólo borra la columna (DIRECCIÓN) si no
hay restricciones ni vistas que le hagan referencia
• Modificar la definición de columnas:
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE DROP DEFAULT;
ALTER TABLE EMPRESA.DEPARTAMENTO ALTER
NSS_JEFE SET DEFAULT ‘333445555’;
– Elimina la definición DEFAULT ‘888665555’
– Inserta una nueva definición de DEFAULT para el
atributo NSS_JEFE
FBD Tema 5 – Dpto. LSI - Donostia 10
Evolución 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 definición (por ejemplo en
CREATE TABLE)
• Añadir restricciones:
ALTER TABLE EMPRESA.EMPLEADO ADD
CONSTRAINT CLE_SUPERV_EMP
FOREIGN KEY (NSS_SUPERV) REFERENCES
EMPLEADO(NSS)
ON DELETE SET NULL
ON UPDATE CASCADE;
El
Eltemario
temariode NOcubre
SELECT columnas deFBD
FBDNO cubre
FROM tablas
todos los aspectos de
todos los aspectos de SELECT. .
SELECT
En
Enparticular NOestudiaremos
particularNO estudiaremos
[WHERE condición]
SELECTanidados
SELECT anidados
– Secuencia σ- π
– Condiciones en WHERE:
{=, <>, <, >, <=, >=}, AND, OR, NOT
El resultado de una
consulta SQL tuplas repetidas
puede contener ...
EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN ...
... SEXO SALARIO NSS_SUPERV ND
DEPARTAMENTO
NOMBRED NÚMEROD NSS_JEFE FECHA_INIC_JEFE
– Secuencia: |×| - σ - π
– WHERE:condiciones de σ y |×|
4
πNÚMEROP, NÚMD, APELLIDO, DIRECCIÓN, FECHA_NCTO (JEFE_DP_PR)
1
PR_STF ←
σLOCALIZACIÓNP=‘Stafford’(PROYECTO)
2
DP_CN←
3
PR_STF |×|NÚMD=NÚME- JEFE_DP_PR←
ROD DEPARTAMENTO
DP_CN |×| NSS_JEFE
= NSS EMPLEADO
EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN ...
... SEXO SALARIO NSS_SUPERV NÚMEROD
DEPARTAMENTO
NOMBRE NÚMEROD NSS_JEFE FECHA_INIC_JEFE
EMPLEADO E
NOMBRE INIC APELLIDO NSS FECHA_NCTO ... NSS_SUPERV ND
C1C:SELECT *
FROM EMPLEADO
WHERE ND=5
C1D:SELECT *
FROM EMPLEADO, DEPARTAMENTO
WHERE NOMBRED=‘Investigación’ AND
ND=NÚMEROD
C10A:SELECT *
FROM EMPLEADO, DEPARTAMENTO
Operador BETWEEN:
• Información 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
ON ND=NÚMEROD) AS ED ...
EMPLEADO DEPARTAMENTO
NOMBREP SALARIO ND NOMBRED NÚMEROD
John NULL 5 Investigación 5
Franklin 15.000 5 Administración 4
...
Ramesh ... 10.000 ... 5 Dirección 1
Joyce 10.000 5
Alicia 10.000 4
Jennifer 20.000 4 SUM(SA- MAX(SA- MIN(SA- AVG(SAL-
C19:
Ahmad 20.000 4 LARIO) LARIO) LARIO) ARIO)
EMPLEADO C23:
NOMBREP SALARIO ND COUNT(DISTINCT SALARIO)
John NULL 5 3
Franklin 15.000 NULL C23’:
Ramesh 10.000 ... 5
Joyce
... 10.000 5
COUNT( SALARIO)
7
Alicia 10.000 4 C23’’:
Jennifer 20.000 4 COUNT( *)
Ahmad 20.000 4
8
James 20.000 1
EMPLEADO C24:
NOMBREP SALARIO ND ND COUNT(*) AVG(SALARIO)
John 30.000 5 5 4 16.250
Franklin 15.000 5 4 3 16.666
Ramesh 10.000 5 1 1 20.000
Joyce
... 10.000
... 5
Fig. 8.4 (a)
Alicia 10.000 4
Jennifer 20.000 4
Ahmad 20.000 4 Los valores
James 20.000 1 nulos forman su
propio grupo
EMPLEADO C24:
NOMBREP SALARIO ND ND COUNT(*) AVG(SALARIO)
NO se puede usar
el nuevo nombre
(AS) del atributo
del resultado en
ORDER BY
WHERE (NOMBRE,EDAD,ESTADO_CIVIL) =
(“José María”, 18, ‘S’)
WHERE C1<T1 OR
(C1=T1 AND C2<T2) OR
(C1=T1 AND C2=T2 AND C3<T3)
8.14
b) Número de empleados de sexo masculino de cada
departamento
FBD Tema 5 – Dpto. LSI - Donostia 44
Ejercicio: consultas SQL EMPRESA (2)
(8.13 Elmasri/Navathe 02)
EMPLEADO
NOMBRE INIC APELLIDO NSS FECHA_NCTO DIRECCIÓN ...
... SEXO SALARIO NSS_SUPERV ND
DEPARTAMENTO
NOMBRED NÚMEROD NSS_JEFE FECHA_INIC_JEFE
LOCALIZACIONES_DEPT
NÚMEROD LOCALIZACIÓND
PROYECTO
NOMBREP NÚMEROP LOCALIZACIÓNP NÚMD
TRABAJA_EN
NSSE NP HORAS
DEPENDIENTE
NSSE NOMBRE_DEPENDIENTE SEXO FECHA_NCTO PARENTESCO
EDITORIAL COPIAS_LIBRO
Nombre Dirección Teléfono IdLibro IdSucursal NúmCopias
PRÉSTAMOS
IdLibro IdSucursal NúmTarjeta ... Figura 7.20:
... FechaSale FechaDevol Esquema de BDR
para la BD
SUCURSAL_BIBLIOTECA BIBLIOTECA
IdSucursal NombreSucursal Dirección
LECTOR
NúmTarjeta Nombre Dirección Teléfono
CURSO
NombreCurso NúmCurso HorasCrédito Departamento
REQUISITO
NúmCurso NúmRequisito
SECCION
IdentSección NúmCurso Semestre Año Profesor
INFORME_
CALIFICACIONES
NúmAlumno IdentSección Nota
FBD Tema 5 – Dpto. LSI - Donostia 48
Ejercicio: consultas SQL BANCOS
BANCO SUCURSAL
Código Nombre Banco NúmSucursal Ciudad Dir
CUENTA
NúmCta Interés Saldo Banco NúmSucursal
CLIENTE
DNI Nombre Dir Tfno
PRÉSTAMO
NúmPrés TAE Importe Banco NúmSucursal
CUENTA_CLIENTE PRÉSTAMO_CLIENTE
NúmCta DNI NúmPrés DNI
(1,1) (0,N)
EJEMPLAR ESTA_EN BIBLIOTECA
(0,N)
Día
PRESTAMO FechaPréstamo Mes
Año
(0,N)
SOCIO
Puede haber varios
ejemplares con el
BIBLIOTECA COD_BIB FACULTAD TFNO BIBLIOTECARIA mismo título
EJEMPLAR COD_EJE TÍTULO AUTOR EDITORIAL ÁREA COD_BIB
Persona DNI Nombre Edad NombreZona NúmCasa Calle NúmBloque Planta Puerta
Premio Categoría Año Euros Código Proyectada Código Nom Número FechaInicioFechaFin
CURSA DNI IdAsignatura FICHA DNI IdAsignatura Tema FechaPetición NúmeroCopias FechaRecogida
TIPO RECORD CódigoDeporte NúmeroIdDeportista Fecha Hora Tipo DESTACA CódigoDeporte NúmeroIdDeportista
VIAJE DestinoVFechaSalida Días PrecioDía CiudadSalida DNI HOTEL Id_Hotel Nombre Localidad Capacidad
LId
HOTEL_
VIAJE DestinoVFechaSalida Id_Hotel CLIENTEDNI Nombre Dirección N_Tfno GUÍA
ÍADDNI Nombre N_Tfno
EXCURSIÓN_
OPCIONAL DestinoVFechaSalida Número DestinoExcursión HoraSalida LugarSalida Precio IDIOMA
ADDNI Idioma
HOTEL_VIAJE EXCUR_OPC
_CLIENTE DestinoVFechaSalida IdHotel DNI NúmeroNoches _CLIENTE DestinoVFechaSalida Número DNI
Noserepite
RESEspecieCrotalRazaFechaNctoMataderoCrotalPadreCrotalMadreDNIGranjaNomGranja
especieenlas
claves
GRANJADNINombreDireccionTfnoAdministrador GANADERODNINombreE-mail extranjerasde
padreymadre
porserla
ENFERMEDADNombre NombreDuración
TRATAMIENTON misma
SÍNTOMAEnfermedadSintoma MEDICAMENTOTratamientoMedicamento
Calle
NombreZona Categoría Dir NPisos
Número
1 N
ZONA_URBANA BLOQUE_CASAS
1 1
Planta
Número N
N N
N P_P
CASA_PARTICULAR POSEEC POSEEP PISO Puerta
2
M 1 1
M M M2
N N
VIVEC PERSONA VIVEP
Nombre Dirección
PERSONA
ESPECIE
1 M
N
NombreCientífico MejorEjemplar
N
Origen
EsPrincipal
MARIPOSA
Hábitat
1
EsperanzaVida
N
Colores 1
N
N 1
EJEMPLAR COLECCIÓN
Categoría Año
Euros Cód
(0,1) (0,N)
CONCEDIDO PREMIO CONCEDIDO
(0,N) (0,N)
(1,N) PRODUCIDA (0,N)
Código
Título PELÍCULA (1,N) ACTOR (0,N) PERSONA
Género
(1,N) (1,N) DIRIGIDA (0,N)
Fecha Sexo
Inicio PROYECTADA Nombre Nacionalidad
FechaFin
(1,N)
(1,1) (1,N)
Número SALA DE CINE
Aforo Nom Tfno Dirección
FBD Tema 5 – Dpto. LSI - Donostia 71
ER-Relacional
Junio y Septiembre 02
Cód Direcc Tfno. Cód País (1,N) Fecha Resultado
Equip1
(1,1) (1,N) (1,N) (1,1)
HOTEL RESIDE EQUIPO JUEGA PARTIDO
Equip2
COMPUESTO POR
Fecha Lugar
(1,1) DNI
(1,1) (0,N)
CONTROL PASADO
ANTIDOPAJE A
JUGADOR Nombre
FechaN
Clubes_Año Goles
Nombre
DNI Cursos Cód_Pueblo Nombre Provincia
(1,1) (0,N)
ALUMNO VIVE_EN PUEBLO
(1,1) (1,N)
(1,N)
Fecha_Inscripción
ESTUDIA_EN VIAJA_EN POSEE
(0,N) (0,N)
(1,1)
(1,N) (1,1) (1,N) (1,N)
CENTRO CONTRATA_A AUTOBÚS PARA_EN PARADA
Septiembre 2003
MAILLOT
Septiembre 2004
Fecha
FechaCom Ciudad Tipo
Hora
RECORD
(1,1)
NúmeroId
CONSIGUE (0,N)
(0,N) Nombre
Código
(1,N) (1,N) Apellido
Nombre DEPORTE PARTICIPA DEPORTISTA
(0,N)
Dirección
Historia (0,N)
(0,N) (1,1) Teléfono
DESTA CA
Equipamiento (0,N)
TIENE (0,1) ACOMPA ÑA FechaCom
SELECCIÓN CONSTA
Ciudad (1,N) FechaFin
(1,N) (1,1) (1,N)
Código
Nombre
EVENTO EQUIPO VOLUNTARIO
Fecha
NúmeroId
País Entrenador Idioma Nombre
Profesión
FBD Tema 5 – Dpto. LSI - Donostia Procedencia74
ER-Relacional
Junio 2005
DNI
Nombre
Destino
(0,N)
Ident LLEVA GUÍA N_Tfno
Fecha IdHotel
Salida (1,1) Idiomas
Días
Nombre
Precio día (1,N) (0,N)
VIAJE ASIGNADO HOTEL
Localidad
Precio total
(0,N) Capacidad
Ciudad salida M (1,N) (0,N) N
ASIGNADA ALOJADO
Nº Noches
Número (1,1) P (1,N) DNI
Septiembre 2005
Especie
Id Raza FechaNcto Matadero
Crotal