You are on page 1of 28

PRACTICA 07

MOSTRAR DATOS DE VARIAS


TABLAS USANDO JOINS

OBJETIVOS

Al finalizar esta leccin, usted debera ser capaz de hacer lo siguiente:

FIS
Escribir instrucciones SELECT para acceder a los datos de ms de una tabla utilizando
combinaciones de igualdad y de no-igualdad.
Unir una tabla a s misma mediante el uso de una autocombinacin
Mostrar datos que por lo general no cumplen con una condicin de unin mediante el
uso de combinaciones OUTER
Generar un producto cartesiano de todas los registros a partir de dos o ms tablas

En esta leccin se explica cmo obtener los datos de ms de una tabla. Una combinacin
se utiliza para ver la informacin de varias tablas. Por lo tanto, usted puede unir las tablas
en conjunto para ver la informacin de ms de una tabla.

Nota: La informacin acerca de las combinaciones se encuentra en la seccin de " SQL


Queries and Subqueries: Joins in Oracle Database SQL Language Reference 11g,
Release 1 (11.1)

LECCIN DEL ORDEN DEL DA

Los tipos de JOINS y su sintaxis


Natural Join:
Clusula USING
Clusula ON
Auto-join
Combinacin de No Igualdad (nonequijoin)
OUTER join
Left Outer join
Right Outer join
Full Outer join
Producto cartesiano
Cross join
OBTENCIN DE DATOS DE MLTIPLES TABLAS

FIS
A veces es necesario utilizar los datos de ms de una tabla. En el ejemplo de la
diapositiva, el informe muestra los datos de dos tablas separadas:



Employee_ID existen en la tabla EMPLOYEES.
Departament_ID existe en las tablas EMPLOYEES y DEPARTAMENTS.
Departament_name existe en la tabla DEPARTMENTS.

Para producir el informe, es necesario vincular las


DEPARTAMENTS y accesar los datos desde ambas tablas.

LOS TIPOS DE UNIONES

Clausula NATURAL JOIN


Clusula USING
Clusula ON
OUTER join
LEFT OUTER JOIN
RIGHT OUTER JOIN
FULL OUTER JOIN
CROSS JOIN
tablas EMPLOYEES

Las combinaciones que cumplen con el estndar SQL: 1999 son los siguientes:
Natural join
y

Para unirse a las tablas, puede utilizar una sintaxis de la combinacin que cumple con el
estndar SQL: 1999.

Nota
Antes de la liberacin de Oracle9i, la sintaxis de la combinacin era diferente de los
American National Standards Institute (ANSI). El SQL:1999-compatible con la sintaxis
join no ofrece ventajas de rendimiento sobre la sintaxis propietaria join de Oracle que
exista en las versiones anteriores.
La siguiente diapositiva analiza el SQL: 1999 sintaxis de la combinacin.

UNIN DE TABLAS USANDO LA SINTAXIS SQL: 1999

FIS
Use una combinacin de datos de la consulta de ms de una tabla:

SELECT table1.column, table2.column


FROM table1
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON (table1.column_name = table2.column_name)]|
[LEFT|RIGHT|FULL OUTER JOIN table2
ON (table1.column_name = table2.column_name)]|
[CROSS JOIN table2];

En la siguiente sintaxis:
Table1.column indica la tabla y la columna de la cual se recuperan los datos
NATURAL JOIN combina dos tablas basadas en el mismo nombre de columna
JOIN tabla2 USING column_name realiza una combinacin de igualdad basado en el
nombre de la columna
JOIN tabla2 ON = table1.column_name = table2.column_name realiza una
combinacin de igualdad basada en la condicin en la clusula ON
LEFT / RIGHT / FULL OUTER se utiliza para realizar combinaciones OUTER
CROSS JOIN devuelve un producto cartesiano de las dos tablas

CALIFICACIN NOMBRES DE COLUMNAS AMBIGUAS

