Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

La Sentencia JOIN en SQL

No description
by

Enrique Pérez

on 13 July 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of La Sentencia JOIN en SQL

La Sentencia JOIN en SQL
Combinación Interna (INNER JOIN)
INNER JOIN
Explícita
SELECT Campos
FROM Empleado
INNER JOIN
Departamento

ON
Empleado.IDDepartamento = Departamento.IDDepartamento;
INNER JOIN
Implícita
SELECT Campos
FROM Empleado, Departamento
WHERE
Empleado.IDDepartamento = Departamento.IDDepartamento;
Combinación Externa (OUTER JOIN)
Combinación Tipo Theta
(Utiliza
Comparaciones
)
SELECT *
FROM Empleado INNER JOIN Departamento
ON Empleado.IDDepartamento
<
Departamento.IDDepartamento;
Puede ser Clasificadas Como:
De Equivalencia (Equi-Join)
(Es una especie de Theta-Join que usa
Comparaciones de Igualdad =
)
SELECT *
FROM empleado INNER JOIN departamento
ON empleado.IDDepartamento
=
departamento.IDDepartamento;
Natural (Natural Join)
SELECT *
FROM Empleado NATURAL JOIN Departamento;
Cruzada (Cross Join)
Explícita
SELECT *
FROM Empleado
CROSS JOIN
Departamento;
Cruzada (Cross Join)
Implícita
SELECT *
FROM Empleado
,
Departamento;
De Tabla
Izquierda
(
LEFT
OUTER JOIN) o (
LEFT
JOIN)
SELECT *
FROM Empleado
LEFT
OUTER JOIN Departamento
ON Empleado.IDDepartamento = Departamento.IDDepartamento;
De Tabla
Derecha
(
RIGHT
OUTER JOIN) o (
RIGHT
JOIN)
SELECT *
FROM Empleado
RIGHT
OUTER JOIN Departamento
ON Empleado.IDDepartamento = Departamento.IDDepartamento;
Combinación
Completa
(
FULL
OUTER JOIN)
SELECT *
FROM Empleado
FULL
OUTER JOIN Departamento
ON Empleado.IDDepartamento = Departamento.IDDepartamento;
Combinación
Completa
Expresado con
UNION
SELECT *
FROM Empleado LEFT JOIN Departamento
ON Empleado.IDDepartamento = Departamento.IDDepartamento
UNION
SELECT *
FROM Empleado RIGHT JOIN Departamento
ON Empleado.IDDepartamento = Departamento.IDDepartamento
WHERE Empleado.IDDepartamento IS NULL;
Tablas para los Ejemplos
Tabla Empleado
Tabla Departamento
NombreDepartamento IDDepartamento
Ventas 31
Ingeniería 33
Producción 34
Mercadeo 35

Apellido IDDepartamento
Andrade 31
Jordán 33
Steinberg 33
Róbinson 34
Zolano 34
Gaspar 36

Empleado.
Apellido
Zolano
Jordán
Róbinson
Steinberg
Andrade
Empleado.
IDDepartamento
34
33
34
33
31
Departamento.
NombreDepartamento
Producción
Ingeniería
Producción
Ingeniería
Ventas
Departamento.
IDDepartamento
34
33
34
33
31
Empleado.Apellido IDDepartamento Departamento.NombreDepartamento
Zolano 34 Producción
Jordán 33 Ingeniería
Róbinson 34 Producción
Steinberg 33 Ingeniería
Andrade 31 Ventas
Empleado.
Apellido
Jordán
Andrade
Róbinson
Zolano
Gaspar
Steinberg
Empleado.
IDDepartamento
33
31
34
34
36
33
Departamento.
NombreDepartamento
Ingeniería
Ventas
Producción
Producción
NULL
Ingeniería
Departamento.
IDDepartamento
33
31
34
34
NULL
33
Empleado.
Apellido
Jordán
Andrade
Róbinson
Zolano
NULL
Steinberg
Empleado.
IDDepartamento
33
31
34
34
NULL
33
Departamento.
NombreDepartamento
Ingeniería
Ventas
Producción
Producción
Mercadeo
Ingeniería
Departamento.
IDDepartamento
33
31
34
34
35
33
Empleado.
Apellido
Jordán
Andrade
Róbinson
Zolano
NULL
Steinberg
Gaspar
Empleado.
IDDepartamento
33
31
34
34
NULL
33
36
Departamento.
NombreDepartamento
Ingeniería
Ventas
Producción
Producción
Mercadeo
Ingeniería
NULL
Departamento.
IDDepartamento
33
31
34
34
35
33
NULL
Andrade
31

