20th Aug 2024 Lectura de 14 minutos 20 Ejercicios Prácticos de SQL WHERE para Principiantes Martyna Sławińska WHERE ejercicio online Índice Fundamentos de la Cláusula WHERE de SQL Práctica de SQL WHERE con Valores Numéricos Ejercicio 1: Mostrar información de un profesor específico Ejercicio 2: Seleccionar alumnos con una puntuación de 95 o superior Ejercicio 3: Seleccionar Todos los Estudiantes Excepto Uno Ejercicio 4: Listar todos los cursos de menos de 3 ECTS Ejercicios SQL WHERE con Valores de Texto Ejercicio 5: Encontrar una Descripción de Categoría de Producto Ejercicio 6: Listar Todos los Clientes Cuyo Email Coincida con el Patrón Ejercicio 7: Buscar Empleados Cuyo Apellido Coincida con el Patrón Ejercicio 8: Listar Todos los Productos Cuyo Nombre Contiene un Guión Ejercicios prácticos WHERE con valores booleanos Ejercicio 9: Listar todos los cursos que terminan con un examen final Ejercicio 10: Listar todos los cursos que no tienen proyecto final Ejercicio 11: Seleccionar Todos los Estudiantes que Aprobaron sus Finales Ejercicio 12: Seleccionar Estudiantes que Reprobaron sus Finales Práctica WHERE con valores NULL Ejercicio 13: Seleccionar Categorías sin Descripciones Ejercicio 14: Buscar todos los clientes de una empresa Ejercicio 15: Buscar compras con dirección desconocida Ejercicio 16: Listar Todas las Categorías Padre Uso de WHERE con Múltiples Condiciones de Filtrado Ejercicio 17: Seleccionar todos los artículos de marzo de 2020 Ejercicio 18: Buscar el Tráfico de Junio a un Artículo Dado Ejercicio 19: Listar artículos para un autor y una categoría Ejercicio 20: Mostrar datos de tráfico de artículos específicos Consulta con SQL WHERE ¡Práctica! 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: Ejercicio de SQL: Universidad Ejercicio de SQL: Tienda Ejercicio de SQL: Blog 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. 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 : 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: 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: 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: 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í. Ejercicio de SQL: Universidad Ejercicio de SQL: Tienda Ejercicio de SQL: Blog 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! Tags: WHERE ejercicio online