Está en la página 1de 6

Instituto de Educación Superior Tecnológico Público Luis E Valcárcel

Carrera Profesional de Computación e Informática


UNIDAD DIDACTICA ADMINISTRACION DE BASE DE DATOS

SEMANA 10
Actividad nº 2: CONSULTAS COMPLEJAS

Objetivo:
 Obtener datos de ciertas columnas de una tabla.
 Obtener registros (filas) de una tabla de acuerdo con ciertos criterios (selección).
 Mezclar datos de tablas diferentes (asociación).

En la Base de Datos ventas (DBVENTAS)


create table categoria
(codcat varchar(2),
nomcat varchar(30)
CONSTRAINT pkcodcat primary key (codcat)
);
create table articulos
(codart varchar(6),
codcat varchar(2) NOT NULL,
desart varchar(30),
puart float,
stoart integer,
CONSTRAINT pkcodart primary key (codart),
CONSTRAINT fkcodcat FOREIGN key (codcat)
REFERENCES categoria(codcat)
)

insert into categoria(codcat,nomcat) values ('01', 'Monitores');


insert into categoria(codcat,nomcat) values ('02', 'Impresoras');
insert into categoria(codcat,nomcat) values ('03', 'Mouse');
insert into categoria(codcat,nomcat) values ('04', 'Teclado');

SELECT * FROM CATEGORIA

Ing. Melina Alférez García Página N° 1 17/10/18


Instituto de Educación Superior Tecnológico Público Luis E Valcárcel
Carrera Profesional de Computación e Informática
UNIDAD DIDACTICA ADMINISTRACION DE BASE DE DATOS

insert into articulos(codart,codcat,desart,puart,stoart)


values ('A00001','02','Epson 1170', 150,3);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00002','03', 'LG',40,15);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00003','01', 'Samsung 13 pulg.',50,2);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00004','02', 'HP láser', 250,13);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00005','01', 'LG LCD 22 pulg',185 ,10);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00006','01' ,'LG LED pulg', 346, 3);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00007','02' ,'Canon multifuncional G4100' ,969,5);
insert into articulos(codart,codcat,desart,puart,stoart)
values ('A00008','02', 'HP multifuncional', 199, 5);

SELECT * FROM ARTICULOS

INNER JOIN (Interna)


Con esta operación se calcula el producto cruzado de todos los
registros; así cada registro en la tabla A es combinado con cada
registro de la tabla B; pero sólo permanecen aquellos registros en la
tabla combinada que satisfacen las condiciones que se especifiquen.
Este es el tipo de JOIN más utilizado, por lo que es considerado el tipo
de combinación predeterminado.
Es necesario tener especial cuidado cuando se combinan columnas
con valores nulos NULL, ya que el valor nulo no se combina con otro valor o con otro nulo, excepto
cuando se le agregan predicados tales como IS NULL o IS NOT NULL.

En nuestro ejemplo combinamos todos los registros de las tablas "articulos" y "categoria" cuando
se cumple con la condición artículos.codcat=categoria.codcat.

1. SELECT * FROM ARTICULOS INNER JOIN CATEGORIA


ON ARTICULOS.codcat = CATEGORIA.codcat

Ing. Melina Alférez García Página N° 2 17/10/18


Instituto de Educación Superior Tecnológico Público Luis E Valcárcel
Carrera Profesional de Computación e Informática
UNIDAD DIDACTICA ADMINISTRACION DE BASE DE DATOS

LEFT JOIN o LEFT OUTER JOIN. (Externa)


El conjunto de resultados de una combinación externa izquierda
incluye todas las filas de la tabla de la izquierda especificada en la
cláusula LEFT OUTER y no sólo aquellas en las que coincidan las
columnas combinadas. Cuando una fila de la tabla de la izquierda no
tiene filas coincidentes en la tabla de la derecha, la fila asociada del
conjunto de resultados contiene valores NULL en todas las columnas
de la lista de selección que procedan de la tabla de la derecha.
Si ejecutamos la siguiente consulta con la base de datos ejemplo:

2. SELECT * FROM ARTICULOS LEFT JOIN CATEGORIA


ON ARTICULOS.codcat = CATEGORIA.codcat

3. SELECT * FROM CATEGORIA LEFT JOIN ARTICULOS


ON CATEGORIA.codcat = ARTICULOS.codcat

RIGHT JOIN o RIGHT OUTER JOIN. (Externa)


