Está en la página 1de 7

República Bolivariana de Venezuela

Ministerio del Poder Popular


Para la Educación Universitaria
Universidad Politécnica Territorial
“José Antonio Anzoátegui”
PNF: Informática
Trayecto III
Sección 2

CONSULTA
AVANZADAS EN
BASE DE DATOS

Investigadores:
Profesora:
Oscarina Pericaguan C.I: 16.926.411
Ing. Humner Lenis

Barcelona, 23 de julio de 2021


CONSULTAS AVANZADAS

La unión de tablas

Esta operación se utiliza cuando tenemos dos tablas con las mismas
columnas y queremos obtener una nueva tabla con las filas de la
primera y las filas de la segunda. En este caso la tabla resultante tiene
las mismas columnas que la primera tabla (que son las mismas que las
de la segunda tabla).

Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros
antiguos y queremos una lista con todos los libros que tenemos. En este
caso las dos tablas tienen las mismas columnas, lo único que varía son
las filas, además queremos obtener una lista de libros (las columnas de
una de las tablas) con las filas que están tanto en libros nuevos como
las que están en libros antiguos, en este caso utilizaremos este tipo de
operación.

Cuando hablamos de tablas pueden ser tablas reales almacenadas en la


base de datos o tablas lógicas (resultados de una consulta), esto nos
permite utilizar la operación con más frecuencia ya que pocas veces
tenemos en una base de datos tablas idénticas en cuanto a columnas.
El resultado es siempre una tabla lógica.

Por ejemplo queremos en un sólo listado los productos cuyas


existencias sean iguales a cero y también los productos que aparecen
en pedidos del año 90. En este caso tenemos unos productos en la tabla
de productos y los otros en la tabla de pedidos, las tablas no tienen las
mismas columnas no se puede hacer una unión de ellas pero lo que
interesa realmente es el identificador del producto (idfab, idproducto),
luego por una parte sacamos los códigos de los productos con
existencias cero (con una consulta), por otra parte los códigos de los
productos que aparecen en pedidos del año 90 (con otra consulta), y
luego unimos estas dos tablas lógicas.

El operador que permite realizar esta operación es el operador UNION.


SUB-CONSULTAS ESCALARES

Una subconsulta escalar es una consulta SELECT regular entre


paréntesis que devuelve exactamente un valor: una fila con una
columna. La consulta se ejecuta y el valor devuelto se utiliza en la
consulta externa. Si la subconsulta devuelve cero filas, el valor de la
expresión de subconsulta es nulo. Si devuelve más de una fila, Amazon
Redshift devuelve un error. La subconsulta puede referirse a variables
de la consulta principal, que actuarán como constantes durante una
invocación de la subconsulta.

Puede usar las subconsultas escalares en la mayoría de instrucciones


que requiere una expresión. Las subconsultas escalares no son
expresiones válidas en los siguientes casos:

 Como valores predeterminados para expresiones


 En cláusulas GROUP BY y HAVING

Example

La siguiente subconsulta calcula el precio promedio pagado por venta


en todo el 2008, luego la consulta externa utiliza ese valor en el
resultado para compararlo con el precio promedio por venta por
trimestre:

select qtr, avg(pricepaid) as avg_saleprice_per_qtr,


(select avg(pricepaid)
from sales join date on sales.dateid=date.dateid
where year = 2008) as avg_saleprice_yearly
from sales join date on sales.dateid=date.dateid
where year = 2008
group by qtr
order by qtr;
qtr | avg_saleprice_per_qtr | avg_saleprice_yearly
-------+-----------------------+----------------------
1 | 647.64 | 642.28
2 | 646.86 | 642.28
3 | 636.79 | 642.28
4 | 638.26 | 642.28
(4 rows)

Las consultas son objetos que vamos a utilizar para visualizar parte de
la información contenida en nuestras bases de datos desde una
perspectiva más detallada y más adaptada a las necesidades concretas
a una situación puntual, en contraposición al contenido total de las
tablas de nuestra base de datos.

Se pueden realizar sobre una o varias tablas relacionadas y el resultado


que devuelven se muestran también en forma de tabla.

SUB-CONSULTAS

Una subconsulta, o una consulta dentro de una consulta, pueden


