Professional Documents
Culture Documents
FA C U LTA D D E I N G E N I E R I A Y A R Q U I T E C T U R A Ciclo
Objetivos
Que el estudiante sea capaz de:
Realizar las operaciones de consulta en SQL sobre Oracle utilizando una o ms tablas.
Utilizar consultas simples, complejas, de unin(joins), autoreferenciadas, con clusula
with, de conjunto, etc.
Introduccin
En esta gua veremos cmo escribir sentencias SELECT para acceder a los datos
de dos o ms tablas usando equality y non-equality joins (combinaciones por igualdad y
por desigualdad). Visualizar datos que no se cumpliran normalmente con una condicin
de join, outer joins (uniones externas), combinaciones (self-Joins) de una tabla consigo
misma, consultas con clusula with, de conjunto, etc..
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
1
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Desarrollo.
Consultas Multitablas
Qu es un Join?
Un Join es usado para consultar datos desde ms de una tabla. Las filas se combinan
(joined) relacionando valores comunes, tpicamente valores de primary key y foreign key.
Mtodos de Join:
Equijoin
Non-equijoin
Outer join
Self join
Consultas Simples
a) Consultar los pases por regin.
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
2
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Consultas Complejas
Uso de Alias
Los alias simplifican la referencia a las columnas de las tablas que se utilizan en una
consulta.
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
3
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
NATURAL JOIN
Se combinas est basada en todas las columnas con igual nombre entre ambas tablas.
Script: select location_id, city, department_name from locations natural join departments;
Script2: select location_id, city, department_ name from departments natural join locations;
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
4
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
5
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Script: select * from regions natural join countries where country_name like 'A% ';
Script: select region_name, country_name, city from regions natural join countries natural join
locations;
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
6
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
JOIN . . . USING
g) Mostrar los codigos de localizacion, nombre de ciudad y su respectivo departamento, donde los
nombres de ciudad no posean la letra S de inicial.
Script: select location_id, city, department_name from locations join departments using (location_id)
where city not like 'S% ';
h) Mostrar las ciudades, pais y region a la que pertenecen, dentro de Estados Unidos(US).
Script: select region_name, country_name, city from regions join countries using(region_id) join
locations using(country_id) where country_id = 'US';
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
7
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
JOIN ... ON
La condicin que permite combinar ambas tablas se debe especificar en la clusula ON.
i) Mostrar las ciudades, pais y region a la que pertenecen, dentro de Estados Unidos(US).
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
8
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Producto Cartesiano
Combinaciones Externas
k) Mostrar todos los pases y ciudades de la tabla countries y locations cuando los
nombres de pases empiecen con la letra A.
Script: select c.country_name, l.city from countries c, locations l where ( c.country_id = l.country_id
(+) ) and ( c.country_name like 'A% ' );
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
9
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Todos estos ejemplos producen el mismo resultado, y muy similar al del Script 8.10.
Script2: select c.country_name, l.city from countries c left outer join locations l on c.country_id =
l.country_id where c.country_name like 'A% ' ;
Script3: select country_name, city from countries natural left join locations where
countries.country_name like 'A% ';
Script4: select country_name, city from countries left join locations using (country_id) where
countries.country_name like 'A% ';
Script5: select c.country_name, l.city from countries c, locations l where l.country_id (+) = c.country_id
and c.country_name like 'A% ' ;
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
10
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Si se utiliza el Right Outer Join y invierte el orden de las tablas en los ejemplos anteriores
los resultados sern iguales a los mostrados en el grupo de consultas de Left Outer Join.
Script: select c.country_name, l.city from locations l right outer join countries c on l.country_id =
c.country_id where c.country_name like 'A% ' ;
Script2: select country_name, city from locations natural right outer join countries where
countries.country_name like 'A% '
Script3: select country_name, city from locations right outer join countries using ( country_id ) where
countries.country_name like 'A% ';
Script4 : select c.country_name, l.city from locations l, countries c where c.country_id = l.country_id
(+)and c.country_name like 'A% ' ;
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
11
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Script2: select e.last_name Employee, m.last_name Manager from employees e inner join employees m
on m.employee_i d = e.manager_id;
Estas dos consultas muestran una lista de los empleados y sus respectivos jefes.
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
12
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
En esquema Scott
o) Mostrar los nombres, salario y grado correspondiente de los empleados segun el salario(sal), es
decir si el salario(sal) esta entre el minimo(losal) y maximo(hisal) de su grado. Muestre los
rangos si lo desea.
Script: Select Ename, Grade,Sal,Losal, Hisal From Emp, Salgrade where sal between losal and hisal;
Operadores de Conjuntos
La siguiente tabla describe los diferentes operadores de conjuntos.
Operador Descripcin
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
13
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
q) Muestre los empledos(con su apellidos y fecha de ingreso a la empresa), cuyo apellido empieza
con la letra K
Script: select last_name, hire_date from employees where last_name like 'K% ';
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
14
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
La operador UNION es usado para retornar las filas de ambas consultas pero sin
considerar las duplicadas.
r) Muestre a los empleados (con su apellidos y fecha de ingreso a la empresa), que pertenecen al
departamento 90 UNIDO a los empleados(apelli dos y fecha de ingreso) cuyo apellido empieza
con la letra K.
(consultas p y q unidas)
UNION
select last_name, hire_date from employees where last_name like 'K% ';
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
15
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Clausula WITH
Sintaxis
WITH
nombre_subconsulta
AS
(El sql que se materializar)
SELECT
(SQL en el que se usar la subconsulta);
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
16
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Script:
With Jefes As
From Employees,Jefes
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
17
Universidad de El Salvador BAD-115 Gua de Laboratorio #5
Ing. Elmer Arturo Carballo Ruiz MSc. / Ing. Cesar Augusto Gonzlez Rodrguez MAF
Ciclo II-2012
18