Volver a la lista de artículos Artículos
Lectura de 10 minutos

5 Mejores Prácticas para Escribir JOINs SQL

Estas mejores prácticas para Tipos de JOIN en SQL le ayudarán a realizar consultas SQL legibles que proporcionen una salida precisa, clara y comprensible.

Teniendo en cuenta que las bases de datos relacionales se construyen en torno a tablas relacionadas, no es de extrañar que Tipos de JOIN en SQL -que permite combinar información de varias tablas- sea una de las principales habilidades que adquieren los novatos en SQL. Tipos de JOIN en SQL El curso de LearnSQL.es es el lugar perfecto para refrescar sus conocimientos sobre los JOINs. Si quieres que tus consultas SQL funcionen y tengan un aspecto profesional, debes seguir las mejores prácticas de Tipos de JOIN en SQL. He resumido algunas de ellas en este artículo.

Tipos de JOIN en SQL Resumen

Digamos que quiere ver todos los pedidos de un conjunto de clientes junto con sus nombres completos. Suena bastante sencillo, ¿verdad? Sin embargo, en la práctica, no es probable que encuentre información sobre los clientes y los pedidos en la misma tabla. La tabla de pedidos puede incluir un ID de cliente para cada pedido, pero normalmente no hay nada más sobre los clientes.

Para combinar la información de los customers y orders tendrá que unir estas tablas basándose en un valor de columna común (por ejemplo, el número de identificación del cliente). Este es el aspecto de su consulta SQL si desea ver todas las columnas de ambas tablas:

SELECT *
FROM customers
JOIN orders
ON customers.id = orders.customer_id;

En la cláusula SELECT, se especifica qué columnas se quieren ver en la salida. Luego, se pone el nombre de una tabla en la cláusula FROM y el nombre de otra tabla en la cláusula JOIN. Finalmente, en la cláusula ON, se especifica qué columnas de cada tabla deben ser utilizadas para la unión.

Puede practicar la sintaxis de SQL JOIN con nuestro Tipos de JOIN en SQL curso interactivo, que incluye 93 desafíos de codificación. Si es nuevo en Tipos de JOIN en SQL, consulte mi guía paso a paso para unir tablas en SQL.

Antes de repasar las mejores prácticas de SQL JOIN, quiero recordar brevemente los diferentes tipos de Tipos de JOIN en SQL:

  • INNER JOIN (o simple JOIN) es el tipo de unión básico. Se utiliza para mostrar registros coincidentes de ambas tablas.
  • LEFT JOIN (o LEFT OUTER JOIN) se aplica para mantener todos los registros de la tabla izquierda y sólo los registros coincidentes de la tabla derecha.
  • RIGHT JOIN (o RIGHT OUTER JOIN) se utiliza para mantener todos los registros de la tabla derecha y sólo los registros coincidentes de la tabla izquierda.
  • FULL JOIN (o FULL OUTER JOIN) se utiliza para mantener todos los registros de todas las tablas, incluso los no coincidentes.
  • CROSS JOIN devuelve un conjunto de resultados con todas las combinaciones posibles de las filas de dos tablas.

Aquí está mi artículo con ejemplos de diferentes tipos de SQL JOIN.

SQL JOIN es una poderosa herramienta que va mucho más allá de la simple unión de dos tablas utilizando una columna común. Puede usar diferentes tipos de Tipos de JOIN en SQL para unir una tabla consigo misma (self-join); unir tablas sin una columna común; unir tablas usando operadores condicionales diferentes a los iguales (non-equi joins); unir múltiples tablas (más de dos) en una consulta, o unir tablas basadas en varias columnas.

Ahora, veamos cuáles son las mejores prácticas de SQL cuando se unen dos o más tablas.

5 Tipos de JOIN en SQL Mejores prácticas

Si quieres que tus consultas SQL sean claras y legibles - y, lo más importante, que devuelvan la salida esperada - necesitas seguir ciertas prácticas para escribir Tipos de JOIN en SQL.

1. Utilice las palabras clave JOIN y ON

En primer lugar, se recomienda encarecidamente utilizar uniones explícitas, es decir, utilizando las palabras clave JOIN y ON. A veces se pueden encontrar consultas SQL en las que las tablas se unen de forma implícita simplemente enumerando los nombres de las tablas en la cláusula FROM y utilizando la cláusula WHERE para especificar la condición de unión.