Una combinación externa derecha es lo contrario de una
combinación externa izquierda. Se devuelven todas las filas de la
tabla de la derecha. Cada vez que una fila de la tabla de la derecha
no tenga correspondencia en la tabla de la izquierda, se
devuelven valores NULL para la tabla de la izquierda.

4. SELECT * FROM ARTICULOS RIGHT JOIN CATEGORIA


ON ARTICULOS.codcat = CATEGORIA.codcat

Ing. Melina Alférez García Página N° 3 17/10/18


Instituto de Educación Superior Tecnológico Público Luis E Valcárcel
Carrera Profesional de Computación e Informática
UNIDAD DIDACTICA ADMINISTRACION DE BASE DE DATOS

FULL JOIN o FULL OUTER JOIN. (Externa)


Una combinación externa completa devuelve todas las filas de las tablas de la izquierda y la derecha.
Cada vez que una fila no tenga coincidencia en la otra tabla, las columnas de la lista de selección de
la otra tabla contendrán valores NULL. Cuando haya una coincidencia entre las tablas, la fila
completa del conjunto de resultados contendrá los valores de datos de las tablas base.

5. SELECT * FROM ARTICULOS FULL JOIN CATEGORIA


ON ARTICULOS.codcat = CATEGORIA.codcat

SUBCONSULTAS

A veces se han de utilizar en una consulta los resultados de otra consulta, llamada subconsulta o
consulta anidada.

Pueden utilizarse de dos formas:


 Dentro de la Lista de campos de la instrucción Select
select ListaCampos, (Select Campo from TablaSubconsulta where…) from TablaPrincipal

Ejemplo:
6. select codart,desart, puart, puart+(select min(puart) from articulos) as incremento
from articulos where puart>=40 and puart<=50;

Ing. Melina Alférez García Página N° 4 17/10/18


Instituto de Educación Superior Tecnológico Público Luis E Valcárcel
Carrera Profesional de Computación e Informática
UNIDAD DIDACTICA ADMINISTRACION DE BASE DE DATOS

 En la cláusula Where
Select ListadeCampos from Tabla Where Campo operador ( Select… )

7. select codart,desart,puart from artículos where puart=(select max(puart) from articulos);

Ejercicios
8. ---CONTAR A LOS ARTICULOS DE UNA DETERMINADO CATEGORIA---
select distinct codcat ,(select COUNT(*) from articulos a2
where a2.codcat =a1.codcat) as total_articulos from articulos a1
order by codcat

select codcat,nomcat,(select count(puart)from articulos a


where a.codcat = c.codcat )as total_articulos
from categoria c;

select distinct articulos.codcat,nomcat,(select COUNT(*)from articulos where


articulos.codcat=categoria.codcat) as total_Articulos
from articulos INNER JOIN categoria on articulos.codcat=categoria.codcat

9. ---ARTICULOS QUE SEAN DEL CODIGO DE CATEGORIA 02 ---


select codart, desart from articulos
where codcat IN (select codcat from categoria where codcat='02')

10. SELECT codart,desart,puart FROM articulos INNER JOIN categoría


ON articulos.codcat = categoria.codcat
WHERE puart > (SELECT AVG(puart) FROM articulos)

Ing. Melina Alférez García Página N° 5 17/10/18


Instituto de Educación Superior Tecnológico Público Luis E Valcárcel
Carrera Profesional de Computación e Informática
UNIDAD DIDACTICA ADMINISTRACION DE BASE DE DATOS

Ejercicios
1. Listar el código de artículo, descripción del artículo, precio unitario perteneciente a la
categoría monitores.
2. Listar el código de artículo, descripción del artículo, precio unitario perteneciente a la
categoría impresoras, pero con un precio unitario menor igual a 500.
3. Listar el código de artículo, descripción del artículo, precio unitario perteneciente a la
categoría impresoras, cuyos precios sean mayores que 400 y menores que 1000.
4. Listar el código de artículo, descripción del artículo, precio unitario perteneciente a la
categoría impresoras o impresoras.
5. Cuántos monitores existen en stock de la tabla artículo.
6. Determine el precio promedio de los monitores.
7. Determine el precio mínimo de los monitores.
8. Determine el precio máximo de las impresoras.
9. Determinar cuántas unidades existen por cada categoría.
10. Determinar cuántas unidades existen por cada categoría, pero que sean mayores a 30.
11. conocer la descripción de los artículos cuyo precio unitario está por encima de la media.

Ing. Melina Alférez García Página N° 6 17/10/18

También podría gustarte