Cláusula INNER JOIN de MySQL
La cláusula `INNER JOIN` de MySQL se utiliza para recuperar filas de dos o más tablas basándose en una columna común de ambas tablas. Devuelve sólo las filas que tienen valores coincidentes en ambas tablas.
Utilización
La cláusula `INNER JOIN` se utiliza cuando necesitas seleccionar datos de varias tablas en las que haya una coincidencia en las columnas especificadas. Se suele utilizar en sentencias `SELECT` para combinar filas de diferentes tablas.
sql
SELECT columns
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
En esta sintaxis, `INNER JOIN` combina filas de `tabla1` y `tabla2` en las que coinciden los valores de `nombre_columna`. Ten en cuenta que si no hay filas coincidentes en ninguna de las dos tablas, no se devolverá ninguna fila.
Ejemplos
1. Unión interna básica
sql
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
Este ejemplo recupera los nombres de los empleados junto con sus respectivos nombres de departamento uniendo las tablas `employees` y `departments` en las coincidencias `department_id` e `id`.
2. Unión interna con condiciones adicionales
sql
SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id
WHERE orders.order_date > '2023-01-01';
Esta consulta recupera los ID de los pedidos y los nombres de los clientes de los pedidos realizados después del 1 de enero de 2023, utilizando una unión interna entre las tablas "pedidos" y "clientes".
3. Unión interna con varias tablas
sql
SELECT students.name, courses.course_name, grades.grade
FROM students
INNER JOIN grades ON students.id = grades.student_id
INNER JOIN courses ON grades.course_id = courses.id;
Este ejemplo une tres tablas: `estudiantes`, `calificaciones` y `cursos`, para mostrar el nombre de cada estudiante, los cursos en los que está matriculado y sus calificaciones.
Consejos y buenas prácticas
- Utiliza referencias explícitas a las columnas. Utiliza siempre el nombre de la tabla o el alias con los nombres de las columnas para evitar ambigüedades.
- Garantizar columnas de unión indexadas. Indexa las columnas de unión para mejorar el rendimiento de la consulta.
- Filtra pronto. Aplica las cláusulas "DONDE" pronto para minimizar los datos antes de unirlos.
- Utiliza alias de tabla. Utiliza alias de tablas para simplificar las consultas y mejorar la legibilidad.
- Limita los resultados. Aplica `LIMIT` para recuperar sólo los datos necesarios, reduciendo la carga de la base de datos.
Nota
El tipo de unión por defecto es `INNER JOIN` si no se indica un tipo específico al utilizar la palabra clave `JOIN`.