Por ejemplo, las siguientes dos consultas darán el mismo resultado:

SELECT *
FROM customers
JOIN orders
ON customers.id = orders.customer_id;
SELECT *
FROM customers, orders
WHERE customers.id = orders.customer_id;

Sin embargo, sólo la primera de estas consultas sigue las mejores prácticas de JOIN. La segunda consulta, que tiene la unión implícita, tiene varios problemas:

  • Es menos legible; esto empeora con las consultas SQL complejas. Hay que mirar de cerca para establecer las tablas que se están uniendo. También tiene que encontrar la condición de unión, que no tiene una palabra clave estándar ON antes de ella.
  • No se puede especificar el tipo de JOIN cuando se utiliza un JOIN implícito (por ejemplo, FROM customers, orders). Esto puede ser un problema si necesita utilizar algo más que el estándar INNER JOIN.
  • Definir una condición de unión en la cláusula WHERE puede ser muy confuso, ya que éste no es el uso típico de la cláusula. WHERE se utiliza para filtrar datos; una consulta es difícil de entender cuando se mezclan condiciones de unión con condiciones de filtrado en una cláusula.

Por lo tanto, utilice JOIN para especificar las tablas a unir y ON para especificar la condición de unión.

2. Elija el tipo de JOIN SQL apropiado

Antes de escribir una consulta SQL, piense cuidadosamente qué tipo de SQL JOIN es el más apropiado en este caso particular.

Si está uniendo clientes con una lista de pedidos completados, ¿quiere incluir clientes que aún no tienen pedidos completados? ¿Quiere incluir los pedidos que no tienen el correspondiente ID de cliente por alguna razón? Dependiendo de sus respuestas, puede necesitar usar LEFT JOIN, RIGHT JOIN, o incluso FULL JOIN.

Asegúrese de elegir el tipo de SQL JOIN apropiado y de poner los nombres de las tablas en el orden correcto cuando utilice LEFT JOIN o RIGHT JOIN.

3. Diseñe cuidadosamente la condición JOIN

Si está uniendo dos tablas utilizando su respectiva clave primaria y clave foránea, la condición de unión suele ser bastante sencilla. Sin embargo, no siempre es así:

  • Una columna común puede no identificar de forma exclusiva los registros, en cuyo caso tendrá que utilizar dos o más condiciones de unión. Por ejemplo, si tiene varias personas con el mismo apellido en su base de datos, no puede utilizar sólo el apellido para unir tablas. Tendrá que buscar otra columna (por ejemplo, el ID) o una combinación de columnas. A continuación se explica cómo unir dos tablas utilizando una combinación de dos columnas (first_name y last_name) en ambas tablas:

    SELECT 
    s.first_name, 
    s.last_name, 
    u.id
    FROM students s
    JOIN users u
    ON s.first_name = u.first_name 
    AND s.last_name = u.last_name;
    
  • Es posible que tenga que aplicar uniones no iguales con operadores condicionales más allá de los iguales. Si está comprobando que el precio de una casa está dentro de las expectativas de precio de los compradores al unir compradores potenciales con casas en venta, su consulta sería algo así:

    SELECT 
    	b.id, 
    	b.name, 
    	h.id, 
    	h.address, 
    	h.price
    FROM buyers b
    JOIN houses h
    	ON h.price BETWEEN b.min_price AND b.max_price;
    
  • Puede haber varios registros correspondientes en otra tabla (por ejemplo, un cliente puede tener muchos pedidos). ¿Quiere obtener todos estos pedidos o sólo los más recientes? Si quiere unir sólo el pedido más reciente, su consulta será un poco más compleja:

    SELECT 
    	customers.id, 
    	customers.first_name, 
    	customers.last_name,
    	orders.order_date, 
    	orders.order_status
    FROM customers
    JOIN orders
        ON orders.id = (
            SELECT TOP 1 id
            FROM orders
            WHERE customer_id = customers.id
            ORDER BY order_date DESC
        )
    ORDER BY customer_id;
    

Definir una condición de unión correcta es crucial para obtener la salida correcta después de unir tablas en SQL.

4. Utilice los alias de las tablas

Es una buena práctica utilizar alias de tablas cuando se unen varias tablas o cuando se unen tablas con nombres largos. Normalmente, el alias incluye simplemente la primera letra del nombre completo de la tabla o dos y más letras si el nombre de la tabla está formado por varias palabras (por ejemplo, c para customersds para daily_salesetc.).

