SQL
Tutorial SQL: LEFT JOIN y RIGHT JOIN
Aprende cómo usar Left join y Right join en SQL y sus diferencias con Inner join para consultas eficientes y análisis completos de datos.
Aprende SQL y certifícateLEFT JOIN
El LEFT JOIN es una operación fundamental en SQL que permite combinar filas de dos o más tablas basándose en una condición de relación, pero con una característica especial: conserva todos los registros de la tabla izquierda (la primera tabla mencionada), incluso cuando no existen coincidencias en la tabla derecha.
Sintaxis básica
La estructura básica de un LEFT JOIN es la siguiente:
SELECT columnas
FROM tabla_izquierda
LEFT JOIN tabla_derecha
ON tabla_izquierda.columna = tabla_derecha.columna;
En esta estructura, la tabla mencionada primero (tabla_izquierda) es la que mantiene todos sus registros en el resultado final, independientemente de si tienen correspondencia en la tabla_derecha.
Comportamiento del LEFT JOIN
Para entender mejor cómo funciona, veamos un ejemplo práctico. Supongamos que tenemos dos tablas: clientes
y pedidos
.
-- Estructura de la tabla clientes
CREATE TABLE clientes (
id_cliente INT PRIMARY KEY,
nombre VARCHAR(100),
email VARCHAR(100)
);
-- Estructura de la tabla pedidos
CREATE TABLE pedidos (
id_pedido INT PRIMARY KEY,
id_cliente INT,
fecha_pedido DATE,
total DECIMAL(10,2),
FOREIGN KEY (id_cliente) REFERENCES clientes(id_cliente)
);
Ahora, insertemos algunos datos de ejemplo:
-- Insertar clientes
INSERT INTO clientes VALUES (1, 'Ana García', 'ana@ejemplo.com');
INSERT INTO clientes VALUES (2, 'Carlos López', 'carlos@ejemplo.com');
INSERT INTO clientes VALUES (3, 'María Rodríguez', 'maria@ejemplo.com');
INSERT INTO clientes VALUES (4, 'Pedro Martínez', 'pedro@ejemplo.com');
-- Insertar pedidos (nota: el cliente 4 no tiene pedidos)
INSERT INTO pedidos VALUES (101, 1, '2023-01-15', 150.50);
INSERT INTO pedidos VALUES (102, 2, '2023-02-20', 75.25);
INSERT INTO pedidos VALUES (103, 1, '2023-03-10', 200.00);
INSERT INTO pedidos VALUES (104, 3, '2023-03-15', 125.75);
Si queremos obtener todos los clientes y sus pedidos, incluyendo aquellos que no han realizado ningún pedido, usaríamos un LEFT JOIN:
SELECT c.id_cliente, c.nombre, p.id_pedido, p.fecha_pedido, p.total
FROM clientes c
LEFT JOIN pedidos p
ON c.id_cliente = p.id_cliente;
El resultado sería:
id_cliente | nombre | id_pedido | fecha_pedido | total |
---|---|---|---|---|
1 | Ana García | 101 | 2023-01-15 | 150.50 |
1 | Ana García | 103 | 2023-03-10 | 200.00 |
2 | Carlos López | 102 | 2023-02-20 | 75.25 |
3 | María Rodríguez | 104 | 2023-03-15 | 125.75 |
4 | Pedro Martínez | NULL | NULL | NULL |
Observa que Pedro Martínez (id_cliente = 4) aparece en el resultado aunque no tiene pedidos asociados. En su fila, los valores correspondientes a la tabla pedidos
son NULL.
Casos de uso comunes
El LEFT JOIN es especialmente útil en varios escenarios:
- Encontrar registros sin correspondencia: Permite identificar registros en la tabla izquierda que no tienen relación con la tabla derecha.
-- Clientes que no han realizado pedidos
SELECT c.id_cliente, c.nombre
FROM clientes c
LEFT JOIN pedidos p
ON c.id_cliente = p.id_cliente
WHERE p.id_pedido IS NULL;
- Reportes completos: Cuando necesitas mostrar todos los registros de una entidad principal, incluso si no tienen datos relacionados.
-- Informe de todos los clientes con el total de sus compras
SELECT c.id_cliente, c.nombre,
COUNT(p.id_pedido) AS numero_pedidos,
COALESCE(SUM(p.total), 0) AS total_compras
FROM clientes c
LEFT JOIN pedidos p
ON c.id_cliente = p.id_cliente
GROUP BY c.id_cliente, c.nombre;
- Validación de integridad de datos: Para verificar que todos los registros que deberían tener relaciones las tienen correctamente.
LEFT JOIN con múltiples tablas
También podemos encadenar varios LEFT JOIN para combinar datos de múltiples tablas:
-- Suponiendo que tenemos una tabla adicional de detalles_pedido
SELECT c.nombre, p.id_pedido, p.fecha_pedido, dp.producto, dp.cantidad
FROM clientes c
LEFT JOIN pedidos p ON c.id_cliente = p.id_cliente
LEFT JOIN detalles_pedido dp ON p.id_pedido = dp.id_pedido;
Filtrado con LEFT JOIN
Es importante entender la diferencia entre filtrar en la cláusula ON y en la cláusula WHERE:
-- Filtro en ON: mantiene todos los clientes, pero solo muestra pedidos después de 2023-02-01
SELECT c.nombre, p.id_pedido, p.fecha_pedido
FROM clientes c
LEFT JOIN pedidos p ON c.id_cliente = p.id_cliente AND p.fecha_pedido > '2023-02-01';
-- Filtro en WHERE: solo muestra clientes con pedidos después de 2023-02-01
SELECT c.nombre, p.id_pedido, p.fecha_pedido
FROM clientes c
LEFT JOIN pedidos p ON c.id_cliente = p.id_cliente
WHERE p.fecha_pedido > '2023-02-01';
En el primer caso, todos los clientes aparecerán en el resultado (posiblemente con NULL en los campos de pedidos si no cumplen la condición). En el segundo caso, solo aparecerán los clientes que tienen pedidos después de la fecha especificada.
Consideraciones de rendimiento
Al utilizar LEFT JOIN, ten en cuenta estas recomendaciones:
Índices adecuados: Asegúrate de que las columnas utilizadas en la condición de JOIN estén indexadas para mejorar el rendimiento.
Selectividad: Intenta aplicar filtros que reduzcan el conjunto de datos antes de realizar el JOIN.
Orden de las tablas: En consultas complejas con múltiples JOIN, el orden puede afectar al rendimiento. Generalmente, es mejor comenzar con la tabla que tenga el filtro más restrictivo.
-- Mejor rendimiento si hay más pedidos que clientes
SELECT c.nombre, p.fecha_pedido
FROM pedidos p
LEFT JOIN clientes c ON p.id_cliente = c.id_cliente
WHERE p.total > 100;
El LEFT JOIN es una herramienta poderosa que te permite mantener todos los registros de la tabla izquierda mientras recuperas información relacionada de otras tablas, lo que resulta esencial para generar informes completos y analizar relaciones entre datos.
RIGHT JOIN
El RIGHT JOIN es una operación de combinación en SQL que funciona de manera complementaria al LEFT JOIN. Esta cláusula permite conservar todos los registros de la tabla derecha (la segunda tabla mencionada en la consulta), independientemente de si tienen correspondencia en la tabla izquierda.
Sintaxis básica
La estructura fundamental de un RIGHT JOIN es la siguiente:
SELECT columnas
FROM tabla_izquierda
RIGHT JOIN tabla_derecha
ON tabla_izquierda.columna = tabla_derecha.columna;
En esta estructura, todos los registros de la tabla_derecha aparecerán en el resultado, mientras que los registros de la tabla_izquierda solo se incluirán si cumplen la condición de combinación.
Comportamiento del RIGHT JOIN
Para ilustrar cómo funciona el RIGHT JOIN, continuemos con el ejemplo de las tablas clientes
y pedidos
, pero añadamos un escenario diferente. Imaginemos que tenemos pedidos que podrían no estar asociados a clientes registrados (por ejemplo, pedidos anónimos o pendientes de asignación):
-- Estructura modificada de la tabla pedidos (sin restricción de clave foránea)
CREATE TABLE pedidos (
id_pedido INT PRIMARY KEY,
id_cliente INT NULL, -- Puede ser NULL para pedidos sin cliente asignado
fecha_pedido DATE,
total DECIMAL(10,2)
);
-- Insertar datos de ejemplo
INSERT INTO clientes VALUES (1, 'Ana García', 'ana@ejemplo.com');
INSERT INTO clientes VALUES (2, 'Carlos López', 'carlos@ejemplo.com');
-- Insertar pedidos (incluyendo algunos sin cliente asignado)
INSERT INTO pedidos VALUES (101, 1, '2023-01-15', 150.50);
INSERT INTO pedidos VALUES (102, 2, '2023-02-20', 75.25);
INSERT INTO pedidos VALUES (103, NULL, '2023-03-05', 45.00); -- Pedido sin cliente
INSERT INTO pedidos VALUES (104, 5, '2023-03-10', 200.00); -- Cliente no existe en tabla clientes
Si ejecutamos un RIGHT JOIN para obtener todos los pedidos y la información de los clientes asociados:
SELECT p.id_pedido, p.fecha_pedido, p.total, c.id_cliente, c.nombre
FROM clientes c
RIGHT JOIN pedidos p
ON c.id_cliente = p.id_cliente;
El resultado sería:
id_pedido | fecha_pedido | total | id_cliente | nombre |
---|---|---|---|---|
101 | 2023-01-15 | 150.50 | 1 | Ana García |
102 | 2023-02-20 | 75.25 | 2 | Carlos López |
103 | 2023-03-05 | 45.00 | NULL | NULL |
104 | 2023-03-10 | 200.00 | NULL | NULL |
Observa que todos los pedidos aparecen en el resultado, incluso aquellos que no tienen un cliente asociado o cuyo id_cliente no existe en la tabla de clientes. Para estos casos, los campos de la tabla clientes
aparecen como NULL.
Casos de uso prácticos
El RIGHT JOIN resulta particularmente útil en varios escenarios:
- Identificar registros huérfanos: Permite encontrar registros en la tabla derecha que no tienen correspondencia en la tabla izquierda.
-- Pedidos sin cliente válido asignado
SELECT p.id_pedido, p.fecha_pedido, p.total
FROM clientes c
RIGHT JOIN pedidos p
ON c.id_cliente = p.id_cliente
WHERE c.id_cliente IS NULL;
- Auditoría de datos: Para verificar la integridad referencial cuando no se han definido restricciones de clave foránea.
-- Verificar pedidos con referencias a clientes inexistentes
SELECT p.id_pedido, p.id_cliente AS cliente_referenciado
FROM clientes c
RIGHT JOIN pedidos p
ON c.id_cliente = p.id_cliente
WHERE c.id_cliente IS NULL AND p.id_cliente IS NOT NULL;
- Informes centrados en transacciones: Cuando el foco principal son las operaciones o transacciones, no las entidades relacionadas.
-- Informe de todos los pedidos con información de cliente cuando está disponible
SELECT p.id_pedido, p.fecha_pedido, p.total,
COALESCE(c.nombre, 'Cliente no registrado') AS cliente
FROM clientes c
RIGHT JOIN pedidos p
ON c.id_cliente = p.id_cliente;
RIGHT JOIN con múltiples tablas
También podemos encadenar varios RIGHT JOIN para trabajar con múltiples tablas:
-- Suponiendo que tenemos una tabla de envíos
SELECT p.id_pedido, p.fecha_pedido, e.fecha_envio, e.estado,
COALESCE(c.nombre, 'Cliente no registrado') AS cliente
FROM clientes c
RIGHT JOIN pedidos p ON c.id_cliente = p.id_cliente
RIGHT JOIN envios e ON p.id_pedido = e.id_pedido;
Esta consulta mostraría todos los envíos, incluso aquellos cuyos pedidos o clientes asociados no existan en las tablas correspondientes.
Filtrado con RIGHT JOIN
Al igual que con LEFT JOIN, es importante entender la diferencia entre filtrar en la cláusula ON y en la cláusula WHERE:
-- Filtro en ON: mantiene todos los pedidos, pero solo relaciona con clientes específicos
SELECT p.id_pedido, c.nombre
FROM clientes c
RIGHT JOIN pedidos p ON c.id_cliente = p.id_cliente AND c.nombre LIKE 'A%';
-- Filtro en WHERE: solo muestra pedidos relacionados con clientes cuyo nombre empieza por 'A'
SELECT p.id_pedido, c.nombre
FROM clientes c
RIGHT JOIN pedidos p ON c.id_cliente = p.id_cliente
WHERE c.nombre LIKE 'A%';
Equivalencia con LEFT JOIN
Es importante mencionar que cualquier consulta con RIGHT JOIN puede reescribirse como un LEFT JOIN invirtiendo el orden de las tablas:
-- Estas dos consultas son equivalentes
SELECT p.id_pedido, c.nombre
FROM clientes c
RIGHT JOIN pedidos p ON c.id_cliente = p.id_cliente;
SELECT p.id_pedido, c.nombre
FROM pedidos p
LEFT JOIN clientes c ON p.id_cliente = c.id_cliente;
Por esta razón, muchos desarrolladores prefieren estandarizar sus consultas utilizando siempre LEFT JOIN, lo que puede hacer el código más consistente y fácil de mantener.
Consideraciones de rendimiento
Al utilizar RIGHT JOIN, ten en cuenta estas recomendaciones:
Índices apropiados: Asegúrate de que las columnas utilizadas en la condición de JOIN estén indexadas.
Evalúa la necesidad real: Considera si realmente necesitas un RIGHT JOIN o si un LEFT JOIN con las tablas invertidas sería más claro.
Consistencia en el código: Si tu equipo utiliza predominantemente LEFT JOIN, considera mantener esa convención para facilitar el mantenimiento.
-- Optimización con índices
CREATE INDEX idx_pedidos_cliente ON pedidos(id_cliente);
CREATE INDEX idx_clientes_id ON clientes(id_cliente);
El RIGHT JOIN es una herramienta valiosa en SQL que te permite obtener todos los registros de la tabla derecha mientras recuperas información relacionada de la tabla izquierda, resultando especialmente útil para análisis centrados en transacciones y auditorías de integridad de datos.
Diferencias con INNER JOIN
Cuando trabajamos con bases de datos relacionales, entender las diferencias entre los distintos tipos de JOIN es fundamental para obtener exactamente los datos que necesitamos. El INNER JOIN y los JOIN externos (LEFT JOIN y RIGHT JOIN) tienen comportamientos distintos que afectan directamente a los resultados de nuestras consultas.
Comportamiento fundamental
La diferencia principal entre estos tipos de JOIN radica en cómo manejan los registros sin correspondencia:
- INNER JOIN: Solo devuelve las filas donde existe coincidencia en ambas tablas.
- LEFT JOIN: Devuelve todas las filas de la tabla izquierda y las coincidencias de la tabla derecha.
- RIGHT JOIN: Devuelve todas las filas de la tabla derecha y las coincidencias de la tabla izquierda.
Para visualizar estas diferencias, consideremos un ejemplo con dos tablas: departamentos
y empleados
.
-- Creación de tablas de ejemplo
CREATE TABLE departamentos (
id_departamento INT PRIMARY KEY,
nombre VARCHAR(50)
);
CREATE TABLE empleados (
id_empleado INT PRIMARY KEY,
nombre VARCHAR(100),
id_departamento INT
);
-- Inserción de datos
INSERT INTO departamentos VALUES (1, 'Ventas'), (2, 'Marketing'), (3, 'Recursos Humanos'), (4, 'Investigación');
INSERT INTO empleados VALUES (101, 'Juan Pérez', 1), (102, 'Ana Gómez', 1), (103, 'Carlos Ruiz', 2), (104, 'Laura Sánchez', NULL);
Ahora, veamos cómo se comporta cada tipo de JOIN con estos datos:
-- INNER JOIN: solo muestra empleados con departamento asignado y departamentos con empleados
SELECT e.nombre AS empleado, d.nombre AS departamento
FROM empleados e
INNER JOIN departamentos d ON e.id_departamento = d.id_departamento;
-- LEFT JOIN: muestra todos los empleados, tengan o no departamento asignado
SELECT e.nombre AS empleado, d.nombre AS departamento
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id_departamento;
-- RIGHT JOIN: muestra todos los departamentos, tengan o no empleados asignados
SELECT e.nombre AS empleado, d.nombre AS departamento
FROM empleados e
RIGHT JOIN departamentos d ON e.id_departamento = d.id_departamento;
Los resultados serían:
INNER JOIN:
empleado | departamento |
---|---|
Juan Pérez | Ventas |
Ana Gómez | Ventas |
Carlos Ruiz | Marketing |
LEFT JOIN:
empleado | departamento |
---|---|
Juan Pérez | Ventas |
Ana Gómez | Ventas |
Carlos Ruiz | Marketing |
Laura Sánchez | NULL |
RIGHT JOIN:
empleado | departamento |
---|---|
Juan Pérez | Ventas |
Ana Gómez | Ventas |
Carlos Ruiz | Marketing |
NULL | Recursos Humanos |
NULL | Investigación |
Impacto en el conjunto de resultados
Estas diferencias tienen implicaciones importantes:
Cardinalidad del resultado: El INNER JOIN generalmente produce conjuntos de resultados más pequeños que los JOIN externos, ya que excluye todos los registros sin correspondencia.
Valores NULL: En los JOIN externos, los campos de la tabla sin correspondencia se rellenan con NULL, lo que requiere un manejo adecuado en las aplicaciones.
-- Comparación de conteo de registros
SELECT 'INNER JOIN' AS tipo, COUNT(*) AS total_filas
FROM empleados e
INNER JOIN departamentos d ON e.id_departamento = d.id_departamento
UNION ALL
SELECT 'LEFT JOIN' AS tipo, COUNT(*) AS total_filas
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id_departamento
UNION ALL
SELECT 'RIGHT JOIN' AS tipo, COUNT(*) AS total_filas
FROM empleados e
RIGHT JOIN departamentos d ON e.id_departamento = d.id_departamento;
Cuándo usar cada tipo de JOIN
La elección entre INNER JOIN y JOIN externos depende de los requisitos específicos:
- Usa INNER JOIN cuando:
- Solo necesitas registros que tengan correspondencia en ambas tablas.
- Quieres excluir automáticamente datos incompletos o sin relación.
- Estás realizando operaciones que no pueden manejar valores NULL.
-- Ejemplo: Obtener solo empleados activos con sus departamentos
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
INNER JOIN departamentos d ON e.id_departamento = d.id_departamento
WHERE e.estado = 'Activo';
- Usa LEFT JOIN cuando:
- Necesitas todos los registros de la tabla principal (izquierda), independientemente de si tienen relación.
- Quieres identificar registros en la tabla izquierda que no tienen correspondencia en la derecha.
- El análisis se centra en la entidad representada por la tabla izquierda.
-- Ejemplo: Informe de todos los empleados, mostrando su departamento si existe
SELECT e.nombre, COALESCE(d.nombre, 'Sin asignar') AS departamento
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id_departamento;
- Usa RIGHT JOIN cuando:
- Necesitas todos los registros de la tabla secundaria (derecha), independientemente de si tienen relación.
- Quieres identificar registros en la tabla derecha sin correspondencia en la izquierda.
- El análisis se centra en la entidad representada por la tabla derecha.
-- Ejemplo: Informe de todos los departamentos, mostrando cuántos empleados tienen
SELECT d.nombre AS departamento, COUNT(e.id_empleado) AS num_empleados
FROM empleados e
RIGHT JOIN departamentos d ON e.id_departamento = d.id_departamento
GROUP BY d.nombre;
Diferencias en el filtrado
El comportamiento de las condiciones de filtrado varía significativamente entre INNER JOIN y JOIN externos:
En INNER JOIN: Las condiciones en WHERE y ON tienen el mismo efecto, ya que solo se incluyen las coincidencias.
En LEFT/RIGHT JOIN: La ubicación de las condiciones es crucial:
Condiciones en ON: Filtran las coincidencias pero mantienen todos los registros de la tabla principal.
Condiciones en WHERE: Filtran el resultado final, pudiendo eliminar registros sin correspondencia.
-- Con INNER JOIN, estos dos enfoques son equivalentes
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
INNER JOIN departamentos d ON e.id_departamento = d.id_departamento AND d.nombre = 'Ventas';
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
INNER JOIN departamentos d ON e.id_departamento = d.id_departamento
WHERE d.nombre = 'Ventas';
-- Con LEFT JOIN, estos enfoques dan resultados diferentes
-- Mantiene todos los empleados, pero solo muestra el departamento si es 'Ventas'
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id_departamento AND d.nombre = 'Ventas';
-- Solo muestra empleados que pertenecen al departamento 'Ventas'
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id_departamento
WHERE d.nombre = 'Ventas';
Rendimiento comparativo
En términos de rendimiento, existen algunas consideraciones importantes:
INNER JOIN suele ser más eficiente porque procesa menos filas y no necesita rellenar con NULL.
JOIN externos pueden requerir más recursos, especialmente con grandes conjuntos de datos.
La optimización de consultas puede variar entre motores de bases de datos:
MySQL tiende a optimizar mejor los INNER JOIN.
PostgreSQL maneja eficientemente tanto INNER como LEFT/RIGHT JOIN.
-- Añadir índices mejora el rendimiento de todos los tipos de JOIN
CREATE INDEX idx_empleados_depto ON empleados(id_departamento);
CREATE INDEX idx_departamentos_id ON departamentos(id_departamento);
Conversión entre tipos de JOIN
Es posible transformar consultas entre diferentes tipos de JOIN:
- Un INNER JOIN puede convertirse en LEFT/RIGHT JOIN añadiendo una condición WHERE para filtrar los NULL.
-- Estas consultas son equivalentes
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
INNER JOIN departamentos d ON e.id_departamento = d.id_departamento;
SELECT e.nombre, d.nombre AS departamento
FROM empleados e
LEFT JOIN departamentos d ON e.id_departamento = d.id_departamento
WHERE d.id_departamento IS NOT NULL;
Un LEFT JOIN puede simular un INNER JOIN si se filtran los NULL en el WHERE.
Un RIGHT JOIN puede reescribirse como LEFT JOIN invirtiendo el orden de las tablas.
La elección entre INNER JOIN y JOIN externos (LEFT/RIGHT) depende fundamentalmente de si necesitas incluir registros sin correspondencia en tus resultados. Mientras que INNER JOIN es más restrictivo y produce conjuntos de datos más "limpios", los JOIN externos ofrecen una visión más completa que puede ser crucial para análisis, auditorías y reportes exhaustivos.
Otros ejercicios de programación de SQL
Evalúa tus conocimientos de esta lección LEFT JOIN y RIGHT JOIN con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Tipos de datos
Inserción de datos: INSERT INTO
Filtrado de grupos de resultados con HAVING
Uso de índices y particiones
Renombrar tablas y bases de datos: RENAME
Uso de vistas
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Agrupación de resultados con GROUP BY
Creación y uso de subqueries
Sentencias INSERT
Copias de seguridad y restauración de bases de datos
Uso de INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN
Instalación de MySQL
Relaciones entre tablas
Eliminación de datos: DELETE
Creación de bases de datos y tablas: CREATE DATABASE, CREATE TABLE
Creación y uso de funciones
Creación de tablas e inserción de datos con SQL
Uso de funciones agregadas: COUNT, SUM, AVG, MAX, MIN
Optimización de consultas
Introducción a SQL
Triggers y eventos
Clasificación de resultados con ORDER BY
Alterar la estructura de tablas existentes: ALTER TABLE
Eliminación de datos: DELETE
Instalación de PostgreSQL
Creación y uso de procedimientos almacenados
Consultas básicas de selección: SELECT y WHERE
Vaciar tablas y bases de datos: DROP
Actualización de datos: UPDATE
Creación y manejo de usuarios y roles
Consultas básicas de selección SELECT y WHERE
Creación de bases de datos y tablas
Bases de datos y tablas
Actualización de datos: UPDATE
Relaciones entre tablas
Filtrado de valores únicos con DISTINCT
Asignación y gestión de permisos
Todas las lecciones de SQL
Accede a todas las lecciones de SQL y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Sql
Introducción Y Entorno
Ddl Y Dml
Introducción Y Entorno
Instalación De Mysql
Introducción Y Entorno
Instalación De Postgresql
Introducción Y Entorno
Tipos De Datos
Introducción Y Entorno
Bases De Datos Y Tablas
Introducción Y Entorno
Sistemas De Gestión De Bases De Datos
Introducción Y Entorno
Tipos De Bases De Datos
Introducción Y Entorno
Creación De Bases De Datos Y Tablas: Create Database, Create Table
Sintaxis Dml Crud
Consultas Básicas De Selección: Select Y Where
Sintaxis Dml Crud
Inserción De Datos: Insert Into
Sintaxis Dml Crud
Actualización De Datos: Update
Sintaxis Dml Crud
Eliminación De Datos: Delete
Sintaxis Dml Crud
Introducción A Dml
Sintaxis Dml Crud
Consultar Datos: Select
Sintaxis Dml Crud
Clasificación De Resultados Con Order By
Filtros Y Clasificación
Filtrado De Valores Únicos Con Distinct
Filtros Y Clasificación
Paginación Con Limit Y Offset
Filtros Y Clasificación
Alterar La Estructura De Tablas Existentes: Alter Table
Sintaxis Ddl
Renombrar Tablas Y Bases De Datos: Rename
Sintaxis Ddl
Vaciar Tablas Y Bases De Datos: Drop
Sintaxis Ddl
Uso De Funciones Agregadas: Count, Sum, Avg, Max, Min
Funciones Y Agrupación
Agrupación De Resultados Con Group By
Funciones Y Agrupación
Filtrado De Grupos De Resultados Con Having
Funciones Y Agrupación
Funciones Numéricas Y Matemáticas
Funciones Y Agrupación
Funciones De Fecha Y Hora
Funciones Y Agrupación
Funciones De Texto
Funciones Y Agrupación
Many To One
Asociaciones Entre Tablas
One To Many
Asociaciones Entre Tablas
One To One
Asociaciones Entre Tablas
Many To Many
Asociaciones Entre Tablas
Relaciones Entre Tablas
Joins Y Subqueries
Uso De Inner Join, Left Join, Right Join, Full Join
Joins Y Subqueries
Creación Y Uso De Subqueries
Joins Y Subqueries
Left Join Y Right Join
Joins Y Subqueries
Full Join
Joins Y Subqueries
Cross Join Y Self Join
Joins Y Subqueries
Optimización De Consultas
Sintaxis Avanzada
Uso De Índices Y Particiones
Sintaxis Avanzada
Uso De Vistas
Sintaxis Avanzada
Triggers Y Eventos
Sintaxis Avanzada
Particiones
Sintaxis Avanzada
Restricciones E Integridad
Sintaxis Avanzada
Transacciones
Sintaxis Avanzada
Vistas Materializadas
Sintaxis Avanzada
Rollback
Sintaxis Avanzada
Vistas Con Create View
Sintaxis Avanzada
Principios Acid
Sintaxis Avanzada
Manejo De Errores Y Excepciones
Sintaxis Avanzada
Funciones Ventana
Sintaxis Avanzada
Índices
Sintaxis Avanzada
Expresiones De Tabla Comunes (Cte) Con With
Sintaxis Avanzada
Creación Y Uso De Funciones
Programación En Sql
Creación Y Uso De Procedimientos Almacenados
Programación En Sql
Variables Y Control De Flujo
Programación En Sql
Creación Y Manejo De Usuarios Y Roles
Seguridad Y Administración
Asignación Y Gestión De Permisos
Seguridad Y Administración
Copias De Seguridad Y Restauración De Bases De Datos
Seguridad Y Administración
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender la sintaxis y funcionamiento del LEFT JOIN para conservar todos los registros de la tabla izquierda.
- Entender el uso y comportamiento del RIGHT JOIN para conservar todos los registros de la tabla derecha.
- Diferenciar claramente entre INNER JOIN, LEFT JOIN y RIGHT JOIN y sus implicaciones en los resultados.
- Aplicar filtros correctamente en consultas con JOIN para obtener resultados precisos.
- Reconocer buenas prácticas y consideraciones de rendimiento al usar JOINs en bases de datos SQL.