Está en la página 1de 42

Prof. L.

Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010


S.Q.L.
(Lenguaje de Consulta Estructurada)
Consultas Avanzadas
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L
S.Q.L
Producto Cartesiano
Producto Cartesiano
( A x B)
( A x B)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Producto Cartesiano
Producto Cartesiano
Por lo menos dos tablas
vinculadas en el producto.
El resultado de la consulta es la
combinacin de todas las tuplas
de las dos tablas, que cumplan con
la condicin
WHERE
WHERE.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 14.a:
Mostrar el nombre y el apellido de
todas las cajeras:
SELECT
SELECT nombre, apellido
FROM
FROM CAJERAS, PERSONAS
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 14.a:
Nombre
Nombre
Apellido
Apellido
... ...
Las cajeras son 10, las personas 99
El resultado de la consulta es:
10 * 99 = 990 tuplas
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L
S.Q.L
.
.
TIPOS de JOIN
TIPOS de JOIN
(reuni
(reuni

n)
n)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Joins
Joins
(
(
runiones
runiones
)
)
Por lo menos dos tablas.
El resultado de la consulta es la
reunin de las dos tablas.
Se utilizan para obtener datos de
tablas relacionadas entre si.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 14.b:
Mostrar el nombre y el apellido de
todas las cajeras:
SELECT
SELECT nombre, apellido
FROM
FROM CAJERAS, PERSONAS
WHERE
WHERE
CI_CAJ = CI
CI_CAJ = CI
CONDICIN DE JOIN (REUNIN)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 14.b:
Nombre
Nombre
Apellido
Apellido
Patricia Jentancur
Noelia Tallusche
Lucia Socca
Valentina Mazos
... ...
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 15:
Mostrar el total de cada producto:
SELECT
SELECT cantidad * precio TOTAL
FROM
FROM PRODUCTOS, FACTURAN
WHERE
WHERE
ID_PROD = ID_PROD
ID_PROD = ID_PROD
CONDICIN DE JOIN (UNIN)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 15:
Mostrar el total de cada producto:
SELECT
SELECT cantidad * precio TOTAL
FROM
FROM PRODUCTOS, FACTURAN
WHERE
WHERE
ID_PROD = ID_PROD
ID_PROD = ID_PROD
El atributo tiene el mismo nombre en las dos
tablas, hay que indicar de que tabla es cada uno
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 15:
Mostrar el total de cada producto:
SELECT
SELECT cantidad * precio TOTAL
FROM
FROM PRODUCTOS, FACTURAN
WHERE
WHERE
PRODUCTOS
PRODUCTOS
.
.
ID_PROD
ID_PROD
=
=
FACTURAN
FACTURAN
.
.
ID_PROD
ID_PROD
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 15:
Mostrar el total de cada producto:
SELECT
SELECT cantidad * precio TOTAL
FROM
FROM PRODUCTOS
P
P,
FACTURAN
F
F
WHERE
WHERE
P
P
.
.
ID_PROD
ID_PROD
=F
=F
.
.
ID_PROD
ID_PROD
Se puede utilizar un alias para las tablas
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 15:
Mostrar el total de cada producto:
SELECT
SELECT cantidad * precio TOTAL
FROM
FROM PRODUCTOS
P
P,
FACTURAN
F
F
WHERE
WHERE
P
P
.
.
ID_PROD
ID_PROD
=F
=F
.
.
ID_PROD
ID_PROD
Se puede utilizar un alias para las tablas
Alias de Producto
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 15:
Mostrar el total de cada producto:
SELECT
SELECT cantidad * precio TOTAL
FROM
FROM PRODUCTOS
P
P,
FACTURAN
F
F
WHERE
WHERE
P
P
.
.
ID_PROD
ID_PROD
=F
=F
.
.
ID_PROD
ID_PROD
Se puede utilizar un alias para las tablas
Alias de Facturan
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Compatibles
Compatibles
Dos tablas o consultas A y B son
compatibles cuando:
tienen la misma cantidad de
columnas.
se corresponden los dominios en
el mismo orden.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
Para los siguientes tipos de
consultas relacionales, las tablas
vinculadas deben ser
COMPATIBLES.

Uni
Uni

n
n

Intersecci
Intersecci

n
n

Diferencia
Diferencia
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Uni
Uni

n
n
El nmero de filas en la consulta
va ser igual a la suma de las filas
de cada tabla o consulta.
Las tablas deben ser compatibles.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 16:
Mostrar el apellido de todas las
personas, conjuntamente con el
quebranto de caja o el nmero de
cliente
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 16:
SELECT
SELECT APELLIDO, NUMERO No/Quebranto
FROM
FROM PERSONAS, CLIENTES
WHERE
WHERE
CI = CI_CLI
CI = CI_CLI
UNION (
UNION (
SELECT
SELECT APELLIDO, QUEBRANTO
FROM
FROM PERSONAS, CAJERAS
WHERE
WHERE
CI = CI_CAJ)
CI = CI_CAJ)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Intersecci
Intersecci

