Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Select (campos)
From A Inner Join B Select (campos)
On A.Clave = B.Clave From A Cross Join B
2 Combinacin interna (INNER
A B A B JOIN)
A B A B
del SQL
From A Left Join B From A Right Join B
On A.Clave = B.Clave On A.Clave = B.Clave
A B A B
Select (campos)
From A Left Join B
On A.Clave = B.Clave
Where B.Clave is Null
A B A B
Select (campos)
From A Right Join B
On A.Clave = B.Clave
Where A.Clave is Null A B
Select (campos) Select (campos)
From A Full Join B From A Right Join B
On A.Clave = B.Clave On A.Clave = B.Clave
Where (A.Clave is Null) Or (B.Clave is Null)
1
2 3 COMBINACIN EXTERNA (OUTER JOIN)
cir, que si el nmero de departamento de un empleado no Natural join Es una especializacin de la combina-
coincide con los nmeros de departamento de la tabla De- cin de igualdad, anteriormente mencionada. En este ca-
partamento, no se mostrar el empleado con su respectivo so se comparan todas las columnas que tengan el mismo
departamento en la tabla resultante. nombre en ambas tablas. La tabla resultante contiene s-
Las dos consultas siguientes son similares y se realizan de lo una columna por cada par de columnas con el mismo
manera explcita (A) e implcita (B). nombre.
Ejemplo de combinacin natural:
Ejemplo de la sentencia INNER JOIN explcita:
SELECT * FROM empleado INNER JOIN departa- SELECT * FROM empleado NATURAL JOIN depar-
mento ON empleado.IDDepartamento = departamen- tamento
to.IDDepartamento
El resultado es un poco diferente al del ejemplo de la tabla
Ejemplo de la sentencia INNER JOIN implcita: anterior, ya que esta vez la columna IDDepartamento se
muestra sola una vez en la tabla resultante.
SELECT * FROM empleado, departamento WHE-
RE empleado.IDDepartamento = departamen- El uso de esta sentencia NATURAL puede producir re-
to.IDDepartamento sultados ambiguos y generar problemas si la base de
datos cambia, porque al aadir, quitar o renombrar las
columnas puede perder el sentido la sentencia; por esta
Resultados: razn es preferible expresar el predicado usando las otras
El empleado Gaspar y el departamento de Mercadeo no expresiones nombradas anteriormente.
son presentados en los resultados ya que ninguno de stos
tiene registros correspondientes en la otra tabla. No existe
un departamento con nmero 36 ni existe un empleado 3 Combinacin externa (OUTER
con nmero de departamento 35.
JOIN)
un registro correspondiente en la tabla de la derecha. 3.2 RIGHT OUTER JOIN o RIGHT JOIN
A B
da, en la interseccin de A y B.
Ejemplo de right join para la combinacin externa:
SELECT * FROM empleado RIGHT OUTER JOIN
departamento ON empleado.IDDepartamento = depar-
tamento.IDDepartamento
do.IDDepartamento IS NULL
A B
3.4 Combinacin completa (FULL OUTER
JOIN)
3.3 Equivalencia entre LEFT JOIN y Diagrama de Venn representando el Full Join, entre las tablas A
RIGHT JOIN y B, de una sentencia SQL
3.4.1 FULL JOIN excluyendo la interseccin El cdigo SQL para realizar este producto cartesiano
enuncia las tablas que sern combinadas, pero no incluye
algn predicado que ltre el resultado.
Ejemplo de combinacin cruzada explcita:
SELECT * FROM empleado CROSS JOIN departa-
mento
A B to de la consulta.
8.2 Imgenes
Archivo:Joins_del_SQL.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/c/c9/Joins_del_SQL.svg Licencia: CC BY-SA
4.0 Colaboradores: Trabajo propio Artista original: GermanX
Archivo:SQL_Join_-_01b_A_Left_Join_B.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/d/dc/SQL_Join_-_01b_A_
Left_Join_B.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original: GermanX
Archivo:SQL_Join_-_02_A_Left_Join_B_Where_B.key_=_null.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/a/a1/
SQL_Join_-_02_A_Left_Join_B_Where_B.key_%3D_null.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original:
GermanX
Archivo:SQL_Join_-_03b_A_Right_Join_B.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/8/89/SQL_Join_-_03b_
A_Right_Join_B.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original: GermanX
Archivo:SQL_Join_-_04.5_Left_Join_equivalente_a_Right_Join.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/8/
87/SQL_Join_-_04.5_Left_Join_equivalente_a_Right_Join.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original:
GermanX
Archivo:SQL_Join_-_04_A_Right_Join_B_Where_A.key_=_null.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/2/
27/SQL_Join_-_04_A_Right_Join_B_Where_A.key_%3D_null.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista ori-
ginal: GermanX
Archivo:SQL_Join_-_05b_A_Full_Join_B.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/3/3d/SQL_Join_-_05b_A_
Full_Join_B.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original: GermanX
Archivo:SQL_Join_-_06b_A_Full_Join_B_Where_A.key_=_null_Or_B.key_=_null.svg Fuente: https://upload.wikimedia.org/
wikipedia/commons/1/1d/SQL_Join_-_06b_A_Full_Join_B_Where_A.key_%3D_null_Or_B.key_%3D_null.svg Licencia: CC BY-SA
4.0 Colaboradores: Trabajo propio Artista original: GermanX
Archivo:SQL_Join_-_07_A_Inner_Join_B.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/1/18/SQL_Join_-_07_A_
Inner_Join_B.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original: GermanX
Archivo:SQL_Join_-_08_A_Cross_Join_B.svg Fuente: https://upload.wikimedia.org/wikipedia/commons/8/82/SQL_Join_-_08_A_
Cross_Join_B.svg Licencia: CC BY-SA 4.0 Colaboradores: Trabajo propio Artista original: GermanX