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

Cómo practicar los JOINs de SQL

No hay mejor manera de aprender los JOINs de SQL que a través de la práctica. Sin embargo, probablemente habrá obstáculos en el camino. Cubriré algunos de estos obstáculos y daré ideas sobre cómo superarlos. Aunque este artículo no te convertirá en un experto en Tipos de JOIN en SQL, te mostrará cómo convertirte en uno. Así que, ¡comencemos!

Desafíos al practicar Tipos de JOIN en SQL

Es difícil responder a la pregunta "¿Cómo se domina Tipos de JOIN en SQL?". Sin embargo, es fácil responder "¿Cómo se practica Tipos de JOIN en SQL?" Este es el camino para dominar Tipos de JOIN en SQL.

Si estás leyendo este artículo, probablemente ya has empezado a aprender sobre las bases de datos y entiendes lo que son. También es probable que entiendas algunos conceptos básicos como tablas, claves primarias y foráneas, escribir sentencias sencillas en SELECT, etc.

Entonces, estás listo para comenzar a escribir consultas más complejas pero probablemente te enfrentes a ciertos desafíos. Los retos que abordo en este artículo son los que he experimentado al aprender cualquier cosa nueva. Así pues, vamos a enumerar los retos más comunes.

Utilizar los datos correctos

No es una novedad decir que las bases de datos se centran en los datos. Comienza con datos del mundo real que se almacenan digitalmente en una base de datos. A continuación, esta información debe recuperarse de la base de datos y convertirse en informes del mundo real. No puedo imaginarme la creación de informes significativos a partir de bases de datos sin utilizar JOINs.

Puede que trabajes en una institución financiera, que analices los resultados de las elecciones o que te preguntes cómo utilizan realmente los usuarios de tu juego para móviles. También puede que esté preparando una entrevista. Sea lo que sea, necesitarás saber cómo tratar con miles o millones de registros en muchas tablas diferentes.

Tu objetivo será escribir consultas que devuelvan exactamente lo que quieres. Para ello, necesitarás saber cómo escribir el código SQL y tener al menos una idea de cuál debe ser el resultado final.

Al practicar Tipos de JOIN en SQL, un reto puede ser encontrar un conjunto de datos apropiado. Es probable que las empresas no compartan sus datos para que practiques con ellos, pero practicar con conjuntos de datos inadecuados no es una buena opción. Si la consulta no devuelve nada, no puede estar seguro de si escribió la consulta de forma incorrecta o si el conjunto de datos no tiene nada que se ajuste a los criterios.

El conjunto de datos ideal le permitirá obtener resultados para las consultas más comunes y también para algunos casos especiales interesantes. Técnicamente, puedes crear un conjunto de datos tú mismo, pero hay algunos retos importantes:

  1. Tendrá que saber cómo crearlo: ocuparse de los datos, las claves, las inserciones, etc.
  2. Tendrás que saber qué casos quieres cubrir con los datos. Esto es difícil porque estás practicando para aprender esto y no al revés.
  3. El conjunto de datos tendrá que ser lo suficientemente grande: no pueden ser sólo unas pocas filas en cada tabla. Se necesita tiempo para reunir información del mundo real (por ejemplo, listas de ciudades y países) o para producir tus propios datos (empleados imaginarios, funciones, etc.).

Encontrar los ejemplos adecuados

No sólo necesitas un buen conjunto de datos, sino también ejemplos que te ayuden a aprender de forma eficiente y eficaz. Puedes encontrar fácilmente miles de ejemplos en Internet, pero algunos pueden ser demasiado simples y otros pueden estar más allá de lo que puedes entender en ese momento. Lo mejor es ir paso a paso desde los ejemplos más sencillos hasta los más complejos.

Estos ejemplos también deben ser fácilmente comprensibles y cercanos a los problemas e implementaciones que encontrarás en tu(s) trabajo(s). Las tablas deben ser las que se utilizan en casi cualquier base de datos (por ejemplo, usuarios, clientes, estudiantes, coches, etc.). Esto hará que los ejemplos sean más comprensibles y aplicables a situaciones del mundo real.

Equilibrio entre teoría y aplicación

