Sei sulla pagina 1di 16

UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO

FACULTAD DE CIENCIAS DE LA COMPUTACION


Carrera de Ingeniería Informática

Materia

“Base de Datos II”


LENGUAJE SQL

Docente: Ing. Ubaldo Pérez Ferreira

Santa Cruz de la Sierra – Bolivia


Reunión Natural (JOIN)

Combina la Selección y el Producto Cartesiano entre dos tablas en una sola


operación, el Predicado esta implícito y toma en cuenta a las parejas de
tuplas que tenga el mismo valor en al menos un atributo en común entre
ambas relaciones PK FK PK
Para elaborar una consulta de A B C R T
tipo JOIN se debe cumplir con 1 aaa y x a1
los siguientes requisitos:
2 bbb y y b2
SELECT * 3 ccc y z c3
FROM t1, t2 4 eee z t2
WHERE t1.c=t2.r
t1
1. En la clausula FROM tienen que
Resultado después de la ejecución
intervenir dos o mas tablas.
2. En la clausula WHERE son incluidos los A B C R T
atributos en común de las dos tablas. 1 aaa y y b2
Generalmente uno es un atributo PK y el
otro un atributo FK. 2 bbb y y b2
3 ccc y y b2
4 eee z z c3
Reunión Natural (JOIN)

Consulta 1. Mostrar una lista que


incluya: Nombre del Almacén,
Fecha, Código Producto, Nombre
del Producto, Cantidad y Precio.
La lista debe estar ordenada por
Almacén y Producto
Reunión Natural (JOIN)

Consulta 2. Mostrar una lista que


incluya: Nombre del Almacén,
Fecha, Código Producto, Nombre
del Producto, Cantidad y Precio.
Solamente se deben mostrar los
productos de color café
suministrados por el proveedor
PROV1. La lista debe estar
ordenada por Almacén y Producto
Sub Consulta usando la Clausula IN

Una sub consulta es una sentencia SELECT que es incrustada en una


Consulta cláusula de otra sentencia SQL, llamada Consulta padre.
Principal

Sub
Consulta
Interna

La sub consulta interna se ejecuta antes que la consulta principal. El


resultado de la sub consulta es utilizado por la consulta principal.
Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta
se ejecuta por cada fila de la consulta principal.
Sub Consulta usando la Clausula IN

En la clausula WHERE se tienen que elegir un atributo de la(s) tabla(s) de la


Consulta Padre o un valor constante, de tal forma que por cada fila se permita
comparar el valor del atributo o de la constante con el resultado obtenido en
la Sub Consulta. PK FK PK
La Sub Consulta retorna un A B C R T
SELECT * conjunto de filas
1 aaa y x a1
FROM t2
2 bbb y y b2
WHERE r IN (SELECT c FROM t1) 3 ccc y
z c3
4 eee z
t1 t2
Ejecución paso a paso …
x NO PERTENECE NO SE MUESTRA

Primero se ejecuta la Sub C y PERTENECE SI SE MUESTRA

consulta y el resultado es: y z PERTENECE SI SE MUESTRA

z Resultado después de la ejecución

Luego por cada fila de la tabla t2, se R T

valida que el valor de r pertenezca al y b2


resultado de la Sub Consulta. z c3
Sub Consulta usando la Clausula IN

Consulta 3. Mostrar los nombres de los proveedores que


suministraron algún producto
Consulta que obtiene los nombres de los
proveedores

La consulta 2 se adiciona como una sub


consulta en la clausula WHERE de la
consulta 1. La sub consulta se ejecuta primero,
luego se ejecuta la consulta principal
y muestra solamente los nombres de
Consulta que obtiene los códigos de los los proveedores cuyos códigos se
proveedores que suministró algún producto encuentren en la lista de códigos
emitidos por la sub consulta.

2
Uso Referencias externas

A menudo, es necesario, dentro del cuerpo de una Sub Consulta,


hacer referencia al valor de una columna en la fila actual de la
Consulta Padre, ese nombre de columna se denomina referencia
externa. El atributo r pertenece a una tabla de la
Consulta Padre, por lo tanto es una
referencia externa en la Sub Consulta
SELECT *
FROM t2
WHERE

(SELECT COUNT(*) FROM t1 WHERE t1.c=t2.r) >=1

Una referencia externa es un nombre de columna que estando en la Sub


Consulta, no se refiere a ninguna columna de las tablas designadas en la
clausula FROM de la Sub Consulta sino a una columna de las tablas
designadas en la clausula FROM de la Consulta Padre.
Uso Referencias externas

La Sub Consulta se ejecuta por cada fila de la Consulta Padre, por lo tanto el
valor del atributo de la referencia externa irá cambiando en la Sub Consulta.

