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

Práctica de SQL para estudiantes: 11 Ejercicios Prácticos de SQL Básico con Soluciones

¡Llamada a todos los estudiantes! ¿Tienes curiosidad por SQL? ¿Quieres aprender o mejorar tus conocimientos de SQL? Este artículo contiene 11 ejercicios de práctica de SQL con soluciones detalladas.

¿Has oído alguna vez que "la práctica hace al maestro"? Probablemente sí, por eso estás buscando recursos para practicar SQL. Si quieres desarrollar habilidades sólidas o convertirte en un experto en un dominio determinado, tienes que practicar.

Como escribió Rebecca McKeown en su excelente artículo Learning SQL? 12 Ways to Practice SQL Online: "¡Todo teoría y nada de práctica te convertirá en un usuario de SQL frustrado!". Y tiene razón. Cada vez que aprendes un nuevo concepto, necesitas aplicarlo inmediatamente practicando. Ese es el objetivo de los ejercicios presentados en este artículo.

La mayoría de los ejercicios siguientes están tomados de nuestro curso interactivo Ejercicio de SQL: University. Este curso interactivo en línea está diseñado para personas que conocen SQL y buscan ejercicios de práctica que cubran consultas de tabla única, uniones, ordenación, agrupación, agregación y mucho más. Forma parte de nuestra Ejercicio de SQL que contiene más cursos prácticos de SQL para principiantes.

11 Ejercicios Básicos de SQL con Soluciones

Visión general de un ejercicio interactivo en LearnSQL.es.

Pero tal vez aún no quiera comprometerse con un curso completo. No hay problema. Estos 11 ejercicios le ayudarán a practicar y mejorar sus conocimientos de SQL, ¡sin coste ni compromiso! Abróchate el cinturón y empecemos.

Mejore sus Ejercicio de SQL

Nuestros ejercicios de práctica de SQL son perfectos para estudiantes: Utilizaré el modelo universitario, ¡algo con lo que deberías estar familiarizado! Estas son las tablas que utilizaremos durante los ejercicios:

  • student contiene datos básicos relacionados con los estudiantes universitarios: nombre, apellidos, correo electrónico, fecha de nacimiento y fecha de inicio.
  • lecturer contiene datos básicos relacionados con los profesores: nombre, apellidos, titulación y correo electrónico.
  • academic_semester contiene información básica relacionada con los semestres académicos: año natural, trimestre, fecha de inicio y fecha de finalización.
  • course_edition es una tabla que sirve para unir las otras tres tablas: course (que no utilizaremos en este artículo), academic_semestery lecturer.
11 Ejercicios Básicos de SQL con Soluciones

Si quieres practicar el uso de la base de datos completa de la universidad, ve al curso Básico Ejercicio de SQL: Universidad. (¡Tenemos una oferta especial y precios especiales para estudiantes y profesores! Si estás interesado, consulta nuestra oferta de cursos SQL para Estudiantes ).

11 Ejercicios Básicos de Ejercicio de SQL

En esta sección, proporcionaré 11 ejercicios de práctica de SQL con soluciones. La dificultad irá aumentando gradualmente: Empezaré con ejercicios muy fáciles y genéricos e iré introduciendo nuevos conceptos de SQL poco a poco.

¿Estás preparado para mejorar tu práctica de SQL?

Ejercicio 1: Listar todos los alumnos

Ejercicio

Seleccionar todos los datos de los alumnos de la base de datos.

Solución

SELECT * 
FROM student;

Explicación

Queremos recuperar la información de los estudiantes de la base de datos. Por lo tanto, tenemos que utilizar la cláusula SELECT y la cláusula FROM en la tabla student en la tabla. El símbolo del asterisco (*) se utiliza aquí como abreviatura para representar los nombres de todas las columnas de la tabla students. Tenga en cuenta que todas las sentencias SQL terminan con el carácter punto y coma (;).

Ejercicio 2: Listar todos los nombres de los estudiantes

Ejercicio

Seleccione el nombre y apellido de todos los estudiantes.

Solución

SELECT first_name, last_name
FROM student;

Explicación

Esta vez queremos recuperar información parcial de la base de datos. Podemos hacerlo fácilmente indicando el nombre de las columnas que queremos recuperar - en este caso, first_name y last_name. Los nombres de las columnas se separan con una coma y van seguidos de la sentencia FROM con el nombre de la tabla (student).

Ejercicio 3: Seleccionar un profesor específico por ID

Ejercicio

Seleccione de la base de datos el correo electrónico del profesor con ID 5.

Solución

SELECT email
FROM lecturer
WHERE id = 5;

Explicación

Esta vez queremos recuperar la información del profesor de la base de datos. Por lo tanto, tenemos que utilizar la cláusula SELECT y la cláusula FROM en la tabla lecturer en la tabla.

