Ir al contenido principal

Introducción a la cláusula WHERE en SQL

En este tutorial, aprenderás a filtrar filas en SQL usando la cláusula WHERE.
Actualizado 17 sept 2026  · 7 min leer

Explorar con IA

ChatGPTClaudePerplexity

Filtrar filas de una tabla según una condición (o varias) es una práctica muy habitual en análisis de datos. En SQL, puedes hacerlo con la cláusula where. En este tutorial, la usarás en distintos escenarios.

Utilizarás PostgreSQL como SGBD (sistema de gestión de bases de datos relacional), aunque la sintaxis apenas cambia al usar otros sistemas. Empezarás configurando una base de datos PostgreSQL y creando manualmente una tabla con datos de países. Una vez lista, ejecutarás varias consultas de filtrado con la cláusula WHERE.

Nota: Para seguir el tutorial, deberías conocer los fundamentos de SQL y PostgreSQL. Si no es tu caso, estos recursos pueden ayudarte:

Crear una tabla en PostgreSQL

Para seguir este tutorial, necesitas crear una tabla en PostgreSQL con información sobre países de todo el mundo. Usaremos esta tabla para mostrar cómo funciona la cláusula WHERE en diferentes casos.

Paso 1: crea una base de datos nueva

Abre pgAdmin (o tu interfaz de SQL preferida) y crea una nueva base de datos de PostgreSQL. Puedes llamarla, por ejemplo, world_data o como prefieras.

Paso 2: crea y rellena la tabla

Cuando la base de datos esté lista, abre una ventana de editor de consultas y ejecuta el siguiente código SQL. Creará una tabla llamada countries e insertará un conjunto de registros que cubren varios continentes, años de independencia y regiones:

-- Create the countries tableCREATE TABLE countries (    code VARCHAR(3) PRIMARY KEY,    name VARCHAR(100),    continent VARCHAR(50),    region VARCHAR(100),    surface_area NUMERIC,    indep_year INTEGER,    local_name VARCHAR(100),    gov_form VARCHAR(100),    capital VARCHAR(100),    cap_long NUMERIC,    cap_lat NUMERIC);-- Insert sample data into the countries tableINSERT INTO countries (code, name, continent, region, surface_area, indep_year, local_name, gov_form, capital, cap_long, cap_lat)VALUES('IND', 'India', 'Asia', 'Southern Asia', 3287263, 1947, 'Bharat', 'Federal Republic', 'New Delhi', 77.2090, 28.6139),('PAK', 'Pakistan', 'Asia', 'Southern Asia', 881912, 1947, 'Pakistan', 'Federal Republic', 'Islamabad', 73.0551, 33.6844),('CHN', 'China', 'Asia', 'Eastern Asia', 9596961, NULL, 'Zhongguo', 'People''s Republic', 'Beijing', 116.4074, 39.9042),('VNM', 'Vietnam', 'Asia', 'South-Eastern Asia', 331212, 1945, 'Việt Nam', 'Socialist Republic', 'Hanoi', 105.8544, 21.0285),('JPN', 'Japan', 'Asia', 'Eastern Asia', 377975, NULL, 'Nippon', 'Constitutional Monarchy', 'Tokyo', 139.6917, 35.6895),('DEU', 'Germany', 'Europe', 'Western Europe', 357386, 1955, 'Deutschland', 'Federal Republic', 'Berlin', 13.4050, 52.5200),('FRA', 'France', 'Europe', 'Western Europe', 551695, 843, 'France', 'Republic', 'Paris', 2.3522, 48.8566),('RUS', 'Russia', 'Europe', 'Eastern Europe', 17098242, 1991, 'Rossiya', 'Federation', 'Moscow', 37.6173, 55.7558),('UKR', 'Ukraine', 'Europe', 'Eastern Europe', 603500, 1991, 'Ukrayina', 'Republic', 'Kyiv', 30.5234, 50.4501),('EGY', 'Egypt', 'Africa', 'Northern Africa', 1002450, 1922, 'Misr', 'Republic', 'Cairo', 31.2357, 30.0444),('NGA', 'Nigeria', 'Africa', 'Western Africa', 923768, 1960, 'Nigeria', 'Federal Republic', 'Abuja', 7.4951, 9.0578),('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', 7682300, 1901, 'Australia', 'Federal Parliamentary Democracy', 'Canberra', 149.1245, -35.3075),('USA', 'United States', 'North America', 'North America', 9833517, 1776, 'United States', 'Federal Republic', 'Washington, D.C.', -77.0369, 38.9072),('CAN', 'Canada', 'North America', 'North America', 9984670, 1867, 'Canada', 'Constitutional Monarchy', 'Ottawa', -75.6972, 45.4215),('BRA', 'Brazil', 'South America', 'South America', 8515767, 1822, 'Brasil', 'Federal Republic', 'Brasília', -47.9292, -15.7801),('ARG', 'Argentina', 'South America', 'South America', 2780400, 1816, 'Argentina', 'Federal Republic', 'Buenos Aires', -58.3816, -34.6037);

