Guía introductoria a SQL: Día 3
Índice de contenido
Resumen:
La capacidad de trabajar con SQL se está convirtiendo en una habilidad cada vez más demandada, tanto para los desarrolladores de software como para las personas que desempeñan funciones menos técnicas. Si está interesado en aprender SQL y no tiene experiencia previa con él, este curso será su luz en un túnel oscuro.
¿Cómo citar el presente artículo?
Romero, J. (17 de agosto de 2020). Guía introductoria a SQL: Día 3. Python-Data-Analyst. https://www.python-data-analyst.com/post/gisql/dia_3/.
Guía introductoria a SQL: Día 3 by Jeshua Romero Guadarrama, available under Attribution 4.0 International (CC BY 4.0) at https://www.python-data-analyst.com/post/gisql/dia_3/.
Día 3. Joins
Objetivos
El curso Comenzará cubriendo los conceptos básicos de SQL; es decir, cómo crear una base de datos, insertar, consultar y actualizar datos. También aprenderá conceptos fundamentales que los desarrolladores y científicos de datos utilizan todos los días (operaciones con varias tablas, consultas anidadas y cómo configurar vistas).
En todo momento, podrá ejecutar consultas SQL en su navegador y ver los resultados en tiempo real; no tendrá que preocuparse por la configuración.
Al final de este curso, también obtendrá práctica con preguntas comunes en entrevistas de SQL, de modo que cuando llegue el momento, estará listo y seguro para responder cualquier pregunta que se le presente. ¡Empecemos!
Tipos de Joins
Introducción
Esta lección discute los diferentes tipos de uniones según lo especificado por ANSI SQL.
En la sección anterior trabajamos con una sola tabla para aprender los conceptos básicos de SQL. Sin embargo, las bases de datos relacionales definen las relaciones entre tablas y, a menudo, las consultas requieren obtener información de dos o más tablas. Las uniones nos permiten combinar filas de múltiples tablas usando columnas comunes entre ellas. De hecho, las relaciones definidas entre las tablas son las que hacen que las bases de datos relacionales sean relacionales.
Para llevar los conceptos a casa, trabajaremos con dos tablas que tienen una columna común entre ellas. Las dos tablas se muestran a continuación:
Tabla de películas
IDPelicula | NombrePelícula |
---|---|
1 | Star Wars |
2 | Sholay |
3 | The Italian Job |
Tabla de cines
IDPelicula | NombreCine | CorrerPorDías |
---|---|---|
2 | Cinepoliz | 101 |
5 | Cinemez | 45 |
El estándar ANSI SQL define cinco tipos de uniones que discutiremos.
Cross Join (Unión Cruzada)
Comenzaremos con la unión cruzada, que también se conoce como el producto cartesiano. En este caso, elegimos la primera fila de la Tabla A y la combinamos con cada fila de la Tabla B. A continuación, elegimos la segunda fila de la Tabla A y la combinamos con cada fila de la Tabla B. No se especifica ninguna condición que se pruebe para determinar si una fila de la Tabla A debe ser unido con una fila de la Tabla B. La tabla resultante para una unión cruzada de las dos tablas de ejemplo será la siguiente:
IDPelicula | NombrePelícula | IDPelicula | NombreCine | CorrerPorDías |
---|---|---|---|---|
1 | Star Wars | 2 | Cinepoliz | 101 |
1 | Star Wars | 5 | Cinemez | 45 |
2 | Sholay | 2 | Cinepoliz | 101 |
2 | Sholay | 5 | Cinemez | 45 |
3 | The Italian Job | 2 | Cinepoliz | 101 |
3 | The Italian Job | 5 | Cinemez | 45 |
Figura 1. Cross Join.
Inner Join (Unión Interna)
En el caso de una unión interna, se prueba una condición o múltiples condiciones para determinar si una fila de la Tabla A debe unirse con una fila de la Tabla B. Esta condición se llama union de predicado. En el caso de nuestro ejemplo, las dos tablas comparten la columna iD de la película como el valor común entre ellas. La columna iD de la película establece una relación entre las dos tablas. Usando la columna común, podemos determinar si una película determinada se proyectó en alguno de los teatros que tenemos en nuestra base de datos y, de ser así, durante cuántos días.
IDPelicula | NombrePelícula | IDPelicula | NombreCine | CorrerPorDías |
---|---|---|---|---|
2 | Sholay | 2 | Cinepoliz | 101 |
En la teoría de conjuntos, la representación del diagrama de Venn para una unión interna es la siguiente:
Figura 2. Inner Join.
Left Outer Join (Unión Exterior Izquierda)
En el caso de la unión izquierda, el conjunto de resultados consta de filas que coinciden con el predicado de unión y también filas de la tabla especificada a la izquierda de la cláusula de unión izquierda que no coincide con el predicado de unión. Se inserta nulo para las columnas de la Tabla B y para las filas de la tabla A que no satisfacían el predicado de unión. Dicho de otra manera, todas las filas de la izquierda siempre se incluyen en el conjunto de resultados y las filas de la derecha solo se incluyen si coinciden con el predicado de unión.
IDPelicula | NombrePelícula | IDPelicula | NombreCine | CorrerPorDías |
---|---|---|---|---|
1 | Star Wars | NULL | NULL | NULL |
2 | Sholay | 2 | Cinepoliz | 101 |
3 | The Italian Job | NULL | NULL | NULL |
Figura 3. Left Outer Join.
Right Outer Join (Unión Exterior Derecha)
La unión derecha es el reverso de la unión izquierda. En este caso, todas las filas de la tabla derecha siempre se incluyen en el conjunto de resultados y solo aquellas filas de la tabla izquierda llegan al conjunto de resultados que satisface la condición de unión. Con las uniones izquierda y externa, especificamos qué lado de la unión se puede tener una fila en el resultado cuando el predicado de unión no está satisfecho.
IDPelicula | NombrePelícula | IDPelicula | NombreCine | CorrerPorDías |
---|---|---|---|---|
2 | Sholay | 2 | Cinepoliz | 101 |
NULL | NULL | 5 | Cinemez | 45 |
Figura 4. Right Outer Join.
Full Outer Join (Unión Exterior Completa)
En el caso de una unión completa, las filas de ambas tablas se incluyen en el conjunto de resultados. Las filas que evalúan verdadero para el predicado de unión solo se incluyen una vez. Las filas que no coinciden con el predicado tienen NULL insertado para columnas que pertenecen a la otra tabla. Tenga en cuenta que MySQL no admite una unión completa.
IDPelicula | NombrePelícula | IDPelicula | NombreCine | CorrerPorDías |
---|---|---|---|---|
1 | Star Wars | NULL | NULL | NULL |
2 | Sholay | 2 | Cinepoliz | 101 |
3 | The Italian Job | NULL | NULL | NULL |
NULL | NULL | 5 | Cinemez | 45 |
En teoría de conjuntos, la representación del diagrama de Venn para una unión completa es la siguiente:
Figura 5. Full Outer Join.
Self Join (Autounión)
Una autounión es el resultado establecido cuando una tabla se une a sí misma. Si creamos una autounión de la tabla de películas basada en la película iD, el resultado será el siguiente:
IDPelicula | NombrePelícula | IDPelicula | NombrePelícula |
---|---|---|---|
1 | Star Wars | 1 | Star Wars |
2 | Sholay | 2 | Sholay |
3 | The Italian Job | 3 | The Italian Job |
Self Inner Join (Autounión Interna)
Esta lección discute cómo unir una tabla consigo mismo.
Unirse a uno mismo
La unión más simple que se puede usar es la unión interna. Las filas de dos tablas se unen usando una columna común entre ellas.
Sintaxis
SELECT * FROM tabla_a INNER JOIN tabla_a ON <condición_de_unión>;
-- Copiar y pegar cómodamente las siguientes consultas en su terminal. --
-- Consulta 1 --
SELECT * FROM Actors a INNER JOIN Actors b;
-- Consulta 2 --
SELECT * FROM Actors a INNER JOIN Actors b USING(FirstName);
-- Consulta 3 --
SELECT * FROM Actors a INNER JOIN Actors b USING(NetWorthInMillions);
Puede ser una sorpresa, pero también podemos unir una tabla consigo misma. Sin embargo, necesitamos usar alias como en una cláusula INNER JOIN, ya que se requiere que las dos tablas sean únicas.
SELECT * FROM Actors a INNER JOIN Actors b;
Si ejecuta la consulta anterior, el resultado será un producto cartesiano; es decir, cada fila se unirá con cada otra fila de la segunda tabla. Suponiendo que el número total de filas en la tabla resultante será 121 porque la tabla tiene 11 filas. El recuento de la unión interna se muestra a continuación:
Figura 6. Ejemplo consulta.
Figura 7. Explicación consulta.
Se puede usar la cláusula USING con el objetivo de especificar la columna para unir las dos tablas. Por ejemplo:
SELECT * FROM Actors a INNER JOIN Actors b USING(FirstName);
Figura 8. Ejemplo consulta.
Debe tenerse en cuenta que ahora tenemos exactamente 11 filas porque cada fila en la primera tabla coincide exactamente con una fila en la segunda tabla. Sin embargo, si cambiamos la consulta y especificamos la columna NetWorthInMillions en la cláusula USING, obtendremos 13 filas en el resultado porque las dos filas con valor 240 para la columna NetWorthInMillions coinciden dos veces para un total de cuatro filas.
SELECT * FROM Actors a INNER JOIN Actors b USING(NetWorthInMillions);
Figura 9. Ejemplo consulta.
Recuerde, la cláusula USING define una o más columnas que están en ambas tablas o resultados y se usan para unir o hacer coincidir filas. Además, si alguna fila de las dos tablas no coincide, no está incluida en la salida. Obviamente, esto no sucederá en el caso de una unión automática.
Unirse interno Esta lección demuestra cómo realizar una unión interna.
Cubriremos lo siguiente
Unirse interno Sintaxis Unirse interno En la lección anterior, vimos cómo unir una mesa consigo mismo. En esta lección nos uniremos a dos tablas diferentes. Presentaremos otra tabla llamada Activos digitales eso contendrá las propiedades públicas en línea como Twitter, Facebook y Pinterest que pertenecen a una celebridad. La estructura de la tabla se muestra a continuación:
Nombre de columna Tipo de columna URL VARCHAR ( 200 ) AssetType Enum ( ‘ Facebook ’, ‘ Twitter ’, ‘ Instagram ’, ‘ Pinterest ’, ‘ Sitio web ’ ) LastUpdatedOn TIMESTAMP ActorId INTA continuación se muestran algunas filas de la tabla:
Tenga en cuenta que la clave primaria de la tabla es la URL columna ya que se garantiza que cada URL es única. los Activos digitales la tabla está vinculada con el Actores tabla con la columna de identificación común para el actor como se muestra a continuación. Sin embargo, tenga en cuenta que los nombres de columna en las dos tablas son diferentes.
Sintaxis SELECCIONAR *
DESDE tabla1
UNIÓN INTERIOR tabla2
ENCENDIDO < condición conjunta >;
Conéctese al terminal a continuación haciendo clic en el widget. Una vez conectado, aparecerá el indicador de línea de comandos. Ingrese o copie y pegue el comando ./DataJek / Lessons / 26lesson.sh y espere a que se inicie el mensaje MySQL.
123456789101112131415dieciséis171819202122232425262728293031 – The lesson queries are reproduced below for convenient copy/paste into the terminal.
– Query 1
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
INNER JOIN DigitalAssets
ON Actors.Id = DigitalAssets.ActorID;
– Query 2 SELECT FirstName, SecondName, AssetType, URL
Terminal 1 Terminal Haz clic para conectar…
Usando el UNIÓN INTERIOR, ahora podemos responder consultas como enumerar las páginas de Facebook para cada celebridad. Tenga en cuenta que cada tabla aislada no puede responder esta consulta como Actores la tabla no contiene la información de los activos digitales para cada actor y el Activos digitales la mesa no contiene los nombres de cada actor.
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
INNER JOIN DigitalAssets
ON Actors.Id = DigitalAssets.ActorID;
Si las dos tablas tuvieran el mismo nombre de columna para la ID del actor, entonces podríamos haber usado la sintaxis alternativa con USANDO cláusula para hacer que la consulta sea un poco menos detallada como se muestra a continuación:
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
INNER JOIN DigitalAssets
USING(Id); Tenga en cuenta que las columnas enumeradas en el SELECCIONAR La cláusula es única en las dos tablas. Sin embargo, si las dos tablas tuvieran columnas con los mismos nombres, entonces tendríamos que desambiguar las dos calificando completamente la columna con el nombre de la tabla.
Observe también que las celebridades sin activos digitales, o activos sin entradas de celebridades correspondientes, en el Actores la tabla no se captura con los resultados de la consulta. El servidor elige filas de ambas tablas que tienen el mismo valor para las dos columnas. O puede considerarlo como una intersección de las dos tablas basadas en las identificaciones de las celebridades.
No es necesario usar el UNIÓN INTERIOR cláusula para obtener una unión interna entre dos tablas. También podemos usar el DONDE cláusula para lograr el mismo efecto que se muestra a continuación:
SELECT FirstName, SecondName, AssetType, URL FROM Actors, DigitalAssets WHERE ActorId=Id;
No hay diferencia en usar el DONDE cláusula o la cláusula INNER JOIN en el rendimiento de la consulta, más bien es solo cuestión de gustos.
También podemos crear un producto cartesiano entre las dos tablas como lo hicimos en la sección de autounión. Podemos usar la sintaxis de dónde o la unión interna. Ambos se muestran a continuación:
SELECT FirstName, SecondName, AssetType, URL FROM Actors, DigitalAssets; O,
SELECT FirstName, SecondName, AssetType, URL FROM Actors INNER JOIN DigitalAssets;
Podemos unir dos columnas de dos tablas que tienen el mismo tipo, o que se pueden convertir entre sí, aunque con pérdida de datos. Por ejemplo, las siguientes dos consultas no tienen sentido, pero las tablas aún se pueden unir en las columnas que aparecen en las consultas.
– Makes no sense to join tables on FirstName and URL columns as they aren’t related.
SELECT * FROM Actors INNER JOIN DigitalAssets ON URL = FirstName;
O
– Again no sense in combining net worth and actor id. Additionally, one is an int and the other a decimal but still comparable.
SELECT * FROM Actors INNER JOIN DigitalAssets ON NetWorthInMillions = ActorId;
Ambas consultas resultan en conjuntos vacíos.
Unión Esta lección demuestra cómo combinar los resultados de varias consultas.
Cubriremos lo siguiente
Unión Sintaxis Unión los UNIÓN La cláusula nos permite combinar los resultados de varias consultas juntas. La cláusula no se une a la tabla, sino que simplemente combina los dos resultados.
Sintaxis < Consulta1 >
UNIÓN
< Query2 >
Connect to the terminal below by clicking in the widget. Once connected, the command line prompt will show up. Enter or copy and paste the command ./DataJek/Lessons/27lesson.sh and wait for the MySQL prompt to start-up.
12345678910111213141516171819202122232425262728293031 – The lesson queries are reproduced below for convenient copy/paste into the terminal.
– Query 1 SELECT FirstName FROM Actors UNION SELECT URL FROM DigitalAssets;
– Query 2 (SELECT CONCAT(FirstName, ’ ‘, SecondName) AS “Actor Name” FROM Actors
Terminal 1 Terminal Click to Connect…
As a contrived example, we’ll write a query that prints all the first names from the Actors table and all the URLs from the DigitalAssets table.
SELECT FirstName FROM Actors
UNION
SELECT URL FROM DigitalAssets;
A more realistic example would be a query where you are required to print the top two richest actors and the least two richest. (SELECT CONCAT(FirstName, ’ ‘, SecondName) AS “Actor Name” FROM Actors ORDER BY NetworthInMillions DESC LIMIT 2)
UNION
(SELECT CONCAT(FirstName, ’ ‘, SecondName) AS “ThisAliasIsIgnored” FROM Actors ORDER BY NetworthInMillions ASC LIMIT 2);
Tenga en cuenta que hemos utilizado las diversas técnicas aprendidas hasta ahora para mejorar la consulta anterior. Utilizamos la función de concat para unir nombres de primer y segundo con un espacio que los separa y usamos el alias “ Nombre del actor ” para la columna resultante. Se ignora el alias de la segunda consulta. Además, envolvemos las dos consultas entre paréntesis, lo cual es un requisito cuando se utiliza la cláusula de orden o límite en las subconsultas de una consulta sindical.
Cuando usas el UNIÓN cláusula, los dos conjuntos de resultados que se combinan deben tener el mismo número y orden de columnas. Las columnas de los conjuntos de resultados deben ser del mismo tipo o tipos que sean compatibles. Por ejemplo, la siguiente consulta se eliminará por error:
SELECT FirstName, Id FROM Actors
UNION
SELECT FirstName FROM Actors;
Para que la consulta anterior funcione, podemos insertar un columna falsa o nulo de la siguiente manera:
SELECT FirstName, Id FROM Actors
UNION
SELECT FirstName, null FROM Actors;
Observe el resultado de la siguiente consulta:
SELECT MaritalStatus FROM Actors
UNION
SELECT Gender FROM Actors;
Tenga en cuenta que la cláusula de unión no genera valores duplicados y funciona de manera similar a la cláusula distinta. Si queremos que se incluyan valores duplicados en el resultado de la consulta, debemos usar el UNIÓN TODOS cláusula como sigue:
SELECT MaritalStatus FROM Actors
UNION ALL
SELECT Gender FROM Actors;
Otra peculiaridad de la UNIÓN la cláusula es que puede ignorar el ORDENAR POR cláusula cuando se usa sin el LIMITAR cláusula en una subconsulta. Considere la siguiente consulta:
(SELECT CONCAT(FirstName, ’ ‘, SecondName) AS “Actor Name”
FROM Actors
ORDER BY NetworthInMillions DESC LIMIT 2)
UNION
(SELECT NetworthInMillions FROM Actors ORDER BY NetworthInMillions ASC);
Tenga en cuenta que en la segunda subconsulta ordenamos las filas de manera ascendente por la columna NetworthInMillions. Sin embargo, los valores en el conjunto de resultados se imprimen sin tener en cuenta el orden. Cuando pegamos un LIMITAR cláusula a la segunda subconsulta, las ID aparecen en orden descendente como se muestra a continuación:
(SELECT CONCAT(FirstName, ’ ‘, SecondName) AS “Actor Name”
FROM Actors
ORDER BY NetworthInMillions DESC LIMIT 2)
UNION
(SELECT NetworthInMillions FROM Actors ORDER BY NetworthInMillions ASC LIMIT 3);
El lector astuto también notaría que los tipos de las dos columnas en el conjunto de resultados no son los mismos. La consulta funciona porque MySQL convierte el int en varchar.
Atrás Unirse interno
Ma
Back To Course Home 5% completed
Search Course Introduction
Basic SQL
Joins
Types of Joins Self Inner Join Inner Join Union Left and Right Joins Natural Join Nested Queries
Multi Table Operations
Views
Stored Procedures
Triggers
Miscellaneous
Practice & Prep
Epilogue
Course Certificate Mark Course as Completed
Ask a Question
Left and Right Joins This lesson discusses left and right joins.
We’ll cover the following
Left & Right Joins Left Join Right Join Syntax for Left Join Syntax for Right Join Left & Right Joins In this lesson we’ll look at left and right joins. The two joins add additional rows to the result set for one of the tables participating in the join. We can best exemplify the two joins pictorially as follows:
Left Join
Right Join
Syntax for Left Join SELECCIONAR *
DESDE tabla1
IZQUIERDA [ INFERIOR ] ÚNETE tabla2
ENCENDIDO < condición conjunta >
Sintaxis para unirse a la derecha SELECCIONAR *
DESDE tabla1
DERECHA [ INFERIOR ] ÚNETE tabla2
ENCENDIDO < condición conjunta >
Conéctese al terminal a continuación haciendo clic en el widget. Una vez conectado, aparecerá el indicador de línea de comandos. Ingrese o copie y pegue el comando ./DataJek / Lessons / 28lesson.sh y espere a que se inicie el mensaje MySQL.
– The lesson queries are reproduced below for convenient copy/paste into the terminal.
– Query 1
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
LEFT JOIN DigitalAssets
ON Actors.Id = DigitalAssets.ActorID;
– Query 2 SELECT FirstName, SecondName, AssetType, URL
Terminal 1 Terminal Haz clic para conectar…
Comenzaremos con la consulta de la lección de unión interna que genera a todos los actores con activos digitales. Si recuerda, la consulta de unión interna solo genera celebridades que tienen presencia digital. Si usamos el IZQUIERDA UNIRSE en cambio, obtendremos una lista de todos los actores con o sin presencia digital. La consulta se muestra a continuación:
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
LEFT JOIN DigitalAssets
ON Actors.Id = DigitalAssets.ActorID;
Tenga en cuenta que la salida ahora incluye a aquellos actores que no tienen presencia digital. los IZQUIERDA UNIRSE incluye aquellas filas de la tabla a su izquierda que no coinciden con las filas de la tabla a su derecha.
Curiosamente, si volteamos el orden de las dos tablas en la consulta, obtenemos un resultado diferente:
SELECT FirstName, SecondName, AssetType, URL
FROM DigitalAssets
LEFT JOIN Actors
ON Actors.Id = DigitalAssets.ActorID;
El resultado tiene sentido, porque el Activos digitales la tabla no tiene filas que no tengan un propietario en el Actores tabla, entonces todas las filas en el Activos digitales partido de mesa con una fila en el Actores tabla y formar parte de la salida. Tenga en cuenta que los actores sin presencia digital quedan fuera.
los ÚNETE CORRECTO es muy similar a la IZQUIERDA UNIRSE. La única diferencia es que en el caso de la unión izquierda, las filas inigualables provienen de la tabla especificada a la izquierda de la IZQUIERDA UNIRSE cláusula mientras que, en el caso de la unión derecha, las filas inigualables provienen de la tabla especificada a la derecha de la ÚNETE CORRECTO cláusula. Si usamos la unión correcta en la primera consulta de la lección, no necesitaríamos voltear las tablas como lo hicimos anteriormente.
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
RIGHT JOIN DigitalAssets
ON Actors.Id = DigitalAssets.ActorID;
que una sintaxis alternativa para las uniones izquierda y derecha es JUNTA EXTERIOR IZQUIERDA y ÚNETE EXTERIOR CORRECTO respectivamente, aunque no hay diferencia en la funcionalidad si omite el EXTERIOR palabra clave.
Natural Join This lesson explains the natural join.
We’ll cover the following
Natural Join Syntax for Natural Join Natural Join In this lesson we’ll look at a syntactic sugar called NATURAL JOIN. The clause attempts to find the natural join between participating tables by matching on columns with same name.
Syntax for Natural Join SELECT *
FROM table1
NATURAL JOIN table2
Connect to the terminal below by clicking in the widget. Once connected, the command line prompt will show up. Enter or copy and paste the command ./DataJek/Lessons/29lesson.sh and wait for the MySQL prompt to start-up.
– The lesson queries are reproduced below for convenient copy/paste into the terminal.
– Query 1 SELECT FirstName, SecondName, AssetType, URL FROM Actors NATURAL JOIN DigitalAssets;
– Query 2 SELECT FirstName, SecondName, AssetType, URL FROM Actors
Terminal 1 Terminal Click to Connect…
The NATURAL JOIN performs an inner join of the participating tables essentially without the user having to specify the matching columns. An example is as follows:
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
NATURAL JOIN DigitalAssets;
Note that since none of the columns in the two tables share the same name, the result is a cartesian product. The screenshot shows the cartesian product only partially. The same result can be achieved using the inner join as follows:
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
INNER JOIN DigitalAssets; We’ll execute the above query again, but we’ll alter the column name for the DigitalAssets table from ActorID to ID so that it matches the column name in the Actors table.
– Alter the column name ALTER TABLE DigitalAssets CHANGE ActorId Id INT; – rerun the previous query SELECT FirstName, SecondName, AssetType, URL
FROM Actors
NATURAL JOIN DigitalAssets;
You can observe from the results that the server matched the columns with the same name in both the tables and we get results equivalent to the following inner join query:
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
INNER JOIN DigitalAssets USING (Id);
Debajo del capó, una consulta de unión natural se traduce en una consulta de unión interna con nombres de columna coincidentes que terminan dentro de la cláusula de uso.
También podemos pedir uniones naturales de izquierda y derecha. Como ejemplo, mostramos una unión natural a la izquierda a continuación:
SELECT FirstName, SecondName, AssetType, URL
FROM Actors
NATURAL LEFT OUTER JOIN DigitalAssets;
Desde la salida que puede ver, no hay nada mágico en la unión natural, es solo el azúcar sintáctico que encuentra implícitamente las columnas para unirse a las tablas. Idealmente, deberíamos escribir consultas expresivas y evitar usar la unión natural, ya que oculta las columnas que se utilizarán para la unión y puede introducir errores sutilmente. Imagine una situación en la que se altera una tabla para tener una columna adicional que tenga el mismo nombre que una columna en otra tabla que se une naturalmente con la primera tabla en un existente consulta. De repente, los resultados de la consulta de unión natural se detendrán para tener sentido.
El presente blog ha sido patrocinado mediante crowdfunding con el siguiente mensaje:
Nuestro Señor Jesucristo, el único Dios verdadero, es misericordioso y nuestro Salvador.