Prof. L. Carámbula Sistemas de Bases de Datos II - ITS – EMT – CETP - 2010 S.Q.L. (Lenguaje de Consulta Estructurada) Consultas Avanzadas
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L.(Lenguaje de Consulta Estructurada)
Consultas Avanzadas
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.LS.Q.LProducto CartesianoProducto Cartesiano
( A x B)( A x B)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��Producto CartesianoProducto Cartesiano
�Por lo menos dos tablas vinculadas en el producto.
�El resultado de la consulta es la combinación de todas las tuplasde las dos tablas, que cumplan con la condición WHEREWHERE.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 14.a:�Mostrar el nombre y el apellido de todas las cajeras:
SELECTSELECT nombre, apellido
FROMFROM CAJERAS, PERSONAS
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 14.a:NombreNombre ApellidoApellido... ...
�Las cajeras son 10, las personas 99
�El resultado de la consulta es:
� 10 * 99 = 990 tuplas
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.LS.Q.L..TIPOS de JOIN TIPOS de JOIN
(reuni(reunióón)n)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�� JoinsJoins ((runionesruniones))
�Por lo menos dos tablas.
�El resultado de la consulta es la
reunión de las dos tablas.
� Se utilizan para obtener datos de
tablas relacionadas entre si.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 14.b:�Mostrar el nombre y el apellido de todas las cajeras:
SELECTSELECT nombre, apellido
FROMFROM CAJERAS, PERSONAS
WHEREWHERE CI_CAJ = CICI_CAJ = CI
CONDICIÓN DE JOIN (REUNIÓN)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 14.b:NombreNombre ApellidoApellidoPatricia Jentancur
Noelia Tallusche
Lucia Socca
Valentina Mazos
... ...
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 15:�Mostrar el total de cada producto:
SELECTSELECT cantidad * precio TOTAL
FROMFROM PRODUCTOS, FACTURAN
WHEREWHERE ID_PROD = ID_PRODID_PROD = ID_PROD
CONDICIÓN DE JOIN (UNIÓN)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 15:�Mostrar el total de cada producto:
SELECTSELECT cantidad * precio TOTAL
FROMFROM PRODUCTOS, FACTURAN
WHEREWHERE ID_PROD = ID_PRODID_PROD = ID_PROD
El atributo tiene el mismo nombre en las dos tablas, hay que indicar de que tabla es cada uno
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 15:�Mostrar el total de cada producto:
SELECTSELECT cantidad * precio TOTAL
FROMFROM PRODUCTOS, FACTURAN
WHEREWHERE PRODUCTOSPRODUCTOS..ID_PRODID_PROD ==
FACTURANFACTURAN..ID_PRODID_PROD
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 15:�Mostrar el total de cada producto:
SELECTSELECT cantidad * precio TOTAL
FROMFROM PRODUCTOS PP,
FACTURAN FF
WHEREWHERE PP..ID_PRODID_PROD =F=F..ID_PRODID_PRODSe puede utilizar un alias para las tablas
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 15:�Mostrar el total de cada producto:
SELECTSELECT cantidad * precio TOTAL
FROMFROM PRODUCTOS PP,
FACTURAN FF
WHEREWHERE PP..ID_PRODID_PROD =F=F..ID_PRODID_PRODSe puede utilizar un alias para las tablas
Alias de Producto
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 15:�Mostrar el total de cada producto:
SELECTSELECT cantidad * precio TOTAL
FROMFROM PRODUCTOS PP,
FACTURAN FF
WHEREWHERE PP..ID_PRODID_PROD =F=F..ID_PRODID_PRODSe puede utilizar un alias para las tablas
Alias de Facturan
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��CompatiblesCompatibles
�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. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�Para los siguientes tipos de consultas relacionales, las tablas vinculadas deben ser COMPATIBLES.
��UniUnióónn
��IntersecciInterseccióónn
��DiferenciaDiferencia
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��UniUnióónn
�El número 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. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 16:�Mostrar el apellido de todas las
personas, conjuntamente con el
quebranto de caja o el número de
cliente
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 16:SELECTSELECT APELLIDO, NUMERO “No/Quebranto”
FROMFROM PERSONAS, CLIENTES
WHEREWHERE CI = CI_CLICI = CI_CLI
UNION ( UNION ( SELECTSELECT APELLIDO, QUEBRANTO
FROMFROM PERSONAS, CAJERAS
WHEREWHERE CI = CI_CAJ)CI = CI_CAJ)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��IntersecciInterseccióónn
�El número 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. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 17.a:�Mostrar el apellido y el nombre de las
cajeras que han efectuado alguna
venta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 17.a:SELECTSELECT APELLIDO, NOMBREFROMFROM PERSONAS, CAJERASWHEREWHERE CI = CI_CAJ ANDAND CI_CAJ IN (CI_CAJ IN (
SELECTSELECT CI_CAJCI_CAJFROMFROM FACTURAN))
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��DiferenciaDiferencia
�El número 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. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 18.a:�Mostrar el apellido y el nombre de las
cajeras que NONO han efectuado alguna
venta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 18.a:SELECTSELECT APELLIDO, NOMBREFROMFROM PERSONAS, CAJERASWHEREWHERE CI = CI_CAJ ANDAND CI_CAJ NOT IN (CI_CAJ NOT IN (
SELECTSELECT CI_CAJCI_CAJFROMFROM FACTURAN))
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��SubconsultasSubconsultas
��WHEREWHERE columna [NOT] IN[NOT] IN ...
�Intersección [Diferencia]
��WHEREWHERE columna [[ALL|SOME|ANYALL|SOME|ANY]] ...
��WHEREWHERE [NOT] EXISTS[NOT] EXISTS ...
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��SubconsultasSubconsultas��WHEREWHERE columna op_rel [[ALL|SOME|ANYALL|SOME|ANY]]
(subcosulta)
�Se ejecuta la subconsulta y luego la consulta para aquellas tuplas que cumplan con la condición.��WHEREWHERE columna > ALLALL (subconsulta)
�el valor de la columna es mayor que todos los valores de la subconsulta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 19:�Mostrar el nombre y el apellido de las cajeras que tengan un quebranto MAYORMAYORque TODASTODAS las otras cajeras
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 19:SELECTSELECT APELLIDO, NOMBRE
FROMFROM PERSONAS, CAJERAS
WHEREWHERE CI = CI_CAJ
ANDAND QUEBRANTO >= ALL>= ALL (
SELECTSELECT QUEBRANTO
FROMFROM CAJERAS)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��SubconsultasSubconsultas
��WHEREWHERE columna op_rel [[ALL|SOME|ANYALL|SOME|ANY]]
(subcosulta)
��WHEREWHERE columna > SOMESOME (subconsulta)
• el valor de la columna es mayor que
algunos (más de dos) de los valores
de la subconsulta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 20:�Mostrar el nombre y el apellido de las cajeras que tengan un quebranto MAYORMAYORque ALGUNASALGUNAS de las otras cajeras
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 20:SELECTSELECT APELLIDO, NOMBRE
FROMFROM PERSONAS, CAJERAS
WHEREWHERE CI = CI_CAJ
ANDAND QUEBRANTO > SOME > SOME (
SELECTSELECT QUEBRANTO
FROMFROM CAJERAS)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��SubconsultasSubconsultas
��WHEREWHERE columna op_rel [[ALL|SOME|ANYALL|SOME|ANY]]
(subcosulta)
��WHEREWHERE columna > ANYANY (subconsulta)
• el valor de la columna es mayor que
uno de los valores de la subconsulta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 21:�Mostrar el nombre y el apellido de las cajeras que tengan un quebranto MAYORMAYORque UNAUNA de las otras cajeras
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 21:SELECTSELECT APELLIDO, NOMBRE
FROMFROM PERSONAS, CAJERAS
WHEREWHERE CI = CI_CAJ
ANDAND QUEBRANTO > ANY > ANY (
SELECTSELECT QUEBRANTO
FROMFROM CAJERAS)
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��SubconsultasSubconsultas
��WHEREWHERE EXISTS EXISTS (subconsulta)
�Cuando existan tuplas resultantes
de la subconsulta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 17.b:�Mostrar el apellido y el nombre de las
cajeras que han efectuado alguna
venta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 17.b:SELECTSELECT APELLIDO, NOMBREFROMFROM PERSONAS, CAJERAS CWHEREWHERE CI = CI_CAJ ANDAND EXISTS (EXISTS (
SELECTSELECT CI_CAJCI_CAJFROMFROM FACTURAN FWHEREWHERE C.CI_CAJ = F.CI_CAJ))
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
��SubconsultasSubconsultas
��WHEREWHERE NOT EXISTS NOT EXISTS
(subconsulta)
�Cuando no existan tuplas
resultantes de la subconsulta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 18.b:�Mostrar el apellido y el nombre de las
cajeras que NONO han efectuado alguna
venta.
Prof. L. CarámbulaSistemas de Bases de Datos II - ITS – EMT – CETP - 2010
S.Q.L. - Instrucción SELECT
�CONSULTA 18.b:SELECTSELECT APELLIDO, NOMBREFROMFROM PERSONAS, CAJERAS CWHEREWHERE CI = CI_CAJ ANDAND NOT EXIST (NOT EXIST (
SELECTSELECT CI_CAJCI_CAJFROMFROM FACTURAN FWHEREWHERE C.CI_CAJ = F.CI_CAJ))