Saltar al contenido
Apuntes SQL Conquer Blocks
Teoría Clase 03b Tema 03

Consultas y filtros básicos — Parte 1

La regla de oro del orden de comandos en SQL: SELECT → FROM → WHERE → ORDER BY → LIMIT. Operadores de comparación, lógicos (AND, OR, NOT) y el alias AS para renombrar columnas y mostrar columnas calculadas.

#SELECT#WHERE#ORDER BY#LIMIT#AS
§ 01

Resumen rápido

La regla de oro del orden de comandos en SQL: SELECT → FROM → WHERE → ORDER BY → LIMIT. Operadores de comparación, lógicos (AND, OR, NOT) y el alias AS para renombrar columnas y mostrar columnas calculadas.

§ 02

Conceptos clave

SELECT

Comando para consultar datos. Se especifican las columnas que se quieren ver. SELECT * devuelve todas las columnas.

FROM

Indica de qué tabla vienen los datos. Siempre va inmediatamente después de SELECT. Sin FROM no hay consulta.

WHERE

Filtra las filas según una condición. Solo devuelve las filas que cumplen el criterio especificado.

Operadores de comparación

Signos que se usan en la condición de WHERE: = (igual), > (mayor), < (menor), >= (mayor o igual), <= (menor o igual), <> o != (distinto).

AND

Operador lógico que exige que TODAS las condiciones sean verdaderas. Si una sola es falsa, la fila no se incluye en el resultado.

OR

Operador lógico que incluye la fila si AL MENOS UNA condición es verdadera. Solo descarta la fila si todas las condiciones son falsas.

NOT

Operador lógico que invierte el resultado de una condición. NOT (condición verdadera) = falso.

ORDER BY

Ordena el resultado por una o varias columnas. ASC (ascendente, valor por defecto) o DESC (descendente). Puede combinarse con varias columnas separadas por coma.

LIMIT

Restringe el número de filas devueltas. LIMIT 10 devuelve solo las 10 primeras filas del resultado. Va siempre al final de la consulta.

AS (alias)

Renombra una columna en el resultado de la consulta. No modifica la tabla, solo cambia la etiqueta que aparece en la cabecera del resultado. Útil para columnas calculadas o con nombres poco descriptivos.

§ 03

Contenido de la clase

La regla de oro: el orden de los comandos

SQL se parece al lenguaje natural en inglés —se puede leer casi como una frase— pero tiene un orden estricto que no puede alterarse. Mezclar los comandos en otro orden produce un error de sintaxis, aunque la lógica de lo que se quiere hacer sea correcta.

  1. SELECT — qué columnas quiero ver.
  2. FROM — de qué tabla saco los datos.
  3. WHERE — qué condición deben cumplir las filas (opcional).
  4. ORDER BY — en qué orden quiero los resultados (opcional).
  5. LIMIT — cuántas filas como máximo quiero ver (opcional).

Una forma de recordarlo: "Selecciona [qué] de [dónde], donde [condición], ordénalo por [columna] y dame solo [n] resultados." Ese es exactamente el orden que SQL espera.

SELECT: elegir qué columnas mostrar

SELECT puede recibir una lista de columnas separadas por coma, o el comodín * para todas. Usar * está bien cuando se explora una tabla nueva y no se saben los nombres exactos de las columnas, pero en consultas de producción conviene especificar solo las columnas necesarias.

  • SELECT nombre, email — solo esas dos columnas.
  • SELECT * — todas las columnas de la tabla.
  • SELECT nombre, precio * 1.21 — columna calculada (precio con IVA).

Cuantas más columnas se piden, más datos tiene que mover el servidor. En tablas con muchas columnas o millones de filas, seleccionar solo lo necesario tiene un impacto real en el rendimiento.

WHERE y los operadores de comparación

WHERE filtra las filas antes de devolverlas. Detrás del WHERE va una condición que puede ser una comparación simple o una combinación de varias.