Utilizar los prefijos de tabla para calificar los nombres de las columnas que se
encuentran en varias tablas.
Utilizar los prefijos de tabla para mejorar el rendimiento.
En lugar de prefijos completos de nombre de tabla, utilice los alias de la tabla.
Los alias de la tabla dan una tabla de un nombre ms corto:
Mantener el cdigo SQL ms pequeo, usa menos memoria
Usar alias de las columnas para distinguir las columnas que tienen nombres idnticos,
pero residen en diferentes tablas.

Cuando se unen dos o ms tablas, se necesita calificar los nombres de las columnas con
el nombre de la tabla para evitar la ambigedad. Sin los prefijos de la tabla, la columna
DEPARTMENT_ID en la lista SELECT podran ser de cualquiera de la tabla
DEPARTMENTS o la tabla EMPLEADOS. Es necesario aadir el prefijo de la tabla para
ejecutar la consulta. Si no hay nombres de columna comunes entre las dos tablas, no hay
necesidad de calificar las columnas. Sin embargo, con el prefijo de la tabla mejora el
rendimiento, ya que decirle al servidor Oracle exactamente dnde encontrar las columnas.
Sin embargo, la calificacin nombres de las columnas con los nombres de tabla puede
llevar mucho tiempo, sobre todo si los nombres de las tablas son muy largos. En su lugar,
puede utilizar los alias de la tabla. As como un alias de columna ofrece una columna con
otro nombre, un alias de tabla da una tabla con otro nombre. Los alias de tabla ayudan a
mantener el cdigo SQL ms pequeo, por lo tanto, utilizando menos memoria.

El nombre de la tabla se especifica en su totalidad, seguido por un espacio y, a


continuacin el alias en el listado. Por ejemplo, la tabla Empleados se puede dar un alias

FIS
de correo, y la tabla DEPARTMENTS el alias d.

Directrices

Los alias de la tabla pueden ser de hasta 30 caracteres de longitud, pero los alias ms
cortos son mejores que los ms largos.
Si un alias de tabla se utiliza para un nombre de tabla en particular en la clusula
FROM, que el alias de la tabla debe ser sustituido por el nombre de la tabla a lo largo
de la instruccin SELECT.
Los alias de la tabla debe ser significativo.
Los alias de la tabla es vlida slo para la instruccin SELECT actual.

CREACIN JOIN NATURAL

La clusula JOIN NATURAL se basa en todas las columnas de las dos tablas que
tienen el mismo nombre.
Selecciona los registros de las dos tablas que tienen valores iguales en todas las
columnas coincidentes.
Si las columnas que tienen los mismos nombres que tienen diferentes tipos de datos,
se devuelve un error.

Usted puede unir las tablas de forma automtica sobre la base de las columnas en las dos
tablas que coinciden con los tipos de datos y nombres. Esto se hace mediante el uso de
las palabras NATURAL JOIN.

Nota: La combinacin puede ocurrir en slo las columnas que tienen los mismos nombres
y tipos de datos en ambas tablas. Si las columnas tienen el mismo nombre pero con
diferentes tipos de datos, la sintaxis NATURAL JOIN produce un error.

OBTENER REGISTROS CON NATURAL JOINS

SELECT department_id, department_name,


location_id, city
FROM departments
NATURAL JOIN locations;
FIS
En el ejemplo de la diapositiva, la tabla LOCATIONS est unida a la tabla DEPARTMENT
por la columna LOCATION_ID, que es la nica columna del mismo nombre en ambas
tablas. Si otras columnas comunes estuvieron presentes, la unin se ha utilizado todas.

Natural se une con una clusula WHERE

Las restricciones adicionales en una unin natural se implementan mediante el uso de


una clusula WHERE. El siguiente ejemplo limita los registros de salida para aquellos con
un ID de departamento igual a 20 o 50:

SELECT department_id, department_name, location_id, city


FROM departments
NATURAL JOIN locations
WHERE department_id IN (20, 50);
CREACIN DE UNIONES CON LA CLUSULA USING

Si varias columnas tienen los mismos nombres, pero los tipos de datos no coinciden,
utilice la clusula USING para especificar las columnas de la interseccin.
Utilice la clusula USING para que coincida con slo una columna cuando coincide
ms de una columna.
Las clausulas NATURAL JOIN y USING son mutuamente excluyentes.