La mayoría de las personas que aprenden a escribir Tipos de JOIN en SQL no están muy interesadas en la teoría que hay detrás. Aunque siempre es bueno entender la teoría, la situación no siempre nos permite dedicarle tanto tiempo. Esto se aplica a casi todo en la vida, y la clave es encontrar un equilibrio.

Hay que aprender la teoría justa para entender lo que se hace cuando se escriben las consultas. Esto no significa que no debas aprender todo lo posible, sino que debes hacerlo por pasos. Debes saber qué se requiere de ti, qué JOIN usar y por qué.

Practique Tipos de JOIN en SQL en línea

Independientemente de lo que estés aprendiendo, debes empezar por lo básico y mejorar tus conocimientos con el tiempo, ni demasiado rápido ni demasiado lento. Entonces, ¿cuál es la mejor manera de aprender Tipos de JOIN en SQL?

Personalmente, me encanta la historia. Es una de mis pasiones (además de las bases de datos, por supuesto). Mi pareja suele decir que soy una "fuente" de datos históricos extraños. Y estoy de acuerdo. La mayoría de estos datos extraños los encuentro a través de vídeos. Hay vídeos muy buenos en Internet. Ojalá hubiera tenido esto cuando iba a la escuela.

Pero hay un problema con este enfoque cuando se aprende Tipos de JOIN en SQL y la mayoría de las otras materias relacionadas con la informática. No puedes simplemente ver un vídeo de otra persona codificando y esperar tener ese conocimiento. Aunque definitivamente aprenderás algo, nada es mejor que escribir el código tú mismo.

Cuando ves vídeos, das las cosas por sentadas, y no aprendes haciendo. Cuando empiezas a escribir el código, te das cuenta de que realmente estás aprendiendo a usar Tipos de JOIN en SQL. No estoy diciendo que los cursos de vídeo no sean una gran parte del proceso de aprendizaje. Sólo creo que no se puede dominar las JOINs de SQL sólo viendo videos.

Por lo tanto, sugiero encarecidamente que aprenda Tipos de JOIN en SQL escribiendo código. Una forma de hacerlo es practicar en línea.

Voy a compartir una de mis experiencias personales. Siempre me ha encantado instalar un nuevo entorno de desarrollo. Después de cada instalación, iniciaba el programa y, por supuesto, veía una pantalla en blanco. Bien, eso es lo esperado. Así que el siguiente paso solía ser buscar ejemplos en Internet, pero esto no era lo ideal.

Mientras que usted puede ser un fan de los libros, videos, o incluso googlear, creo que no hay mejor manera de resolver las cosas que para saltar en un curso sobre lo que está teniendo un problema. Obtendrás ejemplos debidamente preparados y descritos. Además, estos ejemplos estarán ordenados de forma que puedas ir avanzando poco a poco hacia problemas más complicados.

Tipos y Ejemplos de JOIN en SQL

SQL soporta diferentes tipos de JOINs para devolver el resultado deseado. Aquí están los JOINs más conocidos.

INNER JOIN

INNER JOIN se utiliza para unir dos tablas basándose en una condición. Las tablas se unen utilizando una condición escrita después de ON. En este caso se suelen utilizar atributos de clave primaria y foránea, pero son posibles variaciones. Sólo se devolverán las filas de las tablas incluidas en INNER JOIN que tengan un par, definido por la condición.

SELECT *
FROM student
INNER JOIN room ON student.room_id = room.id;

JOIN IZQUIERDO

LEFT JOIN hace lo mismo que INNER JOIN excepto que toma dos tablas, la tabla "izquierda" y la tabla "derecha". La condición se escribe después de ON. Devuelve todas las filas de la tabla "izquierda", incluso las que no tienen un par en la tabla "derecha".

SELECT *
FROM student
LEFT JOIN room ON student.room_id = room.id;

JOIN DERECHO

RIGHT JOIN hace lo mismo que LEFT JOIN, excepto que toma todas las filas de la tabla "derecha" y las une a la tabla "izquierda". Dado que LEFT JOIN y RIGHT JOIN son similares, y que se puede simular RIGHT JOIN con LEFT JOIN (sólo hay que cambiar el orden de las tablas en la unión), RIGHT JOIN rara vez se utiliza. Otra razón es que leemos de arriba a abajo y de izquierda a derecha. Por lo tanto, la legibilidad de la consulta utilizando LEFT JOIN es más intuitiva.

