Equivalente en SQL de las operaciones de álgebra relacional del apunte
SELECCIÓN:
1.- select * from préstamo
where nombre_sucursal = ‘Navacerrada’;
2.- select * from préstamo
where importe > 1200;
3.- select * from préstamo
where nombre_sucursal like ‘Navacerrada’ and importe > 1200;
4.- select * from responsable_prestamo where nom_cte like nom_banquero;
PROYECCIÓN:
1.- select numero_prestamo, importe
from prestamo;
COMPOSICION DE OPERACIONES RELACIONALES:
1.- select nombre_cliente
from cliente
where ciudad_cliente = ‘Peguerinos’;
UNIÓN:
1.- select nombre_cliente from prestatario
UNION select nombre_cliente from impositor
DIFERENCIA (RESTA):
1.- select nombre_cliente from impositor
where nombre_cliente NOT IN (select nombre_cliente from prestatario);
PRODUCTO CARTESIANO:
1.- select *
FROM prestatario, préstamo;
Con renombramiento o alias de tabla:
select * from prestatario pt, préstamo po;
REUNIÓN NATURAL O JUNTA:
1.- select *
from prestatario pt, préstamo po
where pt.numero_prestamo = po.numero_prestamo;
Con proyección de un solo campo:
select nombre_cliente
from prestatario pt, préstamo po
where pt.numero_prestamo = po.numero_prestamo;
INTERSECCIÓN:
1.- select nombre_cliente from prestatario
where nombre_cliente IN (select nombre_cliente from impositor);
OTRO EJEMPLO DE REUNIÓN NATURAL O JUNTA:
1.- select nombre_cliente, numero_prestamo, importe
from prestatario pt, préstamo po
where pt.numero_prestamo = po.numero_prestamo;
DIVISIÓN:
Dadas las tablas:
IMPOSITOR (nombre_cliente, numero_cuenta)
CUENTA(numero_cuenta, nombre_sucursal, importe)
SUCURSAL(nombre_sucursal, ciudad_sucursal)
1.- select nombre_cliente, nombre_sucursal
from impositor i, cuenta c
where i.numero_cuenta = c.numero_cuenta
and nombre_sucursal IN
(select nombre_sucursal
from sucursal
where ciudad_sucursal = ‘Arganzuela’);
PROYECCIÓN GENERALIZADA:
1.- select nombre_cliente, limite – saldo_credito
from información_credito;
Alternativa usando alias de campo:
select nombre_cliente, limite – saldo_credito as disponible
from información_credito;
AGREGACIÓN:
1.- select SUM(sueldo)
from trabajo_por_horas;
2.- select COUNT(DISTINCT nombre_sucursal)
from trabajo_por_horas;
3.- select SUM(sueldo)
from trabajo_por_horas
GROUP BY nombre_sucursal;
4.- select SUM(sueldo) as ‘Suma de sueldos’,
MAX(sueldo) as ‘Sueldo máximo’
from trabajo_por_horas
GROUP BY nombre_sucursal;
REUNIÓN EXTERNA:
Reunión natural para comparación:
1.- select *
from empleado e
INNER JOIN trabajo_a_tiempo_completo t
ON e.nombre_empleado = t.nombre_empleado;
Equivalente a:
select *
from empleado e, trabajo_a_tiempo_completo t
where e.nombre_empleado = t.nombre_empleado;
2.- REUNIÓN EXTERNA POR LA IZQUIERDA:
select *
from empleado e
LEFT JOIN trabajo_a_tiempo_completo t
ON e.nombre_empleado = t.nombre_empleado;
3.- REUNIÓN EXTERNA POR LA DERECHA:
select *
from empleado e
RIGHT JOIN trabajo_a_tiempo_completo t
ON e.nombre_empleado = t.nombre_empleado;
4.- REUNIÓN EXTERNA COMPLETA:
select *
from empleado e
FULL [EXTERNAL] JOIN trabajo_a_tiempo_completo t
ON e.nombre_empleado = t.nombre_empleado;