SQL NATURAL JOIN: Unión natural

En SQL server, el comando SQL NATURAL JOIN se utiliza para realizar una unión natural entre 2 tablas. Esta unión se realiza con la condición de que haya columnas del mismo nombre y tipo en las 2 tablas. El resultado de una unión natural es la creación de una matriz con tantas filas como pares haya correspondientes a la asociación de columnas del mismo nombre.

Nota: Dado que necesita el mismo nombre de columna en las 2 tablas, en SQL NATURAL JOIN esto impide el uso de ciertas reglas de nomenclatura para el nombre de las columnas.

SQL NATURAL JOIN

Sintaxis unión SQL NATURAL JOIN

Una unión natural se puede aplicar a cualquier unión INNERLEFTRIGHT o  FULL. Simplemente prefije el tipo de unión con SQL NATURAL JOIN. Ejemplo de la sintaxis utilizada en una combinación interna en SQL NATURAL JOIN:

SELECT *
FROM Tab1 NATURAL INNER JOIN Tab2 
ON Table1.Column = Table2.Column;

Viendo como INNER es el valor predeterminado, también puedes hacerlo así:

SELECT *
FROM Table1 NATURAL JOIN Table2 
ON Table1.Column = Table2.Column;

Después de la palabra clave SELECT, se especifican los nombres de las columnas que se incluirán en el resultado de la consulta. El * operador se utiliza si es necesario seleccionar todas las columnas. Después de la palabra clave FROM, se especifican las tablas que deben unirse y la palabra clave NATURAl JOIN se escribe entre los nombres de las tablas.

Mientras escribo esto, las uniones naturales son compatibles con PostgreSQL, MySQL, MariaDB, SQLite y Oracle. Sin embargo, las uniones naturales no son compatibles con SQL Server (2019).

Ejemplo NATURAL JOIN en SQL Server

Un uso típico de dicha unión podría ser el uso en una aplicación que utiliza una tabla de usuario y una tabla de países. Si la tabla de usuario contiene una columna para el ID de país, será posible realizar una unión natural.

Tabla «Usuario»:

user_iduser_Nompais_id
1Jeremías1
2Damien2
3Sofía3
4Yann3
5Leah1

 

Tabla de países:

pais_idpais_no
1Francia
2México
3Bélgica
4Suiza

 

Para tener la lista de todos los usuarios con el país correspondiente, es posible realizar una consulta SQL similar a la siguiente:

SELECT *
FROM usuario
NATURAL JOIN paises

El resultado de la consulta es el siguiente:

user_iduser_nompais_idpais_no
1Jeremías1Francia
2Damien2México
3Sofía3Bélgica
4Yann3Bélgica
5Leah1Francia

 

Este ejemplo muestra que hubo una unión entre las 2 tablas gracias a la columna «pais_id».

Diferencia entre unión natural e interna en SQL

Unión natural: SQL NATURAL JOINUnir internamente: INNER JOIN
SQL une automáticamente las tablas en función de las columnas comunes.Necesitamos especificar explícitamente la(s) columna(s) usada(s) para unir la tabla usando la cláusula ON .
La combinación natural siempre devuelve columnas únicas en la tabla de salida.Las columnas utilizadas para unir la tabla están duplicadas en la salida de la unión interna.
Podemos combinar combinación izquierda, derecha y completa con combinación natural .Esto no es posible usando una unión interna.
Sintaxis para unión natural: SELECT * FROM tableA NATURAL JOIN tableBSintaxis para combinación interna: SELECT * FROM tableA a INNER JOIN tableB b ON a.column = b.column

 

Ventajas SQL natural join

Algunas ventajas de usar una unión natural en SQL incluyen:

  • Simplicidad: Una combinación natural es una forma sencilla de unir tablas basadas en columnas comunes, ya que coincide automáticamente con las filas basadas en los nombres de las columnas.
  • Rendimiento: dado que la operación de unión natural se basa en la coincidencia de nombres de columna, puede ser más eficaz que otros tipos de combinaciones que requieren que se especifiquen condiciones adicionales.
  • Automatización: La operación de unión natural está automatizada y no necesita especificar las condiciones de unión, lo que puede ahorrar tiempo y esfuerzo al escribir la consulta.

Sin embargo, es importante tener en cuenta que también hay algunas desventajas al usar la unión natural, como la posibilidad de ambigüedad si existe el mismo nombre de columna en varias tablas, o el riesgo de perder datos importantes si las condiciones de unión no se especifican correctamente.

Deja un comentario