FIS
Natural join utiliza todas las columnas con los nombres que coincidan con los tipos de
datos para unirse a las tablas. La clusula USING puede ser usado para especificar slo
las columnas que deben ser utilizados para una combinacin de igualdad.

NOMBRES DE COLUMNA UNIDAS

Para determinar el nombre de un empleado del departamento, se compara el valor de la


columna DEPARTMENT_ID en la tabla EMPLOYEES con los valores DEPARTMENT_ID
en la tabla DEPARTMENTS.

La relacin entre las tablas EMPLOYEES y DEPARTAMENTS es una combinacin de


igualdad, es decir, valores en la columna DEPARTMENT_ID tanto en las tablas deben ser
iguales. Con frecuencia, este tipo de combinacin incluye primaria y complementa clave
externa.

Nota: Combinaciones de igualdad tambin se conocen como simples uniones o


combinaciones internas.

OBTENER REGISTROS CON LA CLUSULA USING

SELECT employee_id, last_name,


location_id, department_id
FROM employees JOIN departments
USING (department_id);
FIS
En el ejemplo de la diapositiva, las columnas DEPARTMENT_ID en las tablas
EMPLOYEES y DEPARTMENTS se unen y as el LOCATION_ID del departamento donde
trabaja un empleado se muestra.

USO DE ALIAS DE TABLA CON LA CLUSULA USING

No calificar a una columna que se utiliza en la clusula USING.


Si la columna se utiliza el mismo en otras partes de la sentencia SQL, no lo hacen sus
alias.

SELECT l.city, d.department_name


FROM locations l JOIN departments d
USING (location_id)
WHERE d.location_id = 1400;
Al unirse con la clusula USING, no se puede calificar a una columna que se utiliza en la
clusula USING s mismo. Adems, si esa columna se utiliza en cualquier parte de la
sentencia SQL, no se puede alias de la misma. Por ejemplo, en la consulta mencionada
en la diapositiva, usted no debe alias de la columna LOCATION_ID en la clusula
WHERE, porque la columna se utiliza en la clusula USING.

Las columnas que se hace referencia en la clusula USING no deberan tener un partido
de clasificacin (nombre de tabla o alias) en cualquier parte de la sentencia SQL. Por
ejemplo, la siguiente declaracin es vlida:

FIS
SELECT l.city, d.department_name
FROM locations l JOIN departments d
USING (location_id)
WHERE location_id = 1400;

Las columnas que son comunes en ambas tablas, pero no se utiliza en la clusula
USING, debe estar precedido de un alias de tabla, de lo contrario, se obtiene la "columna
definido de forma ambigua" de error.

En la siguiente declaracin, MANAGER_ID est presente tanto en los empleados y


departamentos de mesa, y si MANAGER_ID no est precedido de un alias de tabla, le da
una "columna definido de forma ambigua" de error.

La siguiente declaracin es vlida:

SELECT first_name, d.department_name, d.manager_id


FROM employees e JOIN departments d
USING (department_id)
WHERE department_id = 50;
FIS
Creacin de Uniones con la clusula ON

La condicin de unin para la unin natural es bsicamente una combinacin de


igualdad de todas las columnas con el mismo nombre.
Utilice la clusula ON para especificar condiciones arbitrarias o especificar las
columnas para unirse.
La condicin de combinacin se separa de las condiciones de bsqueda.
La clusula ON hace que el cdigo fcil de entender.

Utilice la clusula ON para especificar una condicin de combinacin. Con esto, usted
puede especificar las condiciones de combinacin separadas de cualquier bsqueda o las
condiciones de filtro en la clusula WHERE.

OBTENER REGISTROS CON LA CLUSULA ON

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);
FIS
En este ejemplo, las columnas DEPARTMENT_ID en los empleados y la tabla
DEPARTAMENTS se unen con la clusula ON. Cada vez que un departamento de ID en
la tabla EMPLOYEES equivale a un departamento de ID en la tabla de DEPARTAMENTS,
la registro se devuelve. Los alias de la tabla son necesarios para calificar el empate en los
columna_names.

