SQL: conectar

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

SQL: conectar

Este tutorial de SQL explica cómo usar SQL participar Con gramática, ilustraciones visuales y ejemplos.

describir

SQL JOINS se utiliza para recuperar datos de varias tablas. Se realiza un SQL JOIN cada vez que se enumeran dos o más tablas en una instrucción SQL.

Hay 4 tipos diferentes de conexiones SQL:

  • SQL INNER JOIN (a veces llamado unión simple)
  • Combinación externa izquierda de SQL (a veces llamada combinación izquierda)
  • SQL RIGHT OUTER JOIN (a veces llamado RIGHT JOIN)
  • SQL FULL OUTER JOIN (a veces llamado FULL JOIN)

Analicemos la sintaxis de SQL JOIN, veamos una ilustración visual de SQL JOIN y exploremos algunos ejemplos.

Ejemplo de DDL/DML

Si desea seguir este tutorial, obtenga DDL para crear las tablas y DML para completar los datos. ¡Entonces pruebe los ejemplos en su propia base de datos!

SQL INNER JOIN (unión simple)

Lo más probable es que haya escrito una instrucción SQL que utilice SQL INNER JOIN. Es el tipo más común de unión SQL. SQL INNER JOINS devuelve todas las filas de varias tablas que cumplen la condición de unión.

sintaxis

La sintaxis para INNER JOIN en SQL es:

SELECT columns
FROM table1 
INNER JOIN table2
ON table1.column = table2.column;

ilustración visual

En este gráfico visual, SQL INNER JOIN devuelve el área sombreada:

SQL INNER JOIN devolverá los registros donde se cruzan table1 y table2.

ejemplo

Veamos un ejemplo de cómo utilizar INNER JOIN en una consulta.

En este ejemplo, tenemos una tabla llamada clientes con los siguientes datos:

Identificación del cliente apellido nombre sitio favorito
4000 jackson José Red de Ciencia y Tecnología
5000 Herrero simple digminecraft.com
6000 Ferguson samantha granactividad.com
7000 Reynolds Alan revisatumath.com
8000 anderson Página nulo
9000 Johnson Derek Red de Ciencia y Tecnología

También existe una tabla llamada pedidos con los siguientes datos:

Solicitar ID Identificación del cliente fecha de orden
1 7000 2016/04/18
2 5000 2016/04/18
3 8000 2016/04/19
4 4000 2016/04/20
5 nulo 2016/05/01

Ingrese la siguiente instrucción SQL:

SELECT customers.customer_id, orders.order_id, orders.order_date
FROM customers 
INNER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;

Se seleccionarán 4 registros. Estos son los resultados que deberías ver:

Identificación del cliente Solicitar ID fecha de orden
4000 4 2016/04/20
5000 2 2016/04/18
7000 1 2016/04/18
8000 3 2016/04/19

Este ejemplo devolverá todas las filas de las tablas de pedidos y clientes en las que haya un valor de id_cliente coincidente tanto en la tabla de pedidos como en la de clientes.

Las filas con customer_id igual a 6000 y 9000 en la tabla de clientes se omitirán porque no existen en ninguna de las tablas. La fila con order_id 5 en la tabla de pedidos se omitirá porque no hay NULL customer_id en la tabla de clientes.

sintaxis antigua

Como nota final, vale la pena mencionar que el ejemplo anterior de INNER JOIN podría reescribirse usando la sintaxis implícita anterior de la siguiente manera (pero aún recomendamos usar la sintaxis de palabra clave INNER JOIN):

SELECT customers.customer_id, orders.order_id, orders.order_date
FROM customers, orders
WHERE customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;

Combinación externa izquierda de SQL

Otro tipo de combinación se llama UNIÓN EXTERNA IZQUIERDA.Este tipo de unión devuelve todas las filas en el reloj izquierdo especificado en la condición ON, y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).

sintaxis

La sintaxis para LEFT OUTER JOIN en SQL es:

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;

En algunas bases de datos, la palabra clave OUTER se omite y simplemente se escribe LEFT JOIN.

ilustración visual

En este gráfico visual, SQL LEFT OUTER JOIN devuelve el área sombreada:

SQL LEFT OUTER JOIN devolverá todos los registros de la tabla 1 y solo los registros de la tabla 2 que se cruzan con la tabla 1.

ejemplo

Ahora veamos un ejemplo de cómo usar LEFT OUTER JOIN en una instrucción SELECT.

Usando la misma tabla de clientes que en el ejemplo anterior:

Identificación del cliente apellido nombre sitio favorito
4000 jackson José Red de Ciencia y Tecnología
5000 Herrero simple digminecraft.com
6000 Ferguson samantha granactividad.com
7000 Reynolds Alan revisatumath.com
8000 anderson Página nulo
9000 Johnson Derek Red de Ciencia y Tecnología

y una tabla de pedidos con los siguientes datos:

Solicitar ID Identificación del cliente fecha de orden
1 7000 2016/04/18
2 5000 2016/04/18
3 8000 2016/04/19
4 4000 2016/04/20
5 nulo 2016/05/01

Ingrese la siguiente instrucción SQL:

SELECT customers.customer_id, orders.order_id, orders.order_date
FROM customers 
LEFT OUTER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;

Se seleccionarán 6 registros. Estos son los resultados que deberías ver:

Identificación del cliente Solicitar ID fecha de orden
4000 4 2016/04/20
5000 2 2016/04/18
6000 nulo nulo
7000 1 2016/04/18
8000 3 2016/04/19
9000 nulo nulo