n
n
El nmero de filas de la consulta
va ser igual a la cantidad de las
filas iguales en ambas tablas o
consultas.
Las tablas deben ser compatibles.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 17.a:
Mostrar el apellido y el nombre de las
cajeras que han efectuado alguna
venta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 17.a:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS
WHERE
WHERE CI = CI_CAJ
AND
AND
CI_CAJ IN (
CI_CAJ IN (
SELECT
SELECT
CI_CAJ
CI_CAJ
FROM
FROMFACTURAN
)
)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Diferencia
Diferencia
El nmero de filas de la consulta
va ser igual a la cantidad de filas
no incluidas en la otra tabla o
consulta.
Las tablas deben ser compatibles.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 18.a:
Mostrar el apellido y el nombre de las
cajeras que
NO
NO han efectuado alguna
venta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 18.a:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS
WHERE
WHERE CI = CI_CAJ
AND
AND
CI_CAJ NOT IN (
CI_CAJ NOT IN (
SELECT
SELECT
CI_CAJ
CI_CAJ
FROM
FROMFACTURAN
)
)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Subconsultas
Subconsultas

WHERE
WHERE columna
[NOT] IN
[NOT] IN...
Interseccin [Diferencia]

WHERE
WHERE columna
[
[
ALL|SOME|ANY
ALL|SOME|ANY
]
] ...

WHERE
WHERE
[NOT] EXISTS
[NOT] EXISTS ...
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Subconsultas
Subconsultas

WHERE
WHERE columna op_rel [ [ALL|SOME|ANY ALL|SOME|ANY] ]
(subcosulta)
Se ejecuta la subconsulta y luego la
consulta para aquellas tuplas que
cumplan con la condicin.

WHERE
WHERE columna >
ALL
ALL (subconsulta)
el valor de la columna es mayor que
todos los valores de la subconsulta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 19:
Mostrar el nombre y el apellido de las
cajeras que tengan un quebranto
MAYOR
MAYOR
que
TODAS
TODAS las otras cajeras
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 19:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS
WHERE
WHERE CI = CI_CAJ
AND
AND QUEBRANTO
>= ALL
>= ALL (
SELECT
SELECT QUEBRANTO
FROM
FROMCAJERAS)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Subconsultas
Subconsultas

WHERE
WHERE columna op_rel [ [ALL|SOME|ANY ALL|SOME|ANY] ]
(subcosulta)

WHERE
WHERE columna >
SOME
SOME (subconsulta)
el valor de la columna es mayor que
algunos (ms de dos) de los valores
de la subconsulta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 20:
Mostrar el nombre y el apellido de las
cajeras que tengan un quebranto
MAYOR
MAYOR
que
ALGUNAS
ALGUNAS de las otras cajeras
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 20:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS
WHERE
WHERE CI = CI_CAJ
AND
AND QUEBRANTO
> SOME
> SOME (
SELECT
SELECT QUEBRANTO
FROM
FROMCAJERAS)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Subconsultas
Subconsultas

WHERE
WHERE columna op_rel [ [ALL|SOME|ANY ALL|SOME|ANY] ]
(subcosulta)

WHERE
WHERE columna >
ANY
ANY (subconsulta)
el valor de la columna es mayor que
uno de los valores de la subconsulta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 21:
Mostrar el nombre y el apellido de las
cajeras que tengan un quebranto
MAYOR
MAYOR
que
UNA
UNA de las otras cajeras
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 21:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS
WHERE
WHERE CI = CI_CAJ
AND
AND QUEBRANTO
> ANY
> ANY (
SELECT
SELECT QUEBRANTO
FROM
FROMCAJERAS)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Subconsultas
Subconsultas

WHERE
WHERE
EXISTS
EXISTS (subconsulta)
Cuando existan tuplas resultantes
de la subconsulta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 17.b:
Mostrar el apellido y el nombre de las
cajeras que han efectuado alguna
venta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 17.b:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS C
WHERE
WHERE CI = CI_CAJ
AND
AND
EXISTS (
EXISTS (
SELECT
SELECT
CI_CAJ
CI_CAJ
FROM
FROMFACTURAN F
WHERE
WHERE C.CI_CAJ = F.CI_CAJ
)
)
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT

Subconsultas
Subconsultas

WHERE
WHERE
NOT EXISTS
NOT EXISTS
(subconsulta)
Cuando no existan tuplas
resultantes de la subconsulta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 18.b:
Mostrar el apellido y el nombre de las
cajeras que
NO
NO han efectuado alguna
venta.
Prof. L. Carmbula Sistemas de Bases de Datos II - ITS EMT CETP - 2010
S.Q.L. - Instruccin SELECT
CONSULTA 18.b:
SELECT
SELECT APELLIDO, NOMBRE
FROM
FROM PERSONAS, CAJERAS C
WHERE
WHERE CI = CI_CAJ
AND
AND
NOT EXIST (
NOT EXIST (
SELECT
SELECT
CI_CAJ
CI_CAJ
FROM
FROMFACTURAN F
WHERE
WHERE C.CI_CAJ = F.CI_CAJ
)
)

También podría gustarte