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

20 Ejercicios Prácticos de SQL WHERE para Principiantes

Índice

En SQL, la cláusula filtra datos basándose en condiciones definidas. Siga leyendo para realizar 20 ejercicios prácticos WHERE con explicaciones y soluciones para principiantes.

Este artículo repasará algunos de nuestros ejercicios SQL WHERE. Comenzaremos explicando la sintaxis básica y luego examinaremos 20 ejercicios para principiantes que provienen de los cursos de SQL que se enumeran a continuación. Estos ejercicios cubren los principales usos de la cláusula WHERE y son perfectos para practicar tus conocimientos de SQL. Encontrará más en estos cursos:

Cada curso tiene secciones separadas para diferentes temas de SQL y utiliza una base de datos diferente para permitirle practicar SQL. La práctica hace al maestro y es la mejor manera de mejorar tus habilidades SQL a un nuevo nivel.

Sin más preámbulos, comencemos.

Fundamentos de la Cláusula WHERE de SQL

La cláusula SQL WHERE define condiciones para filtrar datos. En otras palabras, permite recuperar sólo los datos que cumplen criterios específicos. Al incluir la cláusula WHERE en SELECT, UPDATE, DELETE, u otra sentencia SQL, el conjunto de datos de salida puede reducirse para incluir sólo los datos relevantes.

El filtrado de datos es esencial para una gestión y un análisis eficaces. Permite extraer sólo la información necesaria de grandes conjuntos de datos, lo que reduce el volumen de datos procesados y mejora el rendimiento de las consultas.

La cláusula WHERE utiliza varias herramientas para comparar y filtrar datos, como operadores de comparación, comparación de patrones para comparar valores con patrones específicos y operadores lógicos para combinar varias condiciones.

En la sentencia SELECT, la cláusula WHERE aparece después de las cláusulas SELECT y FROM:

SELECT id, name, age
FROM persons
WHERE age > 18;

Repaso rápido: La cláusula SELECT enumera las columnas que se presentarán en la salida y la cláusula FROM define la tabla desde la que se consultan los datos. La cláusula WHERE especifica la condición de filtrado. En este caso, seleccionamos sólo las personas cuya edad es superior a 18 años. Puede obtener más información sobre cómo escribir la cláusula WHERE en SQL aquí.

Las siguientes secciones contienen ejercicios prácticos de SQL WHERE que cubren las siguientes aplicaciones:

  • Filtrado de valores numéricos.
  • Filtrado de valores de texto.
  • Filtrado de valores booleanos.
  • Filtrado de valores NULL.
  • Combinación de múltiples condiciones.

Para obtener acceso al entorno de práctica, bases de datos de ejemplo e incluso más práctica en WHERE, le animo a que se inscriba en el curso completo.

Práctica de SQL WHERE con Valores Numéricos

Los ejercicios de esta sección provienen del curso Ejercicio de SQL: Universidad. Aquí está el diagrama de la base de datos de la universidad usada en los siguientes ejercicios:

Esto es demasiado corto para ser su propio encabezado H2. Te recomiendo que lo añadas a la Cláusula WHERE Esenciales H2 si no quieres que forme parte del encabezado Ejercicios Numéricos H2.

Ejercicios prácticos de SQL WHERE para principiantes

Ejercicio 1: Mostrar información de un profesor específico

Pregunta: Mostrar todos los datos del profesor cuyo ID es igual a 8.

Solución:

SELECT *
FROM lecturer
WHERE id = 8;

Explicación: Como queremos mostrar todos los datos de este profesor, seleccionamos todas las columnas de la tabla. lecturer tabla. Esto se hace con SELECT * FROM lecturer.

Estamos interesados en los datos del profesor con ID 8. Por lo tanto, lo especificamos como condición en la cláusula WHERE: id = 8.

Ejercicio 2: Seleccionar alumnos con una puntuación de 95 o superior