La tabla incluye distinta información sobre unos 16 países de todo el mundo. Contiene las siguientes columnas:

  • code, clave primaria de la tabla, que indica el código universal del país

  • name, el nombre del país

  • continent, el continente al que pertenece

  • region, la zona geográfica donde se ubica

  • surface_area, la superficie del país

  • indep_year, el año en que obtuvo su independencia

  • local_name, el nombre local

  • gov_form, el tipo de gobierno vigente

  • capital, su capital

  • cap_long, la longitud de la capital

  • cap_lat, la latitud de la capital

Ahora sí, empecemos a filtrar registros con la cláusula WHERE.

Uso de la cláusula WHERE de SQL

En SQL, la cláusula WHERE te permite filtrar registros según valores tanto textuales como numéricos. Puedes compararlos con las siguientes operaciones de comparación:

  • = igual

  • <> y != distinto

  • < menor que

  • > mayor que

  • <= menor o igual que

  • >= mayor o igual que

Según el estándar SQL, se recomienda usar <> en lugar de !=.

Vamos a obtener ahora el registro del país cuyo code es AUS. La columna a comparar es code y el valor, AUS. La consulta sería:

SELECT * FROM countries WHERE code = 'AUS';

Y obtienes:

Fíjate en un par de detalles:

  • La cláusula WHERE siempre va después de FROM.

  • En SQL, las cadenas de texto se escriben entre comillas simples.

Veamos ahora una comparación numérica. Recuperemos los países que obtuvieron su independencia (indep_year) después de 1901:

SELECT * FROM countries WHERE indep_year > 1901;

Obtendrás los registros de un total de 3 países que lograron su independencia después de 1901. Ten en cuenta el comparador utilizado. La columna indep_year es de tipo entero. Por tanto, no se usan comillas en la comparación.

Puedes combinar varias condiciones en una cláusula WHERE con los conectores AND y OR. La siguiente consulta devuelve los países where continent = 'Asia' and indep_year > 1900:

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901;

Obtienes información de tres países situados en el continente de Asia que lograron su independencia después de 1901. Observa que en la consulta anterior comparaste valores textuales y numéricos. Como ejercicio, prueba distintas combinaciones de AND y OR en la cláusula WHERE.

Nota: Cuando combines AND y OR, no olvides encerrar cada condición entre paréntesis. De lo contrario, SQL puede interpretar mal la precedencia de evaluación.

Con la siguiente consulta, obtienes un total de seis países.

SELECT * FROM countries WHERE(continent = 'Europe' AND indep_year > 1900)or(continent = 'Asia' AND indep_year > 1900);

También puedes encadenar más de dos condiciones en una cláusula WHERE:

SELECT * FROM countries WHERE continent = 'Asia' OR indep_year > 1900 OR surface_area > 652090;

Aquí obtienes un total de 15 países que están en Asia, o bien lograron su independencia después de 1901, o bien tienen una superficie mayor que 652090.