Volviendo a nuestro ejemplo, podemos utilizar la siguiente consulta para obtener información sobre el ID del cliente, su nombre, su apellido, el ID del pedido, la fecha del pedido y el estado del mismo:

SELECT
	c.id,
	c.first_name,
	c.last_name,
	o.id,
	o.date,
	o.status
FROM customers c
JOIN orders o
	ON c.id = o.customer_id;

Observe que definimos los alias de la tabla en las cláusulas FROM y JOIN justo después del nombre completo de la tabla. Luego, utilizamos estos alias para referirnos a columnas específicas de estas tablas en las sentencias SELECT y ON. Esto nos puede ahorrar mucha escritura, especialmente si los nombres de las tablas son largos.

5. Utilizar alias de columnas

Los alias de columna son los nombres que asignamos a las columnas del conjunto de resultados. Por defecto, las columnas de salida tendrán los mismos nombres que las columnas correspondientes en las tablas originales. Sin embargo, esto suele dar lugar a resultados confusos.

Por ejemplo, la salida de la consulta de nuestro ejemplo anterior incluirá dos columnas con el nombre id que corresponden a las columnas ID de cliente e ID de pedido.

idfirst_namelast_nameiddatestatus
11KateWhite1112021-10-05Awaiting shipment
12RoseParker1122021-10-05Awaiting payment
13WilliamSpencer1092021-10-04Completed
14JohnSmith1082021-10-04Completed

Puede seguir el orden de las columnas para entender cuál es cuál, pero el mejor enfoque es utilizar alias de columnas:

SELECT
	c.id AS customer_id, 
	c.first_name, 
	c.last_name, 
	o.id AS order_id, 
	o.date AS order_date, 
	o.status AS order_status.
FROM customers c
JOIN orders o
	ON c.id = o.customer_id;
customer_idfirst_namelast_nameorder_idorder_dateorder_status
11KateWhite1112021-10-05Awaiting shipment
12RoseParker1122021-10-05Awaiting payment
13WilliamSpencer1092021-10-04Completed
14JohnSmith1082021-10-04Completed

Tenga en cuenta que también estoy utilizando alias de columna para las columnas con fecha de pedido y estado del pedido. En la tabla resultante, no está claro a qué se refieren estas fechas y estados. Para evitar cualquier confusión, es mejor especificar los nombres de las columnas explícitamente usando los alias de columna. Consulte este artículo para obtener más consejos sobre SQL JOIN.

¡Es hora de practicar Tipos de JOIN en SQL!

SQL JOIN es una de las principales habilidades que adquieren quienes comienzan a trabajar con bases de datos relacionales. Sin embargo, hay mucho más que simples joins involucrados. Hay muchas herramientas y conceptos avanzados bajo el paraguas de Tipos de JOIN en SQL , incluyendo diferentes tipos de outer joins, self-joins, non-equi joins, y más.

Es importante conocer y utilizar las mejores prácticas de Tipos de JOIN en SQL desde el principio:

  • Defina su Tipos de JOIN en SQL explícitamente con las palabras clave JOIN y ON.
  • Asegúrese de seleccionar el tipo correcto de JOIN de SQL.
  • Diseñe cuidadosamente la condición de unión.
  • Utilice alias de tablas, especialmente con nombres de tablas largos.
  • Utilice alias de columna para que la salida de la consulta sea más comprensible.

Los cursos interactivos suelen ser el mejor método para practicar los conocimientos recién adquiridos. Si eres muy nuevo en SQL, te recomiendo que empieces con el SQL para principiantes curso. Le introducirá a los temas clave de SQL, incluyendo Tipos de JOIN en SQL.

Para obtener una comprensión más profunda de los diferentes tipos de JOIN, consulte el curso Tipos de JOIN en SQL curso. Cubre INNER JOIN, LEFT JOIN, RIGHT JOIN, y FULL JOIN; el filtrado de datos con diferentes tipos de JOINs; la unión de una tabla consigo misma; la unión de tablas en columnas no clave, y más.

¿Le ha gustado este artículo? Publicamos muchas guías útiles y tutoriales prácticos. Aquí tienes una lista de nuestros 20 mejores artículos del año pasado si quieres aprender más.

Gracias por leer, y ¡feliz aprendizaje!