Pregunta: Mostrar el ID del alumno, la calificación final y la letra de la calificación para cada matriculación en un curso en el que la calificación final del alumno haya sido 95 o superior.

Solución:

SELECT
  student_id,
  final_grade,
  course_letter_grade
FROM course_enrollment
WHERE final_grade >= 95;

Explicación: Aquí queremos mostrar el ID del estudiante, la calificación final y la calificación de la letra para cada inscripción del curso. Por lo tanto, seleccionamos sólo estas columnas de la tabla course_enrollment tabla.

Queremos mostrar sólo aquellas filas de datos en las que la calificación final sea igual o superior a 95. Para lograrlo, definimos una condición en la cláusula WHERE como final_grade >= 95.

Ejercicio 3: Seleccionar Todos los Estudiantes Excepto Uno

Pregunta: Mostrar todos los datos de los alumnos con un ID distinto de 1.

Solución:

SELECT *
FROM student
WHERE id != 1;

Explicación: De nuevo queremos seleccionar todos los datos de la student por lo que utilizamos el signo asterisco (*) que representa todas las columnas disponibles.

Como queremos mostrar los datos de todos los alumnos excepto el que tiene el ID de 1, definimos una condición en la cláusula WHERE para que el ID no sea igual a 1: id != 1.

Ejercicio 4: Listar todos los cursos de menos de 3 ECTS

Pregunta: Mostrar todos los cursos con menos de 3 puntos ECTS. Muestre dos columnas: title y ects_points.

Solución:

SELECT
  title,
  ects_points
FROM course
WHERE ects_points < 3;

Explicación: Seleccionamos los títulos de los cursos y el valor del curso en puntos ECTS de la course tabla. Para mostrar sólo los cursos con un valor inferior a 3 puntos ECTS, definimos la condición de la cláusula WHERE como ects_points < 3.

Ejercicios SQL WHERE con Valores de Texto

Los ejercicios de esta sección provienen del curso Ejercicio de SQL: Store. Este es el diagrama de la base de datos de la tienda :

Ejercicios prácticos de SQL WHERE para principiantes

Ejercicio 5: Encontrar una Descripción de Categoría de Producto

Pregunta: Encuentre la descripción para la categoría con el nombre 'Alcohol'.

Solución:

SELECT description
FROM category
WHERE name = 'Alcohol';

Explicación: Queremos mostrar una descripción de una categoría de producto, así que seleccionamos la columna description de la category tabla. Como estamos interesados en la descripción de la categoría alcohol, definimos la condición en la cláusula WHERE como name = 'Alcohol'.

