Está en la página 1de 36

6

Visualización de datos
de varias tablas
Objetivos

Después de completar esta lección, debería poder hacer lo


siguiente:
• Escriba sentencias SELECT para acceder a datos de más
de una tabla usando uniones igualitarias y no igualitarias
• Une una tabla a sí misma mediante una autounión
• Ver datos que, por lo general, no cumplen una condición de
unión mediante el uso de uniones externas
• Genere un producto cartesiano de todas las filas de dos o
más tablas

6 -2
Agenda de la lección

• Tipos de JOINS y su sintaxis


• Unión natural:
– Cláusula USING
– Cláusula ON
• Auto-unión
• Uniones no igualitarias
• EXTERNA :
– IZQUIERDA Unión EXTERNA
– BIEN Unión EXTERNA
– LLENO Unión EXTERNA
• producto cartesiano
– Unión cruzada

6 -3
Obtención de datos de varias tablas

EMPLEADOS DEPARTAMENTOS

6 -4
Tipos de Uniones

Las uniones que cumplen con el estándar SQL:1999 incluyen


lo siguiente:
• Uniones naturales:
– NATURAL Cláusula JOIN
– Cláusula USING
– Cláusula ON
• Uniones exteriores:
– IZQUIERDA EXTERIOR UNIRSE
– BIEN EXTERIOR UNIRSE
– LLENO EXTERIOR UNIRSE
• Uniones cruzadas

6 -5
Unión de tablas mediante la sintaxis SQL:1999

Use una combinación para consultar datos de más de una


tabla:
SELECCIONE tabla1.columna, tabla2.columna
DESDE la tabla1
[JUNTA NATURAL table2 ] |
[ÚNETE a table2 USANDO ( column_name )] |
[ÚNETE a la mesa2
ON ( tabla1.nombre_columna = tabla2.nombre_columna )]|
[IZQUIERDA|DERECHA|JUNTA EXTERNA COMPLETA table2
ON ( tabla1.nombre_columna = tabla2.nombre_columna )]|
[JUNTA CRUZADA tabla2 ];

6 -6
de nombres de columna ambiguos

• Use prefijos de tabla para calificar los nombres de las


columnas que se encuentran en varias tablas.
• Utilice prefijos de tabla para mejorar el rendimiento.
• En lugar de prefijos de nombre de tabla completos, use alias
de tabla.
• El alias de tabla le da a la tabla un nombre más corto:
– Mantiene el código SQL más pequeño, usa menos memoria
• Utilice alias de columna para distinguir las columnas que
tienen nombres idénticos, pero residen en tablas diferentes.

6 -7
Agenda de la lección

• Tipos de JOINS y su sintaxis


• Unión natural:
– Cláusula USING
– Cláusula ON
• Auto-unión
• Uniones no igualitarias
• EXTERNA :
– IZQUIERDA Unión EXTERNA
– BIEN Unión EXTERNA
– LLENO Unión EXTERNA
• producto cartesiano
– Unión cruzada

6 -8
Creación de uniones naturales

• El NATURAL La cláusula JOIN se basa en todas las


columnas de las dos tablas que tienen el mismo nombre.
• Selecciona filas de las dos tablas que tienen valores iguales
en todas las columnas coincidentes.
• Si las columnas que tienen los mismos nombres tienen
diferentes tipos de datos, se devuelve un error.

6 -9
Recuperación de registros con combinaciones
naturales

SELECCIONE id_departamento, nombre_departamento,


ubicación_id, ciudad
DESDE departamentos
Ubicaciones de UNIÓN NATURAL;

6 -10
Creación de uniones con la cláusula USING

• Si varias columnas tienen los mismos nombres pero los


tipos de datos no coinciden, se puede aplicar la unión
natural mediante la cláusula USING para especificar las
columnas que se deben usar para una unión igualitaria.
• Utilice la cláusula USING para hacer coincidir solo una
columna cuando coincida más de una columna.
• El NATURAL Las cláusulas JOIN y USING son mutuamente
excluyentes.