El atributo r pertenece a una tala de la Consulta Padre, por


SELECT * lo tanto es una referencia externa en la Sub Consulta
FROM t2
WHERE

(SELECT COUNT(*) FROM t1 WHERE t1.c=t2.r) >=1

Ejecución paso a paso …

t1.c=x , COUNT(*) =0, NO SE MUESTRA x


t1.c=y , COUNT(*) =3 SI SE MUESTRA y
PK FK PK t1.c=z , COUNT(*) = 1 SI SE MUESTRA z
A B C R T
1 aaa y x a1 R T

2 bbb y y b2 y b2
3 ccc y z c3
z c3
4 eee z
t1 t2
Sub Consultas SQL – usando la Clausula EXISTS

Este operador es frecuentemente usado en sub consultas correlacionadas 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, de lo contrario se obtiene FALSE.
El atributo r pertenece a una tala de la Consulta Padre, por
SELECT *
lo tanto es una referencia externa en la Sub Consulta
FROM t2

WHERE EXISTS (SELECT * FROM t1 WHERE t1.c=t2.r)

PK FK PK Ejecución paso a paso …


A B C R T
RETORNA FALSE NO SE MUESTRA x
1 aaa y x a1 RETORNA TRUE SE MUESTRA y
2 bbb y y b2
RETORNA TRUE SE MUESTRA z

3 ccc y
z c3
R T
4 eee z
t1 t2 y b2

z c3

NOT EXISTS verifica cuando un valor recuperado por la consulta externa


no es parte del conjunto de resultados obtenidos por la consulta interna.
Uso de la Clausula EXISTS

Consulta 4. Mostrar los nombres de los productos suministrado el


año pasado por el proveedor PRV1 Referencia externa

Consulta 5. Mostrar los nombres de los productos suministrados el


primer trimestre del año 2012
Referencia externa
Funciones Agregadas

Muchas de las peticiones de información no requieren el nivel de


detalle, es así, que SQL ofrece funciones que se aplican a las
columnas de resultado de una consulta. Estas funciones de columnas
ofrecen diferentes tipos de datos resumen. Las funciones básicas son
las siguientes:

• SUM() calcula el total de una columna


• AVG() calcula el valor promedio de una columna
• MIN() encuentra el valor mas pequeño de una columna
• MAX() encuentra el valor mayor de una columna
• COUNT() cuenta el numero de valores de una columna
• COUNT(*) cuenta las filas de resultados de la consulta.
Q7: Obtener la ultima fecha de suministro del proveedor 1.

SELECT MAX(ftra)
FROM sumi
WHERE cprv=1
Q8: Calcular la cantidades del producto 3 suministrado por el proveedor 2.

SELECT (cant)
FROM sumi
WHERE cprd=3 and cprv=2
Consultas Agrupadas

La cláusula GROUP BY agrupa los datos de las tablas fuentes y


produce una única fila sumaria por cada grupo de filas. Las columnas
que se indican en la cláusula GROUP BY se las denominan
columnas de agrupación de la consulta, ya que ellas determinan
como se dividen las filas en grupo.
SELECT c , COUNT(*) Total
El atributo c es seleccionado
como columna de agrupación FROM t1
GROUP BY c

Ejecución paso a paso …


Se agrupan las filas con c=y , resultado es COUNT(*) =3
Se agrupan las filas con c=z , resultado es COUNT(*) = 1
PK FK
A B C
1 aaa y C
R Total
T

2 bbb y y 3
b2
3 ccc y z 1
4 eee z
t1
Consultas Agrupadas

Ejemplo: Q9: Listar los importes suministrado por cada proveedor.

La columna de agrupación para este caso sería


“cprv”

y para mostrar los importes suministrados por cada


proveedor, se tendría que sumar de cada proveedor
la columna “impt” de la tabla sumi.


Condiciones de búsquedas por grupos

De la misma manera que la cláusula WHERE puede ser utilizada para


seleccionar y rechazar filas individuales que participan en una
consulta, la cláusula HAVING puede ser utilizada para seleccionar y
rechazar grupos de filas. Existe una analogía entre el formato de la
cláusula HAVING y la cláusula WHERE. La cláusula HAVING especifica
por tanto una condición de búsqueda para grupos.

Ejemplo:

Q10: Listar los importe suministrados por cada proveedor siempre y


cuando los importes superen a 100 b
Equivalencia de Consultas SQL

Dos consultas SQL son equivalente si dan el mismo resultado en


cualquier momento.
Consulta 6. Mostrar los nombres de los proveedores que suministraron algún producto

Para hacer en clases, los estudiantes deben escribir otras consultas equivalentes

Potrebbero piacerti anche