Este ejemplo de LEFT OUTER JOIN devolverá todas las filas en la tabla de clientes y solo aquellas filas en la tabla de pedidos donde los campos de combinación son iguales.

Si el valor de customer_id en la tabla de clientes no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán como NULL en el conjunto de resultados. Como puede ver, las filas con customer_id 6000 y 9000 se incluirán en LEFT OUTER JOIN, pero los campos order_id y order_date aparecen como NULL.

Combinación externa derecha de SQL

Otro tipo de unión se llama SQL RIGHT OUTER JOIN.Este tipo de combinación devuelve todas las filas de la tabla DERECHA especificadas en la condición ON y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).

sintaxis

La sintaxis de RIGHT OUTER JOIN en SQL es:

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;

En algunas bases de datos, la palabra clave OUTER se omite y simplemente se escribe RIGHT JOIN.

ilustración visual

En este gráfico visual, SQL RIGHT OUTER JOIN devuelve el área sombreada:

SQL RIGHT OUTER JOIN devolverá todos los registros en table2 y solo aquellos registros en table1 que se cruzan con table2.

ejemplo

Ahora veamos un ejemplo de cómo usar RIGHT OUTER JOIN en una instrucción SELECT.

Usando la misma tabla de clientes que en el ejemplo anterior:

Identificación del cliente apellido nombre sitio favorito
4000 jackson José Red de Ciencia y Tecnología
5000 Herrero simple digminecraft.com
6000 Ferguson samantha granactividad.com
7000 Reynolds Alan revisatumath.com
8000 anderson Página nulo
9000 Johnson Derek Red de Ciencia y Tecnología

y una tabla de pedidos con los siguientes datos:

Solicitar ID Identificación del cliente fecha de orden
1 7000 2016/04/18
2 5000 2016/04/18
3 8000 2016/04/19
4 4000 2016/04/20
5 nulo 2016/05/01

Ingrese la siguiente instrucción SQL:

SELECT customers.customer_id, orders.order_id, orders.order_date
FROM customers 
RIGHT OUTER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;

Se seleccionarán 5 registros. Estos son los resultados que deberías ver:

Identificación del cliente Solicitar ID fecha de orden
nulo 5 2016/05/01
4000 4 2016/04/20
5000 2 2016/04/18
7000 1 2016/04/18
8000 3 2016/04/19

Este ejemplo de RIGHT OUTER JOIN devolverá todas las filas en la tabla de pedidos y solo aquellas filas en la tabla de clientes donde los campos de combinación son iguales.

Si el valor de customer_id en la tabla de pedidos no existe en la tabla de clientes, todos los campos de la tabla de clientes aparecerán como NULL en el conjunto de resultados. Como puede ver, la fila con order_id 5 se incluirá en RIGHT OUTER JOIN, pero el campo customer_id aparecerá como NULL.

Combinación externa completa de SQL

Otro tipo de unión se llama SQL FULL OUTER JOIN. Este tipo de combinación devuelve todas las filas de las tablas izquierda y derecha, con valores NULL donde no se cumplen las condiciones de combinación.

sintaxis

Sintaxis de SQL Unión exterior completa Sí:

SELECT columns
FROM table1
FULL [OUTER] JOIN table2
ON table1.column = table2.column;

En algunas bases de datos, la palabra clave OUTER se omite y simplemente se escribe como FULL JOIN.

ilustración visual

En este gráfico visual, SQL FULL OUTER JOIN devuelve el área sombreada:

SQL FULL OUTER JOIN devolverá todos los registros en table1 y table2.

ejemplo

Veamos un ejemplo que muestra cómo usar FULL OUTER JOIN en una instrucción SELECT.

Usando la misma tabla de clientes que en el ejemplo anterior:

Identificación del cliente apellido nombre sitio favorito
4000 jackson José Red de Ciencia y Tecnología
5000 Herrero simple digminecraft.com
6000 Ferguson samantha granactividad.com
7000 Reynolds Alan revisatumath.com
8000 anderson Página nulo
9000 Johnson Derek Red de Ciencia y Tecnología

y una tabla de pedidos con los siguientes datos:

Solicitar ID Identificación del cliente fecha de orden
1 7000 2016/04/18
2 5000 2016/04/18
3 8000 2016/04/19
4 4000 2016/04/20
5 nulo 2016/05/01

Ingrese la siguiente instrucción SQL:

SELECT customers.customer_id, orders.order_id, orders.order_date
FROM customers 
FULL OUTER JOIN orders
ON customers.customer_id = orders.customer_id
ORDER BY customers.customer_id;

Se seleccionarán 7 registros. Estos son los resultados que deberías ver:

Identificación del cliente Solicitar ID fecha de orden
nulo 5 2016/05/01
4000 4 2016/04/20
5000 2 2016/04/18
6000 nulo nulo
7000 1 2016/04/18
8000 3 2016/04/19
9000 nulo nulo

Este ejemplo FULL OUTER JOIN devolverá todas las filas de la tabla de pedidos y todas las filas de la tabla de clientes. Los valores NULL se extienden a esos campos en el conjunto de resultados siempre que no se cumpla la condición de combinación. Esto significa que si el valor de customer_id en la tabla de clientes no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán como NULL en el conjunto de resultados. Además, si el valor de customer_id en la tabla de pedidos no existe en la tabla de clientes, todos los campos de la tabla de clientes aparecerán como NULL en el conjunto de resultados.

Como puede ver, se incluirán las filas con customer_id 6000 y 9000, pero los campos order_id y order_date de estos registros contienen valores NULL. También se incluirán las filas con order_id de 5, pero el campo customer_id del registro tiene un valor NULL.