Convirtamos ahora la consulta en una variante con AND, que es más restrictiva:

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901 AND surface_area > 652090;

En este caso obtendrás dos países.

También puedes utilizar subconsultas en una cláusula WHERE. Imagina que quieres recuperar el país con la mayor superficie, pero no conoces el valor máximo. En situaciones así, la siguiente consulta te saca del apuro:

SELECT * FROM countries WHERE surface_area in (SELECT MAX(surface_area) FROM countries);

Deberías obtener el registro de Russia.

Conclusión

¡Enhorabuena! Has completado este tutorial. Filtrar resultados de consulta según condiciones es una habilidad clave, y aquí has visto una introducción práctica. Si quieres llevar aún más lejos tus habilidades de SQL, echa un vistazo a nuestros cursos (enlace abajo).

Certifícate en SQL

Demuestra que tus conocimientos de SQL están preparados para el trabajo con una certificación.
Impulsar Mi Carrera

Sayak Paul's photo
Author
Sayak Paul

Sayak trabaja en Hugging Face, donde codifica, escribe y habla. Su tiempo lo dedica principalmente a todo lo relacionado con la biblioteca de los Difusores. También es instructor de proyectos DataCamp y autor de muchos tutoriales DataCamp. Fuera del trabajo, le verás viendo Suits en Netflix por enésima vez. 

SQL: preguntas frecuentes sobre la cláusula WHERE

¿Puedo usar columnas de texto y numéricas en una cláusula WHERE?

Sí, puedes filtrar tanto por texto (p. ej., 'Asia') como por valores numéricos (p. ej., > 1901). Solo recuerda que los valores de texto deben ir entre comillas simples.

¿Hay diferencia entre <> y != en SQL?

Ambos significan "distinto", pero <> es el operador estándar de SQL. Algunas bases de datos también admiten !=, pero es mejor usar <> por compatibilidad.

¿Cómo filtro registros con valores NULL?

Usa IS NULL o IS NOT NULL. Por ejemplo:

SELECT * FROM countries WHERE indep_year IS NULL;

¿Puedo usar subconsultas en una cláusula WHERE?

Sí, puedes usar subconsultas para comparar una columna con el resultado de otra consulta. Por ejemplo:

SELECT * FROM countries WHERE surface_area = (SELECT MAX(surface_area) FROM countries);

¿La cláusula WHERE va antes o después de FROM?

La cláusula WHERE siempre va después de FROM y antes de cláusulas como GROUP BY u ORDER BY.

¿Puedo usar WHERE con JOINs?

Por supuesto. Puedes aplicar la cláusula WHERE después de realizar un JOIN para filtrar el conjunto de resultados combinado.

Temas
Análisis de datos
Ciencia de datos
SQL

Cursos de SQL

Curso

Mejorar el rendimiento de consultas en PostgreSQL

4 h
14K
Aprende a estructurar tus consultas PostgreSQL para que se ejecuten en una fracción del tiempo.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

Cómo utilizar GROUP BY y HAVING en SQL

Una guía intuitiva para descubrir los dos comandos SQL más populares para agregar filas de tu conjunto de datos
Eugenia Anello's photo

Eugenia Anello

6 min

Tutorial

FUNCIÓN SQL COUNT()

COUNT() te permite contar el número de filas que cumplen determinadas condiciones. Aprende a utilizarlo en este tutorial.
Travis Tang 's photo

Travis Tang

3 min

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Tutorial de comparación de patrones SQL LIKE

Utiliza LIKE para filtrar registros SQL según coincidencias de cadenas específicas. Este tutorial te enseña a utilizar comodines, NOT, LOWER, UPPER y CASE WHEN con LIKE.
Travis Tang 's photo

Travis Tang

8 min

Tutorial

CALIFICAR: La sentencia de filtrado SQL que nunca supo que necesitaba

Conozca la cláusula SQL QUALIFY, un método de filtrado esencial aunque poco conocido en SQL. Comprender su sintaxis, usos y en qué se diferencia de otros métodos de filtrado SQL.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

Ver MásVer Más