6 -11
Unir nombres de columnas

EMPLEADOS DEPARTAMENTOS

Clave primaria

Clave externa

6 -12
Recuperación de registros con la cláusula USING

SELECCIONE id_empleado, apellido,


id_ubicación, id_departamento
DE empleados ÚNETE departamentos
USANDO (department_id) ;

6 -13
Uso de alias de tabla con la cláusula USING

• No califique una columna que se utiliza en la cláusula


USING .
• Si la misma columna se usa en otra parte de la instrucción
SQL, no le agregue un alias.
SELECCIONE l.city, d.department_name
DESDE ubicaciones l ÚNETE departamentos d
USANDO (ubicación_id)
DONDE d.ubicación_id = 1400;

6 -14
Creación de uniones con la cláusula ON

• La condición de unión para la unión natural es básicamente


una unión igualitaria de todas las columnas con el mismo
nombre.
• Utilice la cláusula ON para especificar condiciones
arbitrarias o especificar columnas para unir.
• La condición de unión está separada de otras condiciones
de búsqueda.
• La cláusula ON hace que el código sea fácil de entender.

6 -15
Recuperación de registros con la cláusula ON

SELECCIONE e.employee_id, e.last_name, e.department_id,


d.departamento_id, d.ubicación_id
DE empleados e ÚNETE a departamentos d
ON (e.department_id = d.department_id);

6 -16
Creación de combinaciones de tres vías con
la cláusula ON

SELECCIONE id_empleado, ciudad, nombre_departamento


DE empleados e
ÚNETE departamentos d
ON d.departamento_id = e.departamento_id
ÚNETE ubicaciones l
ON d.id_ubicación = l.id_ubicación;

6 -17
Aplicar condiciones adicionales
a una unión
Utilice la cláusula AND o la cláusula WHERE para aplicar
condiciones adicionales:
SELECCIONE e.employee_id, e.last_name, e.department_id,
d.departamento_id, d.ubicación_id
DE empleados e ÚNETE a departamentos d
ON (e.department_id = d.department_id)
Y e.manager_id = 149;

O
SELECCIONE e.employee_id, e.last_name, e.department_id,
d.departamento_id, d.ubicación_id
DE empleados e ÚNETE a departamentos d
ON (e.department_id = d.department_id)
DONDE e.manager_id = 149;

6 -18
Agenda de la lección

• Tipos de JOINS y su sintaxis


• Unión natural:
– Cláusula USING
– Cláusula ON
• Auto-unión
• Uniones no igualitarias
• EXTERNA :
– IZQUIERDA Unión EXTERNA
– BIEN Unión EXTERNA
– LLENO Unión EXTERNA
• producto cartesiano
– Unión cruzada

6 -19
Unir una tabla a sí misma

EMPLEADOS (TRABAJADOR) EMPLEADOS (GERENTE)

… …

MANAGER_ID en la tabla WORKER es igual a


EMPLOYEE_ID en la tabla MANAGER .

6 -20
Auto-uniones utilizando la cláusula ON

SELECCIONE trabajador.apellido emp, gerente.apellido gerente


DE empleados trabajador ÚNETE empleados gerente
ON (trabajador.manager_id = manager.employee_id);

6 -21
Agenda de la lección

• Tipos de JOINS y su sintaxis


• Unión natural:
– Cláusula USING
– Cláusula ON
• Auto-unión
• Uniones no igualitarias
• EXTERNA :
– IZQUIERDA Unión EXTERNA
– BIEN Unión EXTERNA
– LLENO Unión EXTERNA
• producto cartesiano
– Unión cruzada

6 -22
Uniones no igualitarias

EMPLEADOS TRABAJO_GRADES

JOB_GRADES define el rango de


… valores LOWEST_SAL y HIGHEST_SAL
para cada GRADE_LEVEL . Por lo
tanto, la columna GRADE_LEVEL se
puede usar para asignar calificaciones
a cada empleado.