Tambin puede utilizar la clusula ON para unir las columnas que tienen nombres
diferentes. El parntesis alrededor de las columnas combinadas, como en el ejemplo de la
diapositiva, (e.department_id = d.department_id) es opcional. Por lo tanto, incluso en
e.department_id = d.department_id va a funcionar.

CREACIN DE TRES VAS DE JOIN CON LA CLUSULA ON

SELECT employee_id, city, department_name


FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
`
FIS
Una unin triple es una combinacin de tres tablas. En SQL:1999 compatible con la
sintaxis, se une se realizan de izquierda a derecha. Por lo tanto, la primera combinacin
que se realiza es que los empleados JOIN DEPARTAMENTS. La primera condicin de
combinacin puede hacer referencia a las columnas de los EMPLOYEES y
DEPARTAMENTS, pero no puede hacer referencia a columnas en localidades. La
segunda condicin de combinacin se puede hacer referencia a columnas de las tres
tablas.

Nota: El ejemplo de cdigo tambin se puede lograr con la clusula USING:

SELECT e.employee_id, l.city, d.department_name


FROM employees e
JOIN departments d
USING (department_id)
JOIN locations l
USING (location_id)
FIS
LA APLICACIN DE CONDICIONES ADICIONALES A JOIN

Utilice la clusula AND o la clusula WHERE o para solicitar ms condiciones:

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
AND e.manager_id = 149 ;

SELECT e.employee_id, e.last_name, e.department_id,


d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
WHERE e.manager_id = 149 ;

FIS
Usted puede aplicar condiciones adicionales a la unin.

El ejemplo mostrado se realiza una combinacin de las tablas EMPLOYEES y


DEPARTMENTS y, adems, slo muestra los empleados que tienen un ID de gerente de
149. Para aadir condiciones adicionales para la clusula ON, puede agregar clusulas
AND. Alternativamente, puede utilizar una clusula WHERE para aplicar condiciones
adicionales.

UNIR UNA TABLA CONSIGO MISMA

A veces es necesario combinar una tabla consigo misma. Para encontrar el nombre del
director de cada empleado, lo que necesita para unirse a la tabla Employees a s mismo,
o realizar una auto-join. Por ejemplo, para encontrar el nombre del director de Lorentz, es
necesario:

Buscar Lorentz en la tabla EMPLOYEES mirando la columna LAST_NAME


Busque el nmero del jefe de Lorentz revisando la columna MANAGER_ID. Nmero
de gerente de Lorentz es 103.
Busque el nombre del jefe con EMPLOYEE_ID 103 revisando la columna
LAST_NAME. El nmero de empleado de Hunold es de 103, por lo que Hunold es el
gerente de Lorentz.

FIS
En este proceso, nos fijamos en la tabla dos veces. La primera vez que se mira en la tabla
para encontrar Lorentz en la columna LAST_NAME y el valor MANAGER_ID de 103. La
segunda vez que busque en la columna para encontrar EMPLOYEE_ID 103 y la columna
LAST_NAME para encontrar Hunold.

AUTOCOMBINACIONES USANDO LA CLUSULA ON

SELECT worker.last_name emp, manager.last_name mgr


FROM employees worker JOIN employees manager
ON (worker.manager_id = manager.employee_id);

La clusula ON tambin se puede utilizar para unirse a las columnas que tienen nombres
diferentes, dentro de la misma tabla o en una tabla diferente.

El ejemplo que se muestra es una auto-combinacin de la tabla EMPLOYESS, sobre la


base de las columnas EMPLOYEE_ID y MANAGER_ID.

Nota: El parntesis alrededor de las columnas combinadas, como en el ejemplo de la


diapositiva, (e.manager_id = m.employee_id) es opcional. Por lo tanto, incluso en
e.manager_id = m.employee_id va a funcionar.
UNIONES DE NO IGUALDAD (NONEQUIJOIN)

FIS
Un combinacin de no igualdad (nonequijoin) es una condicin de combinacin que
contiene algo ms que un operador de igualdad.

La relacin entre las tablas EMPLOYEES y JOB_GRADES es un ejemplo de un


combinacin de no igualdad (nonequijoin). La columna de SALARY en la tabla
EMPLOYEES oscila entre los valores de las columnas y LOWEST_SAL y HIGHEST_SAL
de la tabla JOB_GRADES. Por lo tanto, cada empleado puede clasificarse en funcin de
su salario. La relacin se obtiene mediante un operador que no sea la igualdad (=)
operador.

OBTENER REGISTROS CON NONEQUIJOINS

SELECT e.last_name, e.salary, j.job_title


FROM employees e JOIN jobs j
ON e.salary
BETWEEN j.min_salary AND j.max_salary;
FIS
El ejemplo de la diapositiva crea una nonequijoin para evaluar el grado de un empleado
de salario. El salario debe ser entre cualquier par de los rangos salariales bajos y altos.

Es importante sealar que todos los empleados aparecer exactamente una vez cuando
esta consulta es ejecutada. Ningn empleado se repite en la lista. Hay dos razones para
esto:

Ninguna de los registros de la tabla JOBS contienen los ttulos que se superponen. Es
decir, el valor de los sueldos de un empleado puede estar slo entre los bajos salarios
y altos valores de sueldos de una de los registros de la tabla en su escala salarial.
Todos los sueldos de los empleados se encuentran dentro de los lmites previstos por
la tabla de clasificacin de los puestos. Es decir, ningn empleado gana menos que el
valor ms bajo que figura en la columna MIN_SALARY o ms que el valor ms alto
que figura en la columna MAX_SALARY.

Nota: Otras condiciones (tales como <= y> =) se puede utilizar, pero entre es el ms
simple. Recuerde que debe especificar el valor baja primera y la ltima gran valor cuando
se utiliza la condicin BETWEEN. El servidor de Oracle traduce la condicin BETWEEN a
un par de condiciones AND. Por lo tanto, utilizando BETWEEN no tiene beneficios en el
rendimiento, pero debe ser utilizado slo por la simplicidad lgica.

Los alias de tabla que se hayan especificado en el ejemplo de la diapositiva por razones
de rendimiento, no debido a la ambigedad posible.
REGISTROS QUE NO COINCIDEN DIRECTAMENTE UTILIZANDO OUTER JOIN

FIS
Si un registro no cumple una condicin de combinacin, el registro no aparece en el
resultado de la consulta.

En el ejemplo de la diapositiva, una condicin equijoin simple se utiliza en las tablas


EMPLOYEES y DEPARTMENTS para devolver el resultado a la derecha. El conjunto de
resultados no contiene lo siguiente:

Departament_ID 190, porque no hay empleados con ese ID de departamento


registrados en la tabla EMPLOYEES
El empleado con el apellido Grant, ya que este empleado no se le ha asignado un ID
de departamento

Para devolver el registro del departamento que no tiene ningn empleado o empleados
que no tienen un departamento asignado, se puede utilizar una combinacin externa.

INNER JOIN VERSUS OUTER JOIN

En SQL: 1999, la combinacin de dos tablas que retornan slo los registros
coincidentes se llama INNER JOIN
Una combinacin entre dos tablas que devuelve los resultados de la unin interna, as
como los registros no coincidentes de una tabla a la izquierda (o derecha) se OUTER
join
Una combinacin entre dos tablas que devuelve los resultados de una combinacin
interna, as como los resultados de left y right join es una combinacin completa full
join.
Al unir tablas con la clausulas NATURAL JOIN, USING, u ON resulta en un INNER JOIN.
Los registros no coincidentes no se muestran en la salida. Para devolver los registros no
coincidentes, se puede utilizar OUTER JOIN. Una combinacin externa OUTER JOIN
devuelve todos los registros que satisfagan la condicin de combinacin, y tambin
devuelve todas o algunas de los registros de una tabla para la que no hay registros de la
otra tabla satisfacer la condicin de combinacin.

Hay tres tipos de combinaciones externas:


LEFT OUTER

FIS
RIGHT OUTER
FULL OUTER

LEFT OUTER JOIN

SELECT e.last_name, e.department_id, d.department_name


FROM employees e LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;

Esta consulta recupera todos los registros en la tabla de EMPLOYEES, lo que es la tabla
de la izquierda, incluso si no hay ninguna coincidencia en la tabla DEPARTAMENTS.

RIGHT OUTER JOIN

SELECT e.last_name, d.department_id, d.department_name


FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
FIS
Esta consulta recupera todos los registros en la tabla de DEPARTAMENTS, que es la
tabla de la derecha, incluso si no hay ninguna coincidencia en la tabla EMPLOYEES.

FULL OUTER JOIN

SELECT e.last_name, d.department_id, d.department_name


FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;

Esta consulta recupera todos los registros en la tabla de EMPLOYEES, incluso si no hay
coincidencia en la tabla DEPARTAMENTS. Tambin recupera todos los registros en la
tabla DEPARTAMENTS, incluso si no hay ninguna coincidencia en la tabla EMPLOYEES.
PRODUCTOS CARTESIANOS

Un producto cartesiano se forma cuando:


Una condicin de combinacin se omite
Una condicin de combinacin no es vlido
Todas los registros de la primera tabla se unen a todas los registros de la segunda
tabla
Incluya siempre una condicin de unin vlida si se quiere evitar un producto
cartesiano.

FIS
Cuando una condicin de unin no es vlida o se omite por completo, el resultado es un
producto cartesiano, en el que todas las combinaciones de registros se muestran. Todos
los registros de la primera tabla se unen a todas los registros de la segunda tabla.

Un producto cartesiano tiende a generar un gran nmero de registros y el resultado es


raramente til. Usted debe, por lo tanto, siempre incluyen una condicin de unin vlida a
menos que tenga una necesidad especfica para combinar todas los registros de todas las
tablas.

Productos cartesianos son tiles para algunas pruebas cuando se necesita generar un
gran nmero de registros para simular una cantidad razonable de datos.

GENERACIN DE UN PRODUCTO CARTESIANO

Un producto cartesiano se genera una condicin de combinacin se omite. El ejemplo de


la diapositiva muestra el nombre del ltimo empleado y el nombre del departamento de las
tablas EMPLOYEES y DEPARTAMENTS.
Debido a que no se ha especificado condicin de combinacin, todos los registros (20
registros) de la tabla EMPLOYEES estn unidos con todos los registros (8 lneas) en la
tabla de DEPARTAMENTS, generando de esta manera 160 registros en la salida.

CREACIN DE CROSS JOINS

La clusula CROSS JOIN produce el producto cruzado de dos tablas.

FIS
Esto tambin se llama un producto cartesiano entre las dos tablas.

SELECT last_name, department_name


FROM employees
CROSS JOIN departments ;

El ejemplo de la diapositiva produce un producto cartesiano de las tablas EMPLOYEES y


DEPARTAMENTS.

La tcnica CROSS JOIN puede aplicarse a muchas situaciones tilmente. Por ejemplo,
para devolver los costes laborales totales por la oficina por mes, incluso si X meses no
tiene ningn costo la mano de obra, que se puede hacer una combinacin cruzada de las
oficinas con una tabla de todos los meses.

Es una buena prctica de manera explcita CROSS JOIN en el SELECT cuando tiene la
intencin de crear un producto cartesiano. Por lo tanto, es muy claro que la intencin de
que esto suceda y no es el resultado de la falta se une.
EXAMEN

El estndar SQL: 1999 soporta la sintaxis de combinacin de los siguientes tipos de


uniones. Cul de estos tipos de combinacin de JOIN soporta Oracle?

1. Equijoins
2. Nonequijoins
3. Left Outer Join
4. Right Outer Join

FIS
5. Full Outer Join
6. Self joins
7. Natural joins
8. Productos cartesianos

Respuestas: 1, 2, 3, 4, 6, 8
RESUMEN

En esta leccin, usted debe haber aprendido a utilizar se une para mostrar los datos de
varias tablas mediante el uso de:

Las combinaciones de igualdad (Equijoins)


Los Nonequijoins
Outer Join
Self joins

FIS
Cross joins
Natural joins
Full (o dos lados) Outer joins

Hay varias formas para unir tablas.

Los tipos de uniones

Las combinaciones de igualdad (Equijoins)


Los Nonequijoins
Outer Join
Self joins
Cross joins
Natural joins
Full (o dos lados) Outer joins

Productos cartesianos

A los resultados de producto cartesiano en la pantalla de todas las combinaciones de los


registros. Esto se hace ya sea por la omisin de la clusula WHERE o mediante la
especificacin de la clusula CROSS JOIN.

Alias de tabla

Los alias de la tabla de acelerar el acceso de base de datos.


Los alias de la tabla puede ayudar a mantener el cdigo SQL ms pequeo por
conservar la memoria.
Los alias de la tabla son a veces necesario para evitar la ambigedad de la columna.
PRCTICA 6: INFORMACIN GENERAL

Esta prctica cubre los siguientes temas:


Las tablas de unin utilizando una combinacin de igualdad
Desarrollando Outer y Self-joins
Adicin de condiciones

Esta prctica tiene la intencin de darle experiencia en la extraccin de datos de ms de


una tabla utilizando el SQL:1999-compatible join.

FIS
1. Escribir una consulta para el departamento de recursos humanos para producir las
direcciones de todos los departamentos. Utilizar las ubicaciones y las tablas
COUNTRIES. Muestra el ID de la ubicacin, direccin, ciudad, estado o provincia y el
pas en la salida. Use una unin natural para producir los resultados.

2. El departamento de recursos humanos necesita un informe de todos los empleados.


Escribir una consulta para mostrar el ltimo nombre, nmero de departamento, y el
nombre del departamento para todos los empleados.

3. El departamento de recursos humanos necesita un informe de los empleados en


Toronto. Muestra el nombre del ltimo trabajo, nmero de departamento, y el nombre
del departamento para todos los empleados que trabajan en Toronto.
4. Crear un informe para mostrar el nombre de los empleados pasado y el nmero de
empleado, junto con el apellido de su director y el nmero de gerente. Etiquetar el
Empleado columnas, Emp #, Administrador, y Mons. #, respectivamente. Guarde su
instruccin SQL como lab_06_04.sql. Ejecutar la consulta.

FIS

5. Modificar lab_06_04.sql para mostrar todos los empleados, incluido el rey, que no
tiene director. Ordenar los resultados por el nmero de empleado. Guarde su
instruccin SQL como lab_06_05.sql. Ejecutar la consulta en lab_06_05.sql.


6. Crear un informe para el departamento de recursos humanos que muestra los
apellidos de los empleados, nmeros de departamento, y todos los empleados que
trabajan en el mismo departamento como un empleado determinado. D a cada
columna de una etiqueta apropiada. Guardar la secuencia de comandos en un archivo

FIS
denominado lab_06_06.sql.

7. El departamento de recursos humanos necesita un informe sobre las calificaciones de


empleo y salarios. Para familiarizarse con la tabla de JOB_GRADES, en primer lugar
mostrar la estructura de la tabla JOB_GRADES. A continuacin, cree una consulta
que muestra el nombre, el trabajo, el nombre del departamento, el salario y calificacin
de todos los empleados.
FIS

Si quieres un reto adicional, realice los siguientes ejercicios:

8. El departamento de recursos humanos quiere determinar los nombres de todos los


empleados que fueron contratados despus de Davies. Crear una consulta para
mostrar el nombre y la fecha de contratacin de cualquier empleado contratado
despus el empleado Davies.

9. El departamento de RRHH tiene que encontrar los nombres y fechas de contratacin


de todos los empleados que fueron contratados antes de que sus directivos, junto con
los nombres de sus directivos y contratar a las fechas. Guardar la secuencia de
comandos en un archivo denominado lab_06_09.sql.
FIS

You might also like