Tenga en cuenta que las cadenas literales ("Alcohol") deben ir entre comillas simples (') en SQL.

Ejercicio 6: Listar Todos los Clientes Cuyo Email Coincida con el Patrón

Pregunta: Mostrar todos los datos de los clientes cuyos correos electrónicos terminen en '.com'.

Solución:

SELECT *
FROM customer
WHERE contact_email LIKE '%.com';

Explicación: Aquí seleccionamos todos los clientes de la customer tabla.

Queremos listar sólo los clientes cuya dirección de correo electrónico termine en '.com'. Para ello, vamos a utilizar la concordancia de patrones. En la cláusula WHERE, definimos una condición como contact_email LIKE '%.com'. En la concordancia de patrones SQL, el signo % representa cualquier secuencia de caracteres.

El operador LIKE se utiliza para comparar su operando izquierdo (normalmente el valor de la columna) con su operando derecho (el patrón a comparar). Si el valor coincide con el patrón, la condición pasa; en caso contrario, falla.

Puede obtener más información sobre cómo utilizar LIKE en SQL aquí.

Ejercicio 7: Buscar Empleados Cuyo Apellido Coincida con el Patrón

Pregunta: No recuerda exactamente el apellido del empleado. ¿Era Mixer, Fixer, Bixer u otro? Mostrar los datos de todos los empleados cuyo apellido empiece por una letra y vaya seguido de "ixer".

Solución:

SELECT *
FROM employee
WHERE last_name LIKE '_ixer';

Explicación: Seleccionamos todas las columnas de la employee tabla.

Como queremos encontrar los empleados cuyo apellido termine con 'ixer', volvemos a utilizar la concordancia de patrones. En la cláusula WHERE, definimos la condición como last_name LIKE '_ixer'. El signo _ representa un carácter.

Ejercicio 8: Listar Todos los Productos Cuyo Nombre Contiene un Guión

Pregunta: Mostrar todos los datos de los productos cuyo nombre contiene un guión (-).

Solución:

SELECT *
FROM product
WHERE product_name LIKE '%-%';

Explicación: Seleccionamos todas las columnas de la product tabla. En la cláusula WHERE, definimos la condición como product_name LIKE '%-%'. El signo % representa cualquier secuencia o número de caracteres.

Ejercicios prácticos WHERE con valores booleanos

Los ejercicios de esta sección provienen del curso Ejercicio de SQL: Universidad. Este es el diagrama de la base de datos de la universidad:

Ejercicios prácticos de SQL WHERE para principiantes

Ejercicio 9: Listar todos los cursos que terminan con un examen final

Pregunta: Mostrar todos los datos de los cursos que tienen examen final (columna has_exam). Observe que la columna ha_examen almacena valores booleanos (true o false).

Solución:

SELECT *
FROM course
WHERE has_exam IS TRUE;

Explicación: Seleccionamos todas las columnas de la course tabla.

Como queremos listar sólo los cursos que terminan con un examen final, definimos la condición WHERE como has_exam IS TRUE.

Ejercicio 10: Listar todos los cursos que no tienen proyecto final

Pregunta: Muestre todos los datos de los cursos que no tienen proyecto final (columna has_project). Observe que la columna has_project almacena valores booleanos (true o false).

Solución:

SELECT *
FROM course
WHERE has_project IS FALSE;

Explicación: De nuevo seleccionamos todas las columnas de la course tabla. Esta vez, queremos listar todos los cursos que no tienen proyecto final. Definimos la condición de la cláusula WHERE como has_project IS FALSE.

Ejercicio 11: Seleccionar Todos los Estudiantes que Aprobaron sus Finales

Pregunta: Muestre los ID de todos los alumnos que han aprobado el examen final. Incluya la columna passed en sus resultados. Tenga en cuenta que la columna aprobado almacena valores booleanos (true o false).

Solución:

SELECT
  student_id,
  passed
FROM course_enrollment
WHERE passed IS TRUE;

Explicación: Aquí queremos mostrar la columna que contiene los IDs de los estudiantes y la columna que contiene información sobre si el estudiante aprobó sus exámenes finales. Seleccionamos estas columnas de la tabla course_enrollment de la tabla.

En la cláusula WHERE, definimos la condición passed IS TRUE para filtrar sólo aquellos estudiantes que aprobaron sus finales.

Ejercicio 12: Seleccionar Estudiantes que Reprobaron sus Finales

Pregunta: Mostrar los IDs y las notas finales de todos los alumnos que suspendieron su examen final. Recuerde que la columna passed almacena valores booleanos (true o false).

Solución:

SELECT
  student_id,
  final_grade
FROM course_enrollment
WHERE passed IS FALSE;

Explicación: Aquí queremos mostrar las columnas que contienen los IDs de los estudiantes y la nota final. Seleccionamos estas columnas de la tabla course_enrollment de la tabla. En la cláusula WHERE, definimos la condición pasada IS FALSE para filtrar sólo aquellos estudiantes que reprobaron sus finales.

Práctica WHERE con valores NULL

Los ejercicios de esta sección provienen del curso Ejercicio de SQL: Store. Este es el diagrama de la base de datos de la tienda:

Ejercicios prácticos de SQL WHERE para principiantes

Ejercicio 13: Seleccionar Categorías sin Descripciones

Pregunta: Mostrar todas las categorías que no tienen descripción.

Solución:

SELECT *
FROM category
WHERE description IS NULL;

Explicación: Seleccionamos todas las columnas de la tabla category que almacena las categorías de productos.

Como queremos listar sólo las categorías que no tienen ninguna descripción, debemos proporcionar la condición WHERE description IS NULL ; NULL significa que no hay ningún valor en esa columna.

Puede que se pregunte por qué utilizamos IS NULL en lugar de = NULL. Es porque NULL significa que no hay valor; no podemos comprobar si el valor es igual a NULL porque no hay ningún valor que podamos comparar. IS NULL nos permite comprobar si existe (o no) un valor.

Ejercicio 14: Buscar todos los clientes de una empresa

Pregunta: Mostrar todos los datos de los clientes cuyo nombre de empresa no sea NULL.

Solución:

SELECT *
FROM customer
WHERE company_name IS NOT NULL;

Explicación: Seleccionamos todas las columnas de la customer tabla. Como queremos listar todos los clientes que están asociados a una empresa, definimos la condición de la cláusula WHERE como company_name IS NOT NULL. Esto es bastante autoexplicativo, ya que es lo que diríamos en lenguaje llano.

Ejercicio 15: Buscar compras con dirección desconocida

Pregunta: Mostrar el ID de compra, el ID de cliente y el ID de empleado para las compras con una dirección de envío desconocida.

Solución:

SELECT
  purchase_id,
  customer_id,
  employee_id
FROM purchase
WHERE ship_address IS NULL;

Explicación: Queremos mostrar el ID de compra, el ID de cliente y el ID de empleado, por lo que seleccionamos estas columnas de la tabla purchase tabla.

A continuación, queremos listar sólo las compras con una dirección de envío desconocida, lo que equivale a que el valor sea NULL. Así que la condición de la cláusula WHERE es ship_address IS NULL.

Ejercicio 16: Listar Todas las Categorías Padre

Pregunta: Mostrar los nombres de todas las categorías padre, que son categorías que no tienen ninguna categoría padre.

Solución:

SELECT name
FROM category
WHERE parent_category_id IS NULL;

Explicación: Queremos mostrar los nombres de las categorías, así que seleccionamos la columna nombre de la tabla de categorías.

Para seleccionar sólo las categorías superiores, definimos la condición WHERE como parent_category_id IS NULL. Esto sigue la instrucción de que las categorías padre son aquellas que no tienen asignada una categoría padre.

Uso de WHERE con Múltiples Condiciones de Filtrado

Los ejercicios de esta sección provienen del curso Ejercicio de SQL: Blog. Aquí está el diagrama de la base de datos:

Ejercicios prácticos de SQL WHERE para principiantes

Ejercicio 17: Seleccionar todos los artículos de marzo de 2020

Pregunta: Mostrar las URLs y los títulos de todos los artículos (las columnas url y title ) cuya fecha de publicación sea en Marzo de 2020.

Solución:

SELECT
  url,
  title
FROM article
WHERE publication_date >= '2020-03-01' 
AND publication_date < '2020-04-01';

Explicación: Queremos mostrar las URLs y los títulos de los artículos, por lo que seleccionamos las columnas correspondientes de la article tabla.

Como sólo nos interesan los artículos de marzo de 2020, definimos la condición de la cláusula WHERE para asegurarnos de que todos los artículos seleccionados se publicaron el 1 de marzo de 2020t o después y antes del 1 de abril de 2020. Utilizamos el operador lógico AND para unir estas condiciones: publication_date >= '2020-03-01' AND publication_date < '2020-04-01'.

Las fechas suelen almacenarse en tipos de datos especiales como DATE, DATETIME, o TIMESTAMP. Para comparar una columna de fecha con un valor de fecha específico, utilizamos operadores de comparación estándar como =, <, >, <=, >=, o BETWEEN. El formato de fecha en SQL suele ser YYYY-MM-DD, que significa año, mes y día. Los valores de las partes de fecha se separan mediante guiones.

Tenga en cuenta que debe encerrar los literales de comparación de fecha entre comillas simples (publication_date >= '2020-03-01').

Ejercicio 18: Buscar el Tráfico de Junio a un Artículo Dado

Pregunta: Encuentre la información de tráfico del artículo '/blog/puppy-training-techniques/' en Junio de 2020. Muestre el visit_date y el número de vistas en ese día.

Solución:

SELECT 
  visit_date,
  views
FROM article_traffic
WHERE url = '/blog/puppy-training-techniques/'
AND visit_date >= '2020-06-01' 
AND visit_date < '2020-07-01';

Explicación: Seleccionamos la fecha de la visita y el número de vistas por día de la article_traffic tabla.

Queremos mostrar el tráfico de un artículo concreto. Por lo tanto, filtramos este artículo utilizando su URL: url = '/blog/puppy-training-techniques/'. Observe las comillas simples alrededor del valor de comparación.

Como nos interesa el tráfico de junio de 2020, imponemos otras dos condiciones WHERE en la columna visit_date. Esto nos devolverá únicamente información sobre el tráfico de junio: visit_date >= '2020-06-01' AND visit_date < '2020-07-01'.

Esta vez, la cláusula WHERE consta de tres condiciones, todas ellas combinadas mediante operadores lógicos AND.

Ejercicio 19: Listar artículos para un autor y una categoría

Pregunta: Obtener la URL de todos los artículos de Lewis Goodwin (ID de autor = 16) de la categoría 3 ("Salud canina") o de la categoría 6 ("Ideas para regalar a perros").

Solución:

SELECT url
FROM article
WHERE author_id = 16
AND (article_category_id = 3 OR article_category_id = 6);

Explicación: Queremos mostrar la URL de artículos específicos de la tabla article tabla.

En primer lugar, queremos listar los artículos escritos por el autor con un ID de 16. Esta es la primera condición de la cláusula WHERE: author_id = 16.

También queremos listar sólo los artículos de la categoría 3 o de la categoría 6. Tenemos que crear una condición compuesta con el operador lógico OR y encerrarla entre paréntesis: (article_category_id = 3 OR article_category_id = 6).

Finalmente, combinamos estas dos condiciones con el operador lógico AND.

Ejercicio 20: Mostrar datos de tráfico de artículos específicos

Pregunta: Devolver todos los datos de tráfico de artículos a 1 de diciembre de 2020 en los que el número de visualizaciones esté comprendido entre 50 y 100, ambos inclusive (es decir, 50 <= visualizaciones <= 100).

Solución:

SELECT *
FROM article_traffic
WHERE views <= 100
AND views >= 50
AND visit_date = '2020-12-01';

Explicación: Seleccionamos todas las columnas de la article_traffic tabla.

Queremos ver los datos de tráfico de los artículos con entre 50 y 100 vistas, por lo que definimos la condición combinada de la cláusula WHERE como views <= 100 AND views >= 50.

Como nos interesan los datos a partir del 1 de diciembre de 2020, definimos otra condición de cláusula WHERE: visit_date = '2020-12-01'.

Consulta con SQL WHERE ¡Práctica!

Este artículo presentó todos los fundamentos de la cláusula SQL WHERE. Los ejercicios prácticos cubrieron el filtrado de valores numéricos, de texto, booleanos y NULL, y la combinación de múltiples condiciones para opciones de filtrado más complejas. Puedes encontrar más artículos con ejercicios prácticos de SQL aquí.

Todos estos cursos están disponibles en nuestra pistaEjercicio de SQL , donde encontrará aún más práctica de SQL. Para la opción de práctica definitiva, nuestro Paquete SQLTodo, para siempre le da acceso de por vida a todos nuestros cursos actuales y futuros con una sola compra.

¡La práctica hace al maestro! ¡Feliz viaje SQL!