OperadorSignificadoEjemplo
=Igual aWHERE continent = 'Europe'
<>/ !=Distinto deWHERE continent <> 'Asia'
>Mayor queWHERE population > 1000000
<Menor queWHERE population < 500
>=Mayor o igual queWHERE indepyear >= 1900
<=Menor o igual queWHERE gnp <= 100

Operadores lógicos: AND, OR, NOT

Los operadores lógicos permiten combinar varias condiciones en un mismo WHERE. La clave es entender cuándo una combinación es verdadera.

OperadorCuándo devuelve verdaderoEjemplo
ANDTodas las condiciones son verdaderascontinent = 'Asia' AND population > 10000000
ORAl menos una condición es verdaderacontinent = 'Asia' OR continent = 'Africa'
NOTLa condición es falsa (invierte el resultado)NOT continent = 'Antarctica'

AND es más restrictivo: reduce el número de resultados porque hay que cumplir todo. OR es más permisivo: amplía el resultado porque basta con cumplir algo. Pueden combinarse entre sí usando paréntesis para controlar la precedencia.

ORDER BY: ordenar los resultados

Sin ORDER BY, MySQL devuelve las filas en el orden en que las tiene almacenadas internamente, que puede variar entre ejecuciones. Si el orden importa, hay que especificarlo explícitamente.

  • ORDER BY nombre ASC — alfabético de la A a la Z. ASC es el valor por defecto y puede omitirse.
  • ORDER BY population DESC — del mayor al menor.
  • ORDER BY continent ASC, population DESC — primero ordena por continente; dentro del mismo continente, por población de mayor a menor.

El ordenamiento múltiple por varias columnas es especialmente útil cuando la primera columna tiene muchos empates y se necesita un criterio de desempate.

LIMIT: recortar el número de resultados

LIMIT va al final de la consulta y actúa sobre el resultado ya filtrado y ordenado. Si la consulta devuelve 4.000 filas y se añade LIMIT 10, solo se verán las 10 primeras de esas 4.000.

Es imprescindible combinarlo con ORDER BY cuando se quiere un resultado significativo. LIMIT 10 sin ORDER BY devuelve 10 filas arbitrarias. LIMIT 10 con ORDER BY population DESC devuelve los 10 países más poblados.

AS: renombrar columnas con alias

AS asigna un nombre alternativo a una columna en el resultado. No modifica la tabla: solo cambia la etiqueta que aparece en la cabecera de la columna cuando se muestra el resultado.

  • Útil cuando el nombre de la columna en la tabla es poco descriptivo (col_a, x1…).
  • Imprescindible con columnas calculadas, que no tienen nombre propio.
  • Permite mostrar los resultados en el idioma del usuario final sin tocar la estructura de la base de datos.
§ 04

Código y ejemplos

SELECT básico: columnas concretas y todas las columnas

SQL
USE world;

-- Seleccionar dos columnas específicas
SELECT Name, Continent
FROM Country;

-- Seleccionar todas las columnas (útil para explorar)
SELECT *
FROM Country;

WHERE con operadores de comparación

SQL
-- Países del continente europeo
SELECT Name, Population
FROM Country
WHERE Continent = 'Europe';

-- Países con más de 100 millones de habitantes
SELECT Name, Population
FROM Country
WHERE Population > 100000000;

-- Países europeos con más de 10 millones de habitantes
SELECT Name, Population
FROM Country
WHERE Continent = 'Europe' AND Population > 10000000;

ORDER BY simple y múltiple

SQL
-- Ciudades en orden alfabético (ASC es el valor por defecto)
SELECT Name
FROM City
ORDER BY Name;

-- Países por población de mayor a menor
SELECT Name, Population
FROM Country
ORDER BY Population DESC;

-- Por continente (A→Z) y dentro de cada continente por población (mayor→menor)
SELECT Name, Continent, Population
FROM Country
ORDER BY Continent ASC, Population DESC;

LIMIT y AS con columnas calculadas

