Professional Documents
Culture Documents
nombre--cliente
(
nombre-sucursal = Casa Central
(cuenta))
nombre--cliente
(
nombre-sucursal = Casa Central
(prestamo))
Interseccin de conjuntos
Operacin binaria, que contiene las tuplas que son iguales en ambas relaciones (tablas). Las lista una sola
vez.
Ej.: Encontrar los clientes que tienen cuenta y prstamo en la CasaCentral
nombre--cliente
(
nombre-sucursal = Casa Central
(cuenta))
nombre--cliente
(
nombre-sucursal = Casa Central
(prestamo))
Diferencia de conjuntos
Operacin binaria, que contiene las tuplas que estn en una relacin (tabla) pero que no est en la otra.
Ej.: Encontrar los clientes que tienen cuenta pero que prstamo en la CasaCentral
nombre--cliente
(
nombre-sucursal = Casa Central
(cuenta))
-
nombre--cliente
(
nombre-sucursal = Casa Central
(prestamo))
Producto Natural (Concatenacin/Join)
Operacin binaria, que contiene las tuplas que son combinacin de dos relaciones (tablas) pero que tienen un
valor igual en un atributo que toma valores del mismo dominio en ambas relaciones (tablas).
Esta operacin surge como un producto cartesiano seguido de una operacin de seleccin. La seleccin se
realiza forzando la igualdad en aquellos atributos que estn en ambas relaciones y que toman valores del
mismo dominio (obviamente de aquellos que interesa aparear).
Ej.: Encontrar los clientes que tienen cuenta y prstamo en la CasaCentral
nombre_cliente
(
deposito.nombre-sucursal = prestamo.nombre sucursal and nombre sucursal =Casa Central
(cuenta
x prestamo)
||
nombre_cliente
(
nombre sucursal =Casa Central
(cuenta
deposito.nombre-sucursal = prestamo.nombre sucursal Prestamo)
5
Divisin
Esta operacin se establece en consultas que incluyen la frase para todos.
Sea el siguiente ejemplo: se quiere obtener los clientes que tienen cuenta en todas las sucursales de la ciudad
de Paran.
Las sucursales de la ciudad de Santa Fe se obtiene por medio de:
nombre-sucursal
(
ciudad-sucursal = Paran
(sucursal))
Los clientes y las sucursales donde tienen cuenta se obtiene por medio
nombre-cliente, nombre-sucursal
(depsito)
La consulta final resultante es:
nombre-cliente, nombre-sucursal
(depsito)
%
-sucursal
(
ciudad-sucursal = Paran
(sucursal))
La respuesta son solo los nombres de los clientes que cumplen con los valores de la sucursal que
corresponden a Paran
6
SQL
Sentencia SQL bsica
SELECT corresponde a la operacin de proyeccin aqu se especifican las columnas que se quieren mostrar
FROM corresponde al producto cartesiano, lista de relaciones (tablas) que se van a examinar
WHERE corresponde a la operacin de seleccin y/o producto natural aqu se especifican las condiciones
que deben cumpl las tuplas para que formen parte de la tabla respuesta
Operaciones del Algebra Relacional
Select *
from Prestamo
where monto >100000
Seleccin pura
Select Nombre-sucursal, nombre-cliente
from Prestamo
Proyeccin pura
Select Nombre-sucursal, nombre-cliente
from Prestamo
where monto >100000
Seleccin +Proyeccin (puede ser divisin
dependiendo de cmo se haga la consulta)
7
Select *
from prstamo, cliente Producto cartesiano
Select nombre, direccin
from prstamo, cliente
Producto natural
where cliente.numero-cliente
=prstamo.nmero-cliente
Las condiciones pueden
Select nombre, direccin
ser separadas por los operadores
from prstamo, cliente
lgicos and y or y por los
where cliente.numero- cliente
operadores de relacin
=prstamo.nmero-cliente
=, <>, >=, <=,>, < and cantidad >100000
Operaciones de conjunto
(select distinct nombre-cliente
from depsito
where nombre-sucursal = Casa Central)
union {all}
(select distinct nombre-cliente
from prstamo
where nombre-sucursal = Casa Central)
(select distinct nombre-cliente
from depsito
where nombre-sucursal = Casa Central)
intersect
(select distinct nombre-cliente
from prstamo
where nombre-sucursal = Casa Central)
Si no se pone distinct los duplicados tambin se
listan
(select distinct nombre-cliente
from depsito
where nombre-sucursal = Casa Central)
minus
(select distinct nombre-cliente
from prstamo
where nombre-sucursal = Casa Central)
8
El operador IN
El conector in prueba si se es miembro de un conjunto, donde el conjunto es una coleccin de valores
producidos por una clusula select. El conector not in prueba la no pertenencia al conjunto.
Encontrar todos los clientes que tienen un prstamo y una cuenta en la sucursal Casa Central .
Encontrar todos los clients que tienen un prstamo pero no tienen una cuenta en la sucursal Casa Central
select distinct nombre-cliente select distinct nombre-cliente
from prstamo
from prstamo
where nombre-sucursal = Casa Central
where nombre-sucursal =Casa Central
and nombre-cliente in
and nombre-cliente not in
(select nombre-cliente (select nombre-cliente
from depsito
from depsito
where nombre-sucursal = Casa Central)
where nombre-sucursal= Casa Central)
Variables de tupla
Las variables de tupla se definen en la clusula from.
Encontrar el nombre y la ciudad de todos los clientes que tienen un prestamo en alguna sucursal
select distinct T.nombre-cliente, ciudad-cliente
from prstamo S, cliente T
where S.nombre-cliente = T.nombre-cliente
En consultas que contienen subconsultas, se aplica una regla de mbito las variables de tupla.
En una subconsulta, est permitido usar slo variables de tupla definnidas e la misma subconsulta o en
cualquier consulta que contenga a la subconsulta Si una variable de tupla est definida tanto localmente como
globalmente (en una consulta que la contiene), se aplica la definicin local.
Las variables de tupla son muy tiles para comparar dos tuplas de la misma relacin.
9
Encontrar a todos los clientes que tienen una cuenta en la misma sucursal en la que Miele tiene una
cuenta
select distinct T.nombre-cliente
from depsito S, depsito T
where S.nombre-cliente = Miele and
S.nombre-sucursal = T.nombre-sucursal
Un camino alternativo para expresar esta consulta sera:
select distinct nombre-cliente
from depsito
where nombre-sucursal in
(select nombre-sucursal
from depsito
where nombre-cliente = Miele)
Comparacin de conjuntos
Sea la consulta Encontrar los nombres de todas las sucursales q un activo mayor que alguna sucursal
situada en Santa Fe.
select distinct T.nombre-sucursal
from sucursal T, sucursal S
where T.activo > S.activo and
S.ciudad-sucursal = Santa Fe
Es una comparacin mayor que, no podemos escribir la expresin usando la construccin in. La frase
mayor que algn se representa en SQL por > some
select nombre-sucursal
from sucursal
where activo > some
(select activo
from sucursal
where ciudad-sucursal = Santa Fe)
Lo que se compara aqu es el valor individual de cada tupla con el conjunto de valores que se obtienen en la
subconsulta anidada.
10
Comparacin de conjuntos
La comparacin devolver verdadero y se mostrar el resultado si la fila individual de la consulta externa es
(mayor, menor, menor-igual, etc.) que ANY (alguno), SOME (alguno) ALL (todos) los miembros del
conjunto devuelto por la subconsulta
SQL tambin permite las comparaciones < some, <= some, > some, >= some y <> some. La palabra clave
any es sinnimo de some en SQL.
Si quisiramos encontrar los nombres de las sucursales que tienen un activo mayor que todas las sucursales
de Santa Fe, deberamos usar la construccin > all.
select nombre-sucursal
from sucursal
where activo > all
(select activo
from sucursal
where ciudad-sucursal = Santa Fe)
Del mismo modo SQL permite las comparaciones < all, <= all, >all, >= all y <> all.