Ventas 31
Jordán
33

Ventas 31
Steinberg
33

Ventas 31
Zolano
34

Ventas 31
Róbinson
34

Ventas 31
Gaspar
36

Ventas 31
Andrade
31

Ingeniería 33
Jordán
33

Ingeniería 33
Steinberg
33

Ingeniería 33
Solano
34

Ingeniería 33
Róbinson
34

Ingeniería 33
Gaspar
36

Ingeniería 33
Andrade
31

Producción 34
Jordán
33

Producción 34
Steinberg
33

Producción 34
Solano
34

Producción 34
Róbinson
34

Producción 34
Gaspar
36

Producción 34
Andrade
31

Mercadeo 35
Jordán
33

Mercadeo 35
Steinberg
33

Mercadeo 35
Solano
34

Mercadeo 35
Róbinson
34

Mercadeo 35
Gaspar
36

Mercadeo 35
Empleado.
Apellido
Empleado.
IDDepartamento
Departamento.
NombreDepartamento
Departamento.
IDDepartamento
Esta consulta toma todos los registros de la tabla
Empleado
y encuentra todas las combinaciones en la tabla
Departamento
.
La sentencia JOIN compara los valores en la columna IDDepartamento
en ambas tablas
.
Cuando No existe esta correspondencia entre algunas combinaciones, éstas No se muestran; es decir, que si
el número de departamento de un empleado
No coincide con ninguno de
los números de departamento de la tabla Departamento
, No se mostrará el empleado con su respectivo departamento en la tabla resultante, y viceversa.
El empleado
Gaspar
y el departamento de
Mercadeo
No aparecen en los resultados ya que ninguno de éstos tiene registros correspondientes en la otra tabla.
No existe
un departamento con número 36
Ni existe
un empleado con número de departamento 35
.
Es una combinación que
utiliza comparaciones
dentro del predicado JOIN.
Empleado.
Apellido
Jordán
Andrade
Róbinson
Zolano
Steinberg
Empleado.
IDDepartamento
33
31
34
34
33
Departamento.
NombreDepartamento
Ingeniería
Ventas
Producción
Producción
Ingeniería
Departamento.
IDDepartamento
33
31
34
34
33
Es una especialización de la Combinación de Equivalencia (Equi-Join).
En este caso se comparan todas las columnas que tengan el mismo nombre en ambas tablas.
La tabla resultante contiene
sólo una columna por cada par de columnas con el mismo nombre
.
Presenta el
Producto Cartesiano de todos los registros de las dos tablas
.
Es decir que lo combina todo con todo de ambas tablas.

En este ejemplo se enuncian las tablas que serán combinadas, pero No incluye algún predicado que filtre el resultado, por eso vemos tantas datos repetidos.
Esta tabla que obtenemos como resultado no tiene mucha utilidad.
Mediante estas operaciones
No es necesario que cada registro en las tablas a tratar tenga un registro relacionado en la otra tabla
.
El registro de una tabla se mantiene en la tabla resultante aunque no exista otro registro que le corresponda en la otra.
El resultado siempre contiene Todos los registros de la tabla de la
Izquierda
en la consulta, aunque no exista un registro correspondiente en la tabla de la
Derecha
.
El resultado siempre contiene Todos los registros de la tabla de la
Derecha
en la consulta, aunque no exista un registro correspondiente en la tabla de la
Izquierda
.
Esta operación presenta los resultados de tabla
Izquierda
y tabla
Derecha
aunque no tengan correspondencia en la otra tabla.
La tabla combinada contendrá, entonces, todos los registros de ambas tablas y presentará valores nulos
NULLs
para registros sin pareja.
Full transcript