SQL
-- Los 5 primeros países (sin orden especificado, resultado arbitrario)
SELECT Name
FROM Country
LIMIT 5;

-- Los 10 países más poblados
SELECT Name, Population
FROM Country
ORDER BY Population DESC
LIMIT 10;

-- Renombrar columnas y mostrar una calculada
SELECT
  Name       AS 'Nombre del pais',
  Population AS Poblacion,
  GNP / Population AS 'PIB per capita'
FROM Country
WHERE Population > 0;

GNP / Population es una columna calculada: no existe en la tabla, la genera MySQL al vuelo para cada fila. Sin el AS sería difícil saber qué representa esa columna en el resultado.

§ 05

Errores comunes

Escribir los comandos en el orden incorrecto (por ejemplo FROM antes que SELECT, o WHERE antes que FROM). SQL exige el orden SELECT → FROM → WHERE → ORDER BY → LIMIT sin excepciones.
Olvidar las comillas simples alrededor de los valores de texto en WHERE: WHERE Continent = Europe sin comillas devuelve error porque MySQL interpreta Europe como nombre de columna.
Usar = en lugar de <> para "distinto de". WHERE Continent = 'Europe' selecciona Europa; WHERE Continent <> 'Europe' selecciona todo lo demás.
Poner LIMIT antes que ORDER BY. El resultado será correcto numéricamente pero las filas devueltas serán aleatorias, no las del criterio deseado.
Confundir AND con OR: con AND se necesitan cumplir todas las condiciones (más restrictivo); con OR basta una (más permisivo). Un intercambio puede dar resultados completamente distintos.
§ 06

Buenas prácticas

Memorizate el orden SELECT → FROM → WHERE → ORDER BY → LIMIT. Antes de escribir cualquier consulta, piensa en voz alta: "qué quiero ver, de dónde, con qué condición, en qué orden, cuántos resultados".
Especifica solo las columnas que necesitas en SELECT en lugar de usar * siempre. Además de ser más eficiente, te obliga a conocer la estructura de la tabla.
Cuando combines AND y OR, usa paréntesis para hacer explícita la precedencia: WHERE (continent = 'Asia' OR continent = 'Africa') AND population > 50000000.
Combina ORDER BY con LIMIT cuando quieras los N mayores o menores de algo. Sin ORDER BY, LIMIT no tiene significado útil.
Usa alias descriptivos en columnas calculadas para que el resultado sea legible sin contexto adicional.
§ 07

Ejercicios

  1. Selecciona el nombre y el continente de todos los países de la tabla Country.
  2. Selecciona el nombre y la población de los países cuya población sea mayor a 50 millones, ordenados de mayor a menor.
  3. Lista los 10 países más grandes por superficie (columna SurfaceArea) en orden descendente.
  4. Muestra los países cuyo continente sea Asia Y cuya esperanza de vida (LifeExpectancy) sea mayor a 75.
  5. Selecciona el nombre de los países y renombra la columna Population como "Habitantes". Añade una columna calculada GNP / Population renombrada como "PIB per capita".
  6. Lista los 5 países europeos más poblados usando WHERE, ORDER BY y LIMIT en el orden correcto.
§ 08

Checklist final

  • Sé el orden de los comandos: SELECT → FROM → WHERE → ORDER BY → LIMIT.
  • Puedo escribir un SELECT con columnas específicas y entender cuándo usar SELECT *.
  • Sé filtrar con WHERE usando =, >, <, >=, <= y <>.
  • Entiendo la diferencia entre AND (todas las condiciones) y OR (al menos una).
  • Puedo ordenar resultados con ORDER BY ASC y DESC, incluyendo ordenamiento por múltiples columnas.
  • Sé combinar ORDER BY con LIMIT para obtener los N primeros o últimos de un criterio.
  • Puedo renombrar columnas con AS y crear columnas calculadas con operaciones aritméticas.

¿Has terminado la clase?

Márcala como repasada y vuelve cuando quieras revisarla.