Ir al contenido principal

Tutorial de Uniones en SQL

Este tutorial te explicará cómo unir tablas utilizando claves primarias y foráneas en un servidor SQL Server.
Actualizado 11 sept 2024  · 5 min leer

Explorar con IA

ChatGPTClaudePerplexity

SQL Server es un sistema de gestión de bases de datos relacionales. Uno de los principios clave de la base de datos relacional es que los datos se almacenan en varias tablas.

Sistema de gestión de bases de datos relacionales

Necesitaremos poder unir tablas para extraer los datos que necesitamos. Utilizamos las claves primary y foreign para unir tablas.

Clave primaria

Una clave primaria es una columna que se utiliza para identificar de forma única cada fila de una tabla. Esta unicidad puede conseguirse utilizando un entero secuencial como columna de identidad. O a veces, las columnas existentes contienen naturalmente valores únicos, y se pueden utilizar.

En el ejemplo siguiente, podemos ver las primeras filas de la tabla artist. Tiene dos columnas, artist_id, y name. La columna artist_id actúa como clave primaria de esta tabla, es una columna entera y cada valor es diferente.

+-----------+-------------------+
| artist_id | name              |
|-----------+-------------------|
| 1         | AC/DC             |
| 2         | Accept            |
| 3         | Aerosmith         |
| 4         | Alanis Morissette |
| 5         | Alice In Chains   |
+-----------+-------------------+

Ahora veamos la tabla album. ¿Puedes detectar la clave primaria? Sí, es la columna album_id. Es habitual que la clave primaria se denomine "nombre-tabla guión bajo id". Pero te habrás dado cuenta de que también hay una columna artist_id. Que también consta de números enteros y tiene el mismo nombre que la columna artist_id de la tabla de artistas. ¿Qué significa esto?

+----------+-------------------------+-----------+
| album_id | title                   | artist_id |  
|----------+-------------------------+-----------|
| 1        | For Those About To Rock | 1         |
| 2        | Balls to the Wall       | 2         |
| 3        | Restless and Wild       | 2         |
| 4        | Let There Be Rock       | 1         |
| 5        | Big Ones                | 3         |
+----------+-------------------------+-----------+

Claves extranjeras

Pues bien, de la salida anterior se desprende que la artist_id de la tabla de artistas actúa como Foreign_key de la tabla de álbumes. La restricción FOREIGN KEY se utiliza para impedir acciones que destruyan enlaces entre tablas.

  • artist tabla
+-----------+-------------------+
| artist_id | name              |
|-----------+-------------------|
| 1         | AC/DC             |
| 2         | Accept            |
| 3         | Aerosmith         |
| 4         | Alanis Morissette |
| 5         | Alice In Chains   |
+-----------+-------------------+
  • album tabla
+----------+-------------------------+-----------+
| album_id | title                   | artist_id |  
|----------+-------------------------+-----------|
| 1        | For Those About To Rock | 1         |
| 2        | Balls to the Wall       | 2         |
| 3        | Restless and Wild       | 2         |
| 4        | Let There Be Rock       | 1         |
| 5        | Big Ones                | 3         |
+----------+-------------------------+-----------+

Esto significa que cuando el artist_id de la tabla de álbumes coincide con el artist_id de la tabla de artistas, esas filas pueden enlazarse como un JOIN.

Unir Álbum y Artista

Las filas 1 y 4 de la tabla de artistas tienen un artist_id de 1. El artist_id 1 de la tabla de artistas es AC/DC. Así, cuando unimos las dos tablas, devolvemos los datos del álbum de la tabla álbum, y los datos del artista correspondiente de la tabla artista - unidos mediante el campo artist_id, que es común a ambas tablas.

Esto se conoce como unión inner.

SELECT
  album_id,
  title,
  album.artist_id,
  name AS artist_name
FROM album
INNER JOIN artist ON artist.artist_id = album.artist_id
WHERE album.artist_id = 1;
+----------+-------------------------+-----------+-------------+
| album_id | title                   | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1        | For Those About To Rock | 1         | AC/DC       |
| 4        | Let There Be Rock       | 1         | AC/DC       |
+----------+-------------------------+-----------+-------------|

Unimos las tablas de álbumes y artistas haciendo coincidir el artist_id de la tabla de artistas con el artist_id de la tabla de álbumes.

Cuando selecciones columnas con el mismo nombre de tablas diferentes, debes calificar completamente el nombre de la columna. De lo contrario, SQL Server no sabrá de qué tabla SELECT debe extraer la columna.

Para calificar completamente una columna, tienes que anteponerle el nombre de la tabla correspondiente, seguido de un punto.

Sintaxis de la unión interna

Aquí tienes un ejemplo genérico para recordarte la sintaxis. Cuando seleccionamos las columnas relevantes de la tabla principal, table_A en este caso, a continuación seleccionamos cualquier columna adicional a la que queramos unirnos, que en este caso es table_B. A continuación, especificamos la unión utilizando las palabras clave INNER JOIN y ON, proporcionando las columnas clave necesarias de ambas tablas.

SELECT
    table_A.columnX,
    table_A.columnY,
    table_B.columnZ,
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key;

No utilizar un WHERE Cláusula

En este ejemplo, no especificamos una cláusula WHERE, por lo que devolvemos TODAS las combinaciones de TODAS las coincidencias entre las tablas de artistas y álbumes, de nuevo, basándonos en la columna artist_id, que es común a ambas.

SELECT
  album_id,
  title,
  album.artist_id,
  name AS artist_name
FROM album
INNER JOIN artist on artist.artist_id = album.artist_id;
+----------+---------------------------------------+-----------+
| album_id | title                   | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1        | For Those About To Rock | 1         | AC/DC       |
| 4        | Let There Be Rock       | 1         | AC/DC       |
| 2        | Balls To The Wall       | 2         | Accept      |
| 3        | Restless and Wild       | 2         | Accept      |
+----------+---------------------------------------+-----------+

Unión interna múltiple

También puedes unir más de dos tablas utilizando INNER JOINS. Sólo tienes que proporcionar un INNER JOIN adicional para cada combinación de tablas. En nuestro código siguiente, unimos las tablas A y B, y también B y C.

SELECT
  table_A.columnX,
  table_A.columnY,
  table_B.columnZ table_C columnW
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key
INNER JOIN table_C ON table_C.foreign_key = table_B.primary_key;

Para saber más sobre la unión de tablas, consulta este vídeo de nuestro curso Introducción a SQL Server.

Este contenido está tomado del curso Introducción a SQL Server de DataCamp, impartido por John MacKintosh.

Temas
SQL
Ciencia de datos

Cursos de SQL

Curso

Manipulación de datos en SQL

4 h
335K
Domina las consultas SQL para responder a preguntas de ciencia de datos y prepara conjuntos de datos para analizarlos en PostgreSQL.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

Tutorial

Tutorial de unión de DataFrames en pandas

En este tutorial, usted aprenderá varias maneras en las que múltiples DataFrames pueden ser fusionados en python usando la librería Pandas.
DataCamp Team's photo

DataCamp Team

13 min

SQLAlchemy_Tutorial.

Tutorial

Tutorial de SQLAlchemy con ejemplos

Aprende a acceder y ejecutar consultas SQL en todo tipo de bases de datos relacionales utilizando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Tutorial de Power BI para principiantes

Aprende los fundamentos de Power BI y a crear un informe básico con este tutorial paso a paso.
DataCamp Team's photo

DataCamp Team

13 min

Ver MásVer Más