Inner Join en SQL: Guía Completa con Ejemplos Prácticos
En el mundo de las bases de datos relacionales, la capacidad de combinar datos de múltiples tablas es crucial para obtener información significativa. Las uniones en SQL son el mecanismo fundamental para lograr esta tarea, y la inner join es la más común y versátil.
Este tutorial te guiará paso a paso a través del concepto de inner join, explicando su funcionamiento con ejemplos prácticos y escenarios reales. Aprenderás la sintaxis básica, cómo se utiliza en diferentes situaciones y cómo aplicar filtros adicionales para obtener resultados precisos.
¿Qué es una Inner Join en SQL?
Una inner join en SQL combina registros de dos o más tablas basándose en una columna común. La característica distintiva de una inner join es que solo devuelve los registros que tienen valores coincidentes en la columna común de ambas tablas. Es decir, si una fila en una tabla no tiene una coincidencia en la otra, esa fila se excluye del resultado final.
Ejemplos Prácticos de Inner Join
Para ilustrar mejor el funcionamiento de las inner join, veamos algunos ejemplos prácticos con diferentes escenarios:
Ejemplo 1: Unir EmpDetails y MaritalStatus
Scenario: Tenemos dos tablas, «EmpDetails» (detalles de empleados) y «MaritalStatus» (estado civil). Queremos obtener una lista de todos los empleados junto con su estado civil.
Tablas:
- EmpDetails:
- EmpID (ID de empleado)
- EmpName (Nombre del empleado)
- DeptID (ID del departamento)
- Salary (Salario)
- MaritalStatus:
- MaritalStatusID (ID del estado civil)
- MaritalStatus (Descripción del estado civil)
Consultas:
«`sql
— Creación de las tablas
CREATE TABLE EmpDetails (
EmpID INT PRIMARY KEY,
EmpName VARCHAR(255),
DeptID INT,
Salary INT
);
CREATE TABLE MaritalStatus (
MaritalStatusID INT PRIMARY KEY,
MaritalStatus VARCHAR(255)
);
— Inserción de datos en las tablas
INSERT INTO EmpDetails (EmpID, EmpName, DeptID, Salary) VALUES
(1, ‘John Doe’, 1, 50000),
(2, ‘Jane Smith’, 2, 60000),
(3, ‘David Lee’, 1, 45000);
INSERT INTO MaritalStatus (MaritalStatusID, MaritalStatus) VALUES
(1, ‘Married’),
(2, ‘Single’),
(3, ‘Divorced’);
— Consulta con Inner Join
SELECT *
FROM EmpDetails
INNER JOIN MaritalStatus ON EmpDetails.MaritalStatusID = MaritalStatus.MaritalStatusID;
«`
Resultado:
| EmpID | EmpName | DeptID | Salary | MaritalStatusID | MaritalStatus |
|—|—|—|—|—|—|
| 1 | John Doe | 1 | 50000 | 1 | Married |
| 2 | Jane Smith | 2 | 60000 | 2 | Single |
| 3 | David Lee | 1 | 45000 | 3 | Divorced |
Ejemplo 2: Unir CUSTOMERS y ORDERS
Scenario: Tenemos dos tablas, «CUSTOMERS» (clientes) y «ORDERS» (pedidos). Queremos obtener una lista de todos los clientes con sus pedidos.
Tablas:
- CUSTOMERS:
- CustomerID (ID del cliente)
- CustomerName (Nombre del cliente)
- City (Ciudad)
- ORDERS:
- OrderID (ID del pedido)
- CustomerID (ID del cliente)
- OrderDate (Fecha del pedido)
- TotalAmount (Monto total del pedido)
Consultas:
«`sql
— Creación de las tablas
CREATE TABLE CUSTOMERS (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(255),
City VARCHAR(255)
);
CREATE TABLE ORDERS (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
TotalAmount DECIMAL(10, 2)
);
— Inserción de datos en las tablas
INSERT INTO CUSTOMERS (CustomerID, CustomerName, City) VALUES
(1, ‘Alice Johnson’, ‘New York’),
(2, ‘Bob Smith’, ‘Los Angeles’),
(3, ‘Carol Wilson’, ‘Chicago’);
INSERT INTO ORDERS (OrderID, CustomerID, OrderDate, TotalAmount) VALUES
(101, 1, ‘2023-03-01’, 100.00),
(102, 2, ‘2023-03-05’, 150.00),
(103, 1, ‘2023-03-10’, 200.00);
— Consulta con Inner Join
SELECT *
FROM CUSTOMERS
INNER JOIN ORDERS ON CUSTOMERS.CustomerID = ORDERS.CustomerID;
«`
Resultado:
| CustomerID | CustomerName | City | OrderID | OrderDate | TotalAmount |
|—|—|—|—|—|—|
| 1 | Alice Johnson | New York | 101 | 2023-03-01 | 100.00 |
| 1 | Alice Johnson | New York | 103 | 2023-03-10 | 200.00 |
| 2 | Bob Smith | Los Angeles | 102 | 2023-03-05 | 150.00 |
Ejemplo 3: Unir CUSTOMERS, ORDERS y EMPLOYEE
Scenario: Tenemos tres tablas, «CUSTOMERS», «ORDERS» y «EMPLOYEE». Queremos obtener una lista de todos los clientes con sus pedidos y el empleado que procesó el pedido.
Tablas:
- CUSTOMERS: (Ya definida en el ejemplo anterior)
- ORDERS: (Ya definida en el ejemplo anterior)
- EMPLOYEE:
- EmployeeID (ID del empleado)
- EmployeeName (Nombre del empleado)
- Department (Departamento)
Consultas:
«`sql
— Creación de la tabla EMPLOYEE
CREATE TABLE EMPLOYEE (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(255),
Department VARCHAR(255)
);
— Inserción de datos en la tabla EMPLOYEE
INSERT INTO EMPLOYEE (EmployeeID, EmployeeName, Department) VALUES
(1, ‘Tom Brown’, ‘Sales’),
(2, ‘Mary Jones’, ‘Marketing’),
(3, ‘David Wilson’, ‘Customer Service’);
— Consulta con Inner Join
SELECT *
FROM CUSTOMERS
INNER JOIN ORDERS ON CUSTOMERS.CustomerID = ORDERS.CustomerID
INNER JOIN EMPLOYEE ON ORDERS.EmployeeID = EMPLOYEE.EmployeeID;
«`
Resultado:
| CustomerID | CustomerName | City | OrderID | OrderDate | TotalAmount | EmployeeID | EmployeeName | Department |
|—|—|—|—|—|—|—|—|—|
| 1 | Alice Johnson | New York | 101 | 2023-03-01 | 100.00 | 1 | Tom Brown | Sales |
| 2 | Bob Smith | Los Angeles | 102 | 2023-03-05 | 150.00 | 2 | Mary Jones | Marketing |
| 1 | Alice Johnson | New York | 103 | 2023-03-10 | 200.00 | 3 | David Wilson | Customer Service |
Sintaxis de Inner Join en SQL
La sintaxis general de la inner join es:
sql
SELECT columna1, columna2, ...
FROM tabla1
INNER JOIN tabla2 ON condición_de_unión;
- SELECT columna1, columna2, …: Especifica las columnas que quieres seleccionar del resultado.
- FROM tabla1: Especifica la primera tabla de la unión.
- INNER JOIN tabla2: Especifica la segunda tabla de la unión.
- ON condicióndeunión: Especifica la condición que determina qué registros se unirán. La condición debe hacer referencia a las columnas comunes de ambas tablas.
Usando la Cláusula WHERE con Inner Join
Puedes usar la cláusula WHERE en conjunción con la inner join para aplicar filtros adicionales a la consulta. Esto te permite obtener resultados más precisos y específicos.
Ejemplo:
sql
SELECT *
FROM CUSTOMERS
INNER JOIN ORDERS ON CUSTOMERS.CustomerID = ORDERS.CustomerID
WHERE TotalAmount > 100;
Esta consulta devolverá solo los clientes con pedidos cuyo monto total sea mayor que 100.
Conclusiones
Las inner join son una herramienta fundamental en SQL para combinar datos de diferentes tablas y obtener información significativa. Este tutorial te ha mostrado cómo funciona la inner join con ejemplos prácticos, cómo crear tablas, insertar datos y realizar consultas con la inner join. Con esta comprensión, puedes usar las inner join para extraer información valiosa de tus bases de datos y generar informes precisos.
Recuerda practicar con diferentes escenarios y explorar otras variantes de la inner join, como las left join y right join, para obtener un dominio completo de las uniones en SQL.
Keywords:
- Inner Join en SQL
- Inner Join
- SQL Inner Join
- Inner Join and
- Inner Join SQL