SELECT *
FROM student
RIGHT JOIN room ON student.room_id = room.id;

JOINs Múltiples

Los JOINs múltiples permiten unir más de dos tablas. Unir más de dos tablas es bastante común. Utilizará los mismos JOINs que hemos mencionado hasta ahora, así como algunas reglas aplicadas a ellos. Tenga cuidado de que cada JOIN tenga sus propias condiciones escritas después de ON. Para aumentar la legibilidad y simplificar las cosas, ponga cada JOIN en una nueva línea.

SELECT *
FROM student
INNER JOIN room ON student.room_id = room.id
INNER JOIN equipment ON equipment.room_id = room.id;

FULL JOIN

FULL JOIN devuelve todas las filas de la tabla "izquierda" y "derecha", aunque tengan un par. Algunos SGBD soportan FULL JOIN, mientras que otros no. Puede simular fácilmente FULL JOIN utilizando la combinación de LEFT JOIN y RIGHT JOIN como se muestra a continuación.

SELECT movie.*, director.*
FROM movie
LEFT JOIN director ON movie.director_id = director.id
UNION
SELECT movie.*, director.*
FROM movie
RIGHT JOIN director ON movie.director_id = director.id;

Self JOINs

Los Self JOINs no son un tipo de JOIN, sino una forma de utilizar una tabla más de una vez en JOIN. Esto significa que se unirá la tabla consigo misma. Por lo tanto, si tiene dos tablas, una de ellas estará a la izquierda y otra a la derecha de JOIN. A continuación se muestran algunos ejemplos de cuándo necesitaría hacer esto: "hacer una lista de todos los empleados y de todos los demás empleados mayores que este empleado" y "averiguar si hay algún director con un salario inferior al de alguno de los empleados". En pocas palabras, necesita datos de la misma tabla dos veces, y necesita unir/comparar estos dos conjuntos de datos basándose en una condición.

Uniones no equitativas

Hasta ahora, hemos utilizado sólo ecuaciones en las condiciones de JOIN (después de la palabra clave ON). Sin embargo, esto no es necesario. Puede hacer lo que quiera en una condición, pero tenga en cuenta que afectará a la salida (y, por supuesto, asegúrese de saber lo que está haciendo).

SELECT *
FROM student s1
INNER JOIN student s2 on s1.id < s2.id
ORDER BY s1.id, s2.id;

Observe que la consulta anterior es un ejemplo de un auto JOIN (hemos utilizado la student dos veces), así como de una no-equi JOIN (utilizando "<" en lugar de "=" en la condición s1.id < s2.id). La consulta propiamente dicha devuelve todos los estudiantes combinados con otros estudiantes (menos ellos). Cada combinación se devuelve exactamente una vez.

¿Quieres saber más sobre Tipos de JOIN en SQL? Mira un episodio de nuestra serie We Learn SQL en Youtube. Comprueba si ya lo sabes todo sobre los diferentes tipos de JOINs.

Conclusión

No hay una respuesta fácil a la pregunta "¿Cómo se domina Tipos de JOIN en SQL?" La única manera de hacerlo es probando, fallando y finalmente teniendo éxito. Te llevará menos o más tiempo en función de tus conocimientos actuales y de cómo practiques. Eso nos lleva de nuevo a la pregunta "¿Cómo se practica Tipos de JOIN en SQL?" Al final, esta es la pregunta que debemos responder.

Sea cual sea el camino que elijas, asegúrate de sacar el máximo provecho de la inversión de tu tiempo y dinero. Aunque se puede ganar dinero, nadie te devolverá tu tiempo. Mi sugerencia es que practiques con ejemplos tanto como sea posible.

Si quieres ver algunos vídeos como parte de tu proceso de aprendizaje, te recomiendo este. Creo que lo disfrutarás, especialmente si eres un fan de Tipos de JOIN en SQL y de la ciencia ficción.