6 -23
Recuperación de registros
con combinaciones no igualitarias

SELECCIONE e.last_name, e.salary, j.grade_level


DE empleados e ÚNETE job_grades j
ON e.salario
ENTRE j.sal_más baja Y j.sal_más alta;

6 -24
Agenda de la lección

• Tipos de JOINS y su sintaxis


• Unión natural:
– Cláusula USING
– Cláusula ON
• Auto-unión
• Uniones no igualitarias
• EXTERNA :
– IZQUIERDA Unión EXTERNA
– BIEN Unión EXTERNA
– LLENO Unión EXTERNA
• producto cartesiano
– Unión cruzada

6 -25
Devolución de registros sin coincidencia directa
con combinaciones externas

DEPARTAMENT EMPLEADOS
OS

No hay empleados en el
departamento 190.

6 -26
Uniones INTERIOR versus EXTERIOR

• En SQL:1999, la combinación de dos tablas que devuelven


solo filas coincidentes se denomina combinación interna.
• Una combinación entre dos tablas que devuelve los
resultados de la combinación interna, así como las filas no
coincidentes de la tabla izquierda (o derecha) se denomina
combinación externa izquierda (o derecha).
• Una combinación entre dos tablas que devuelve los
resultados de una combinación interna, así como los
resultados de una combinación izquierda y derecha, es una
combinación externa completa.

6 -27
IZQUIERDA EXTERIOR UNIRSE

SELECCIONE e.apellido, e.id_departamento, d.nombre_departamento


FROM empleados e LEFT OUTER JOIN departamentos d
ON (e.department_id = d.department_id) ;

6 -28
BIEN EXTERIOR UNIRSE

SELECCIONE e.apellido, e.id_departamento, d.nombre_departamento


FROM empleados e RIGHT OUTER JOIN departamentos d
ON (e.department_id = d.department_id) ;

6 -29
LLENO EXTERIOR UNIRSE

SELECCIONE e.apellido, d.id_departamento, d.nombre_departamento


FROM empleados e FULL OUTER JOIN departamentos d
ON (e.department_id = d.department_id) ;

6 -30
Agenda de la lección

• Tipos de JOINS y su sintaxis


• Unión natural:
– Cláusula USING
– Cláusula ON
• Auto-unión
• sin equilibrio
• EXTERNA :
– IZQUIERDA Unión EXTERNA
– BIEN Unión EXTERNA
– LLENO Unión EXTERNA
• producto cartesiano
– Unión cruzada

6 -31
Productos cartesianos

• Un producto cartesiano se forma cuando:


– Se omite una condición de unión
– Una condición de unión no es válida
– Todas las filas de la primera tabla se unen a todas las filas de
la segunda tabla
• Para evitar un producto cartesiano, incluya siempre una
condición de unión válida.

6 -32
Generación de un producto cartesiano

EMPLEADOS (20 filas) DEPARTAMENTOS (8 filas)

Producto
cartesiano:
20 x 8 = 160 filas

6 -33
Creación de uniones cruzadas

• La CRUZ La cláusula JOIN produce el producto cruzado de


dos tablas.
• Esto también se llama un producto cartesiano entre las dos
tablas.
SELECCIONE apellido, nombre_departamento
DE empleados
CROSS JOIN departamentos;

6 -34
Resumen

En esta lección, debería haber aprendido a usar uniones para


mostrar datos de varias tablas usando:
• Uniones equitativas
• Uniones no igualitarias
• Uniones exteriores
• Auto-uniones
• Uniones cruzadas
• Uniones naturales
• Uniones exteriores completas (o de dos caras)

6 -35
Práctica 6: Resumen

Esta práctica cubre los siguientes temas:


• Unir tablas usando un equijoin
• Realización de uniones externas y automáticas
• Adición de condiciones

6 -36

También podría gustarte