ponerse dentro de la cláusula WHERE de una consulta. Esto produce
una expansión de las capacidades de una cláusula WHERE.

La consulta que incluye a esta subconsulta se llama consulta externa


(outer query) o consulta principal. La subconsulta puede ejecutarse
lógicamente antes de que alguna fila sea examinada por la consulta
principal. En cierto sentido, la subconsulta es independiente de la
consulta principal. Esta podría ejecutarse como una consulta
propiamente dicha. Se dice que esta clase de subconsulta no está
correlacionada con la consulta principal. Las subconsultas pudieran
también estar correlacionadas.

Cómo utilizar sub-consultas

Cuando decida utilizar sub-consultas, tenga en cuenta los siguientes


hechos e instrucciones:

• Las sub-consultas se deben incluir entre paréntesis.

• Se pueden utilizar sub-consultas en lugar de una expresión siempre y


cuando-se devuelva un solo valor o una lista de valores.
• Se pueden utilizar sub-consultas que devuelvan un conjunto de
registros de varias columnas en-lugar de una tabla o para realizar la
misma función que una combinación.

• No se pueden utilizar subconsultas que recuperen columnas con tipos


de datos Text e image.

• Puede tener subconsultas dentro de subconsultas, con una anidación


de hasta 32 niveles. El límite varía según la cantidad de memoria
disponible y la complejidad de las otras expresiones de la consulta. Las
consultas individuales pueden no admitir una anidación de hasta 32
niveles.

Sub-Consultas que producen valores escalares:

Un valor escalar puede ser entendido como un valor numérico, aunque


también se consideran escalares los caracteres o las cadenas de
caracteres (considerando éstas como un tipo de datos elemental, no
como un vector de caracteres).

Una sub consulta que obtiene exactamente un valor de una columna de


una fila es también llamada sub consulta escalar. El valor de una
expresión en una sub consulta escalar es el valor del elemento de la
lista seleccionado de la sub consulta.

Ejemplo: Empleados que ganan más que el promedio de salarios


pagados en el depto. 20.

Subconsultas que producen un valor escalar en la parte más interna.

SELECT nombre, salario

FROM empleado

WHERE salario > (select AVG (salario)

FROM empleado

WHERE dpto. = 20);


Puedo utilizar operadores para comparar escalares.

Ejemplo: =, > , < , etc.

Condiciones que involucran relaciones:

ANY. Chequean si alguna fila de la lista resultado de una subconsulta


se encuentra el valor especificado en la condición. Compara un valor
escalar con los valores de un campo y devuelven "true" si la
comparación con cada valor de la lista de la subconsulta es verdadera,
sino "false". El tipo de datos que se comparan deben ser compatibles.

ALL: También compara un valor escalar con una serie de valores.


Chequea si TODOS los valores de la lista de la consulta externa se
encuentran en la lista de valores devuelta por la consulta interna.

EXITS: Cuando anidamos sentencias SELECT, todos los operadores


lógicos son válidos. En suma, se puede usar el operador EXISTS. Este
operador es frecuentemente usado en sub consultas relacionales para
verificar cuando un valor recuperado por la consulta externa existe en
el conjunto de resultados obtenidos por la consulta interna. Si la sub
consulta obtiene al menos una fila, el operador obtiene el valor TRUE.
Si el valor no existe, se obtiene el valor FALSE. Consecuentemente, NOT
EXISTS verifica cuando un valor recuperado por la consulta externa no
es parte del conjunto de resultados obtenidos por la consulta interna.

Ejemplo: Empleados con salario superior a todos los salarios del depto
10.

Condiciones que involucran tuplas:

En informática, o concretamente en el contexto de una base de datos


relacional, un registro (también llamado fila o tupla) representa un
objeto único de datos implícitamente estructurados en una tabla. En
términos simples, una tabla de una base de datos puede imaginarse
formada de filas y columnas o campos. Cada fila de una tabla
representa un conjunto de datos relacionados, y todas las filas de la
misma tabla tienen la misma estructura. Las tuplas son estructuras de
datos que constan de varios campos que pueden contener datos de
tipos distintos. El acceso al contenido de los campos en las tuplas se
hace utilizando el nombre de los campos en lugar de su posición.

También podría gustarte