En una base de datos, cada tabla suele tener una columna de clave primaria (generalmente llamada ID) que representa un identificador único para cada entrada. En este ejercicio, recuperamos sólo un conferenciante (es decir, una fila) de la tabla lecturer de la tabla. Para ello, utilizamos la cláusula WHERE con la condición id=5.

En este caso, utilizamos el operador de comparación "igual" (=). También podríamos escribir una condición con otros operadores de comparación, como >, <, >=, <=, o <> (no igual a).

Ejercicio 4: Seleccionar alumnos por apellido

Ejercicio

Seleccionar todos los datos de cualquier alumno cuyo apellido sea Durrand.

Solución

SELECT *
FROM student
WHERE last_name = 'Durrand';

Explicación

Volver a la student ¡tabla! En este ejercicio, queremos recuperar todos los alumnos cuyo apellido sea Durrand. La columna last_name permite valores duplicados; por lo tanto, cuando usamos la cláusula WHERE, se pueden devolver múltiples filas.

Tenga en cuenta que las comillas simples (') se utilizan en SQL para encerrar valores de texto (‘Durrand’).

Ejercicio 5: Seleccionar Estudiantes Cuyo Apellido Empieza por D

Ejercicio

Seleccionar los nombres y apellidos de los alumnos cuyo apellido empiece por la letra D.

Solución

SELECT first_name, last_name
FROM student
WHERE last_name LIKE 'D%';

Explicación

En este ejercicio no buscamos alumnos con un apellido exacto, sino alumnos cuyo apellido empiece por una letra concreta (D). El operador de comparación igual (=) no se puede utilizar en este ejercicio porque no buscamos una coincidencia exacta. Afortunadamente, SQL proporciona el operador LIKE que nos permite buscar un patrón específico.

El uso de la cláusula WHERE en combinación con el operador LIKE en la columna last_name es suficiente. El carácter de porcentaje (%) se utiliza para representar cero, uno o varios caracteres. Por lo tanto, ‘D%’ significa aquí "Un nombre que empieza por D seguido de cero, uno o muchos más caracteres".

¿Te han gustado los ejercicios de este artículo? Puedes encontrar más en el excelente artículo 10 Beginner Ejercicio de SQL Exercises With Solutions de mi amigo Tihomir Babic.

Ejercicio 6: Usar Múltiples Condiciones para Seleccionar un Semestre Académico

Ejercicio

Seleccione todos los datos de los semestres académicos en los que se cumplan estas dos condiciones: el año es 2020 y el trimestre es primavera.

Solución

SELECT *
FROM academic_semester
WHERE calendar_year = 2020
  AND term = 'spring';

Explicación

En esta ocasión, se nos pide recuperar la información de los semestres académicos. Vamos a realizar una cláusula SELECT sobre la tabla academic_semester para conseguirlo. En comparación con los ejercicios anteriores, algo es nuevo: ¡tenemos 2 condiciones!

Te preguntarás si en SQL se permiten múltiples condiciones; ¡sí, se permiten! Lo único que tienes que hacer es utilizar un operador lógico en combinación con la cláusula WHERE. SQL proporciona tres operadores lógicos: AND, OR, y NOT. En este ejercicio, queremos que se cumplan las 2 condiciones, por lo que utilizamos el operador lógico AND.

Observe que la columna calendar_year es de tipo entero, mientras que el término es una cadena. Por eso no usamos comillas cuando buscamos 2020 en calendar_year y pero usamos comillas simples cuando buscamos el término 'Primavera'.

Ejercicio 7: Ordenar alumnos por apellido

Ejercicio

Seleccione el apellido y la fecha de nacimiento de los alumnos nacidos a partir de 2003 y ordénelos por apellido en orden descendente (de la Z a la A).

Solución

SELECT last_name, birth_date
FROM student
WHERE birth_date >= '2003-01-01'
ORDER BY last_name DESC;

Explicación

En este ejercicio, recuperamos todos los alumnos nacidos a partir del 1 de enero de 2003. Por lo tanto, nuestro filtro se aplicará a la columna birth_date de la tabla student de la tabla.

Si vuelves a mirar el diagrama de la base de datos que proporcioné al principio de este artículo, te darás cuenta de que la columna birth_date tiene un tipo de datos de fecha.

En SQL, las fechas se almacenan en el siguiente orden: año, mes y día. Lo llamamos el formato yyyy-mm-dd. Por ejemplo, el 10 de enero de 2023 se almacenaría como 2023-01-10 en una base de datos.

SQL también utiliza comillas simples para encerrar las fechas (10 de enero de 2023 se escribe como ‘2023-01-10’) y se permiten las comparaciones en las fechas. Por lo tanto, para construir la consulta que necesitamos, utilizamos la cláusula WHERE con el símbolo de comparación mayor o igual que (>=) en la fecha de nacimiento.

A continuación, ordenamos el resultado por apellido gracias a la palabra clave ORDER BY. La palabra clave DESC indica aquí que el resultado se ordenará en orden descendente (de la Z a la A). Si desea ordenar por orden ascendente, utilice la palabra clave ASC.

Ejercicio 8: Alumnos nacidos entre 2003 y 2004

Ejercicio

Seleccione de la base de datos el nombre, apellido y fecha de nacimiento de los alumnos nacidos entre 2003 y 2004.

Solución

SELECT first_name, last_name, birth_date
FROM student
WHERE birth_date >= '2003-01-01'
AND birth_date <='2004-12-31';

Explicación

En este ejercicio, recuperamos los registros de todos los alumnos nacidos a partir del 1 de enero de 2003 y antes del 31 de diciembre de 2003. Utilizamos la cláusula SELECT.

Hemos visto en el ejercicio anterior que se permiten comparaciones sobre fechas, por lo que nuestra condición aquí es  birth_date >= '2003-01-01' AND birth_date <='2004-12-31'

Ejercicio 9: Contar alumnos para cada fecha de inicio

Ejercicio

Seleccione la fecha de inicio para todos los estudiantes y muestre cuántos estudiantes tienen la misma fecha de inicio.

Solución

SELECT start_date, COUNT(*)
FROM student
GROUP BY start_date;

Explicación

En este ejercicio, queremos recuperar la fecha de inicio de todos los estudiantes y mostrar cuántos estudiantes tienen la misma fecha de inicio. Así que, básicamente, necesitamos una columna que muestre las fechas de inicio sin valores duplicados y otra columna que muestre el número de estudiantes con fechas de inicio idénticas.

La sentencia GROUP BY permite agrupar las filas con los mismos valores (en este caso, la fecha de inicio). Además, utilizamos la función de agregado COUNT() para mostrar el número de filas que coinciden con el valor de la fecha de inicio.

Ejercicio 10: Seleccionar, Agrupar y Filtrar los Resultados

Ejercicio

Encuentre las fechas de inicio en las que hubo más de 15 estudiantes. Mostrar la fecha de inicio y el número de estudiantes que comenzaron en esa fecha.

Solución

SELECT start_date, COUNT(*)
FROM student
GROUP BY start_date
HAVING COUNT(*) > 15;

Explicación

Queremos realizar la misma consulta que en el ejercicio anterior, pero con una pequeña diferencia: queremos filtrar los resultados para mostrar sólo aquellos que coincidan con una determinada cantidad.

Del mismo modo, realizamos una SELECT sobre la tabla student tabla. Agrupamos el resultado por fecha de inicio y utilizamos la función de agregado COUNT(). Por último, utilizamos la cláusula HAVING al final de la consulta para eliminar del conjunto de resultados las fechas de inicio que tengan menos de 15 alumnos.

Ejercicio 11: ¿Cuántos cursos imparte cada profesor?

Ejercicio

Para cada profesor, averigüe cuántos cursos imparte en cada semestre académico. Indique el nombre y apellidos del profesor, el año natural, el trimestre y el número de cursos impartidos por el profesor en ese semestre.

Solución

SELECT
   lec.first_name,
   lec.last_name,
   acs.calendar_year,
   acs.term,
   COUNT(course_id)
FROM lecturer AS lec
JOIN course_edition AS ce 
  ON ce.lecturer_id = lec.id
JOIN academic_semester AS acs 
  ON ce.academic_semester_id = acs.id
GROUP BY lec.id, acs.id;

Explicación

Este ejercicio es un poco más difícil. Tenemos que unir tres tablas: lecturer, course_edition, y academic_semester. Para ello utilizamos eloperador JOIN. A continuación, utilizamos la cláusula GROUP BY para agrupar las ediciones de cursos impartidas por el mismo profesor en el mismo semestre académico. Por último, utilizamos la función COUNT() para contar cuántos cursos tiene un profesor en este semestre.

El artículo SQL Joins: 12 Preguntas Prácticas con Respuestas Detalladas por Tihomir Babic tiene más prácticas de SQL join si estás interesado.

¿Quieres saber más? Ejercicio de SQL

Realmente espero que este artículo te haya hecho practicar tus habilidades SQL y te haya inspirado a comenzar un camino de aprendizaje de SQL.

Si te gustan los ejercicios de este artículo, recuerda que la mayoría de ellos están sacados del curso Ejercicio de SQL: Universidad en LearnSQL.es. Forma parte de nuestra rutaEjercicio de SQL , que contiene 8 cursos más y casi 1.000 ejercicios; ¡eso es mucha experiencia práctica!

Si desea profundizar en SQL, le recomiendo nuestro paquete SQL Todo, para siempre . Esta oferta contiene todos los cursos de SQL actuales y futuros en cuatro dialectos de SQL diferentes. También tenemos una oferta especial para estudiantes.

Gracias por leer este artículo; ¡nos vemos en el próximo!