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.
Sintaxis unión SQL NATURAL JOIN
Una unión natural se puede aplicar a cualquier unión INNER, LEFT, RIGHT 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_id | user_Nom | pais_id |
---|---|---|
1 | Jeremías | 1 |
2 | Damien | 2 |
3 | Sofía | 3 |
4 | Yann | 3 |
5 | Leah | 1 |
Tabla de países:
pais_id | pais_no |
---|---|
1 | Francia |
2 | México |
3 | Bélgica |
4 | Suiza |
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_id | user_nom | pais_id | pais_no |
---|---|---|---|
1 | Jeremías | 1 | Francia |
2 | Damien | 2 | México |
3 | Sofía | 3 | Bélgica |
4 | Yann | 3 | Bélgica |
5 | Leah | 1 | Francia |
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 JOIN | Unir 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 tableB | Sintaxis 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.