Diseño de Bases de Datos
SQL Básico- JOIN
---
Tipos de JOINs
ALIAS
• Cuando se consulta una base de datos, los nombres de las columnas
se usan como cabeceras de presentación.
• Si éste resulta demasiado largo, corto o críptico, puede cambiarse con
la misma sentencia SQL de consulta, creando un alias de columna.
• Hay dos tipos de alias que se utilizan con mayor frecuencia: alias de
columna y alias de tabla
• Los alias de columna existen para ayudar en la organización del resultado.
• Los alias de tabla, se colocan alias directamente luego del nombre de tabla en
la cláusula FROM. Esto es conveniente cuando desea obtener información de
dos tablas separadas (JOIN)
Construcción de un Query...
• En la clausula SELECT hay que nombrar todas las columnas que
queremos mostrar
• Cualificar el nombre de la columna si hace falta (alias)
• En la clausula FROM, nombrar todas las tablas afectadas
• Incluir las columnas que se utilizan en la cláusula WHERE (definidas
en el FROM), aún si no se mencionan en la cláusula SELECT
...Construcción de un Query
• Tomar un par de tablas y relacionarlas
• Indicar en la cláusula WHERE, la condición que relaciona las tablas
• Unir (Join) las condiciones con el operador AND
• Incluir cualquier condición adicional en la cláusula WHERE
• Conectarlas con el operador AND
Uniendo (Join) Múltiples Tablas
• Las condiciones muestran como las columnas se relacionan
por cada dos tablas
JOIN
• La sentencia JOIN en SQL permite combinar registros de dos o más
tablas en una base de datos relacional.
• Join – Una operación relacional que causa que dos o más tablas con
un dominio común se combinen en una sola tabla o view
Consideraciones
• Por razones de performance se debe de limitar el número de tablas
utilizados en un join.
• Entre más tablas se utilicen mas tiempo va a tardar en procesar la
información.
• Los join de preferencia deben de estar basados entre la llave primera
y la llave foránea de las tablas.
Tipos de Join
• En el Lenguaje de Consultas Estructurado (SQL), hay diversos tipos de
JOIN, los que abordaremos en esta ocasión están:
• Interno (Inner)
• Externo (Outer)
• Cruzado (Cross)
• A si mismo (Self)
Utilizando este E-R en algunos ejemplo a mostrar
Figura 1
INNER JOIN
Inner Join
• Un inner join se usa cuando se quiera combinar dos tablas que tienen
valores en común en una o más columnas.
• Ejemplo
• Se puede usar un inner join para combinar el número de cliente de la tabla de
empleados con el número de empleado de la tabla de rentas.
• El resultado traería solamente los registros que cumplan con la condición en
las columnas combinadas de ambas tablas.
Ejemplo de Natural Join (Fig 1)
• Por cada cliente que puso una orden, ¿Cuál es su nombre y
el número de la orden?
Join implica dos o más tablas en el FROM
SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, ORDER_ID
FROM CUSTOMER_T NATURAL JOIN ORDER_T ON
CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;
La cláusula ON ejecuta el cotejo de
igualdad para columnas comunes Nota: En la siguiente figura, se
verá que solo 10 clientes tienen
de las dos tablas.
ordenes emitidas
➔ Sólo 10 filas deben
devolverse de este INNER join.
A continuation se muestran los datos de
CUSTOMER y ORDER
Otro Ejemplo de Natural Join
Nota: Curiosamente no
incluye la directiva ON
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
JOIN USING
La cláusula USING permite hacer las conexiones entre
las relaciones de las tablas afectadas
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
JOIN ON Clause
Similar al JOIN del libro de texto que se explicó de la fig 8-1. Observe que la cláusula
ON requiere comparar el Primary Key de una tabla contra el Foreign Key de la otra.
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
OUTER JOIN
Outer Join
• Un outer join se usa cuando se quiere combinar dos tablas juntas,
pero se quiere que el resultado no solo contenga los registros que se
cumplen con la condición del join, sino también cualquier registro
que no cumpla de una tabla o de las demás.
• Ejemplo
• Se puede usar un outer join para combinar la tabla de clientes con la tabla de
rentas, para poder ver una lista de todos los clientes aunque nunca hayan
rentado una película.
Tipos de Outer Join
• Devuelven no solamente las filas que parean, sino también las filas
con atributos que no parean ya sea de una tabla o de ambas.
• Hay tres tipos:
• Left outer join: Todas las filas de la tabla de la izquierda (la primera que se menciona
en el query) se parean con las filas de la tabla a la derecha. Estas son las que se van a
incluir.
• Right outer join: Todas las filas de la tabla de la derecha (la segunda que se
menciona en el query) se parean con las filas de la tabla a la izquierda. Estas son las
que se van a incluir.
• Full outer join: Todas las filas de ambas tablas se van a incluir independientemente
del pareo.
DE NUEVO CON LA FIGURA 1 QUE MUESTRA LOS
DATOS DE CUSTOMER y ORDER
Ejemplo de Outer Join
• Muestra el nombre del cliente, su ID y el número de la
orden de todos los clientes. Incluye la información del
cliente incluyendo a los que tienen ordenes y también a los
que no.
SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, ORDER_ID
FROM CUSTOMER_T, LEFT OUTER JOIN ORDER_T
ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;
LEFT OUTER JOIN con el ON causa
que la data de los clientes A diferencia del INNER join,
aparesca aún si no hay datos de este SELECT incluirá las filas
ordenes correspondiente de clientes que no tienen filas
de ordenes creadas.
Resultados
JOIN USING Clause
La cláusula USING permite hacer las conexiones entre las
relaciones de las tablas afectadas
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
JOIN ON Clause
Observe que la cláusula ON requiere comparar el Primary Key de una
tabla contra el Foreign Key de la otra.
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
Otros ejemplos de LEFT, RIGHT y
FULL JOIN
UTILIZANDO ESTA BASE DE DATOS
CON EL SIGUIENTE CONTENIDO EN LAS TABLAS
CUSTOMER
INVOICE
LINE
PRODUCT
VENDOR
Outer Joins - LEFT
No tienen
producto
asignado
Left outer join: Todas las filas de la tabla de la izquierda (la
primera que se menciona en el query) se parean con las filas
de la tabla a la derecha. Estas son las que se van a incluir.
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel Pag: 338
Outer Joins - RIGHT
Salen las 16 filas de la tabla
PRODUCT
Right outer join: Todas las filas de la tabla de la derecha (la
segunda que se menciona en el query) se parean con las filas
de la tabla a la izquierda. Estas son las que se van a incluir.
Database Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
Pag: 339
Outer Joins - FULL
No tienen
producto
asignado
Se incluyen todas
Full outer join: Todas las filas de ambas tablas se van a
incluir independientemente del pareo. Systems: Design, Implementation, & Management, 7th Edition, Rob & Coronel
Database
CROSS JOIN
Cross Join
• Un cross join se usa cuando se quieran combinar todos los registros
de una tabla con cada registro de otra tabla.
• Ejemplo:
• Se puede usar un cross join si se quiere una manera rápida de alimentar una
tabla con información.
• Este tipo de joins también se les conoce como producto cartesiano.
Cross Join
• Sintaxis:
• SELECT column-list FROM table1 CROSS JOIN table2
• Ejemplo:
• SELECT * FROM invoice CROSS JOIN line;
• Si la tabla invoice tiene 8 filas y la tabla line tiene 18, el total del
resultado será 144 filas (8 * 18)
Product
• El producto (Cartesian Product) de dos tablas es la combinación de todas
las filas en la primera tabla y todas las filas en la segunda tabla
• Se omite la cláusula WHERE cuando se utiliza PRODUCT
Ejemplo de PRODUCT
SELF JOIN
Self Join
• Un self join se usa cuando quiere combinar una tabla a si misma.
• En casos especiales una tabla puede unirse a sí misma, produciendo
una auto-combinación.
• Ejemplo:
• Se puede usar un self join cuando una columna de una tabla debe referenciar
una columna diferente en la misma tabla.
• El caso clásico de conocer cual es el nombre del jefe de un subalterno, siendo
ambos parte del personal conocido como empleados.
Consideraciones
• Se necesita utilizar los alias para poder utilizarlo
• Se utiliza cuando se comparan registros dentro de una tabla
• El alias permite tratar una tabla como dos tablas separadas
Ejemplo de Self Join
Esto se puede hacer con el Primary key también.
EJERCICIO VARIOS
Tablas de referencia
Inner Join
Theta-join
Equi-JOIN (De equivalencia)
Natural Join
Cross Join (Producto Cartesiano)
Resultado
Left Outer Join
Right Outer Join
Full Outer Join
GRACIAS