Académique Documents
Professionnel Documents
Culture Documents
4 Manipulacin de datos
2.4.3. El lenguaje relacional SQL-92
Structured Query Language (lenguaje estructurado de consulta)
Primer lenguaje de BD de alto nivel. Aos 70.
Diseado e implementado en el IBMs Research Laboratory (San Jos
- California), para el SGBD Relacional experimental System R
Primeras implementaciones:
ORACLE (finales 70) y poco despus INGRES
1
(4)
NSSJEFE ND
DEPARTAMENTO
NOMBRED NUMEROD NSSDIRE FECHAINICDIRE
OFICINA_DEPTO
NUMEROD OFICINA
PROYECTO
NOMBREP NUMEROP LUGARP
TRABAJA_EN
NSSE NUMP
NUMEROD
HORAS
FAMILIAR
NSSE NOMBRE_FAMILIAR SEXO FECHAN PARENTESCO
5
Orden SELECT:
Instruccin bsica de
obtencin de
informacin
donde:
<lista columnas>
<lista tablas>
<condicin>
(2)
<lista columnas>(<condicin> ( T ))
(3)
SELECT salario
FROM Empleado, Departamento
WHERE (nombred = Administracin OR nombred = Investigacin)
AND numerod=nd;
8
(5):
uso de *
(6):
omisin de WHERE
Seleccin incondicional
Equivale a una condicin TRUE para todas las filas
seleccin de todas las filas de...
una tabla (si la clusula FROM slo contiene una tabla), o
el producto cartesiano entre varias tablas (si FROM incluye ms de
una)
* Seleccionar todos los nss de empleados
SELECT nss
FROM Empleado;
* Obtener todas las combinaciones de nss de empleados y nombres de departamentos
10
(7):
cadenas de
Operador ||
Concatenacin de cadenas de caracteres
* Nombres completos en una sola columna de empleados con direccin en Higueras (Mxico)
(8):
aritmtica y tiempo
Operaciones aritmticas
Aplicacin de operadores aritmticos ( + - * / ) sobre valores numricos
* Salarios de los empleados que trabajan en el proyecto ProductoX, tras un aumento del 10%
(9):
calificacin
(10):
seudnimos
Operador DISTINCT:
* Nombres de los proyectos en que participa el empleado de apellido Silva, ya sea como trabajador o
como gerente del departamento que controla el proyecto
18
Operador IN
v IN V
Indica si el valor v pertenece al conjunto de valores V
Devuelve TRUE si algn elemento e de V cumple que v = e
* nss de los empleados que trabajan en algn proyecto que no sea el 4 ni el 6
Operador ALL
v <op> ALL V,, <op> { , , , , <>, }
Compara una fila t con las filas resultado de una consulta anidada
S
Devuelve TRUE si alguna fila e de S cumple que t <op> e
* Nombres y apellidos de los empleados cuyo salario es menor que el de todos los empleados del
departamento 5
* Nombre y apellidos de cada empleado con familiares de igual nombre y sexo que l
SELECT nombre, apellido FROM Empleado
WHERE nss IN ( SELECT nsse FROM Familiar
WHERE nsse=nss AND nombre_familiar=nombre
AND sexo=sexo ); cmo evitar esta ambigedad?
(5):
correlacin
(6):
EXISTS
26
(y 7):
UNIQUE
(*se ver*)
29
FUNCIONES de
AGREGADAS
2.4 Manipulacin
datos: SQL-92
Funciones agregadas
DISTINCT
Uso de *
(2):
uso de * y de
Uso de DISTINCT
* Contar el n de valores distintos de salario que pueden cobrar los empleados
(y 3)
y correlacin
31
agrupacin
Las filas de cada grupo tendrn el mismo valor en las
columnas de agrupacin
(2)
Clusula HAVING
Siempre junto a GROUP BY
Condicin que deben cumplir los grupos de filas
asociados a cada valor de las columnas de agrupacin
Un grupo que no cumple la condicin, no es seleccionado
para el resultado
* Para cada proyecto en el que trabajen ms de dos empleados, obtener el nmero y nombre
del proyecto, y el n de empleados que trabajan en l
(y 3)
(* Consulta correcta *)
34
reunin de tablas
condicin de reunin
tabla reunida
35
36
obtener
(2)
Flexibilidad
41
(y 3)
En condiciones ideales...
Usuario: se preocupa slo de especificar la consulta
correctamente
SGBD: se ocupa de ejecutar la consulta de manera eficiente
(2)
(3):
Restricciones de Integridad
eliminar
4 filas
Propagacin de eliminaciones
Segn acciones de mantenimiento de la Integridad Referencial especificadas
con LDD en los CREATE TABLE (esquema de BD)
47
Propagacin de modificaciones
Si cambia un valor de clave candidata, este cambio se propaga
a valores de clave ajena de filas de otras tablas, si as se
especific en las acciones de mantenimiento de la Integridad Referencial en la
definicin de la tabla con CREATE TABLE
48
(y 2)
49
Restricciones de tabla...
de clave candidata,
de integridad de entidad,
de integridad referencial, o
restricciones de otro tipo
54
Cadena de caracteres
Longitud fija
CHAR(n) ( n: n caracteres )
Longitud variable VARCHAR(n)
( n: mximo n caracteres )
Cadena de Bits
Longitud fija
BIT(n) (n: n bits)
Longitud variable BIT VARYING(n) n:mx n bits. Por omisin n=1
55
56
60
(cont.)
61
La consulta de definicin
determina el contenido de la vista
contiene las tablas base: tablas o vistas de las que se
deriva la vista (tambin llamadas tablas de definicin)
CREATE VIEW Familiar_de_Empleado (empleado, familiar, parentesco)
AS SELECT nombre, nombre_familiar, parentesco
FROM Empleado, Familiar
WHERE nss = nsse;
64
nombre
apellido
nombrep
horas
Jos
Silva
Producto
X
32.5
Ramn
Nieto
Producto
Z
40.0
Jos
Silva
Producto
Y
07.5
Josefa
Barcel
Producto
X
20.0
Federico
Vizcarra Producto
Y
10.0
Federico
Vizcarra Producto
Z
10.0
Josefa
Barcel
20.0
Producto
66
Sentencia de usuario
Traduccin
70
73
74
76
Alteracin de dominios:
ALTER DOMAIN <nombre_dominio> ... ;
Eliminacin y Adicin de valor por defecto
Eliminacin y Adicin de Restricciones de Dominio
77
80
85
86
(y 2)
la restriccin es FALSE
88
Alteracin de un dominio
ALTER DOMAIN <nombre dominio> <accin>... ;
Permite aadir y eliminar restricciones de integridad de
dominio y valor por defecto
Explicado en el tema anterior
93
Opcin CASCADE
- El dominio es eliminado del INFORMATION_SCHEMA, junto con toda vista y RI
cuya definicin hace referencia al dominio
- Las RI de dominio asociadas no son eliminadas, sino que cada
columna definida sobre el dominio...
Es definida directamente sobre el tipo de datos subyacente al
dominio
Si no tiene DEFAULT explcito, toma el del dominio (si ste lo tena)
Hereda toda restriccin de integridad asociada al dominio,
- convertida en una restriccin de tabla,
- sustituyendo VALUE por el nombre de la columna
94
nombre obligatorio
*La paga mnima de los actores que actan en una pelcula es de 15.000
CREATE ASSERTION RI2_paga_minima
CHECK 15000 (SELECT MIN(paga) FROM Actua_en) ;
*Todo actor no protagonista de una pelcula cobra menos que cualquier protagonista
CREATE ASSERTION RI5_paga_actores
CHECK (NOT EXISTS (SELECT * FROM Actua_en ACT WHERE papel<>protagonista AND
paga >= ANY (SELECT paga FROM Actua_en PROTA
WHERE ACT.film=PROTA.film
AND PROTA.papel=protagonista));
este aserto...
- debe crearse una vez que ya exista alguna fila en DISTRIBUIDORA
- una operacin DELETE puede violarlo, pero nunca lo har un
INSERT
103
este aserto...
- Equivale a especificar UNIQUE( codG ) en el CREATE TABLE Guion ()
104
este aserto...
- Equivale a especificar...
Evento
Parametrizacin
Granularidad
Condicin
BEGIN ATOMIC
...
END;
Accin
108
114
(2)