CodeGym /Cursos /SQL SELF /Construyendo consultas simples con SELECT, WHERE y ORDER ...

Construyendo consultas simples con SELECT, WHERE y ORDER BY

SQL SELF
Nivel 3 , Lección 2
Disponible

Ahora ha llegado el momento de juntar todo esto y aprender a construir consultas simples pero útiles usando una combinación de SELECT, WHERE y ORDER BY. Esta habilidad te va a servir para un montón de cosas, desde sacar listas de usuarios hasta hacer pequeños informes.

Antes de empezar, vamos a recordar cómo es la estructura de una consulta SQL básica:

SELECT columna1, columna2, columna3
FROM tabla
WHERE condición
ORDER BY columna ASC
LIMIT cantidad_filas
OFFSET cantidad_filas;

Si SQL fuera una novela, SELECT sería el título del capítulo, FROM su contenido, y WHERE la explicación de la trama. ¡Y ORDER BY le da orden para que leer sea más entretenido!

El orden de los operadores es fijo. Puedes omitir algunos si no los necesitas, pero no puedes cambiar el orden.

Ejemplo 1: Seleccionar nombres de estudiantes con notas excelentes

Imagina que tenemos una tabla students con esta estructura y datos:

id name age grade
1 Otto 21 A
2 Maria 22 B
3 Alex 20 A
4 Nat 23 C
5 Dan 25 B

Necesitas sacar la lista de todos los estudiantes con nota excelente (o sea, grade = 'A'), ordenados por nombre. Así lo hacemos:

SELECT name
FROM students
WHERE grade = 'A'
ORDER BY name ASC;

Resultado:

name
Alex
Otto

Explicación:

  1. SELECT name — solo seleccionamos el nombre. No hace falta gastar recursos sacando datos que no vamos a usar.
  2. WHERE grade = 'A' — filtramos solo los que tienen nota excelente.
  3. ORDER BY name ASC — ordenamos los nombres de los estudiantes alfabéticamente.

Ejemplo 2: Buscar productos por precio

Ahora imagina que tenemos una tabla products con info sobre productos:

id product_name category price
1 Smartfon Electronics 30000
2 Televizor Electronics 45000
3 Kholodilnik Appliances 50000
4 Pylesos Appliances 15000
5 Lampochka Lighting 500

La tarea es sacar la lista de productos de la categoría "Electronics", ordenados por precio descendente. La consulta sería así:

SELECT product_name, price
FROM products
WHERE category = 'Electronics'
ORDER BY price DESC;

Resultado:

product_name price
Televizor 45000
Smartfon 30000

Explicación:

  1. SELECT product_name, price — seleccionamos el nombre del producto y su precio.
  2. WHERE category = 'Electronics' — filtramos solo los productos de la categoría "Electronics".
  3. ORDER BY price DESC — ordenamos los resultados de mayor a menor precio (el más caro primero).

Ejemplo 3: Filtros complejos con lógica

Usamos la misma tabla students. Supón que queremos encontrar todos los estudiantes mayores de 21 años que tengan nota B o C, y ordenarlos por edad. Aquí combinamos varias condiciones:

SELECT name, age, grade
FROM students
WHERE age > 21 AND (grade = 'B' OR grade = 'C')
ORDER BY age ASC;

Resultado:

name age grade
Maria 22 B
Nat 23 C
Dan 25 B

Explicación:

  1. WHERE age > 21 — seleccionamos solo estudiantes mayores de 21 años.
  2. AND (grade = 'B' OR grade = 'C') — filtramos los que tienen nota B o C. Los paréntesis agrupan las condiciones.
  3. ORDER BY age ASC — ordenamos el resultado por edad, del más joven al más viejo.

Ejemplo 4: Combinando ordenación y filtrado

Volvemos a la tabla products. Queremos encontrar productos que cuesten menos de 50 000, ordenarlos por categoría, y dentro de cada categoría — por precio (de menor a mayor).

SELECT product_name, category, price
FROM products
WHERE price < 50000
ORDER BY category ASC, price ASC;

Resultado:

product_name category price
Pylesos Appliances 15000
Smartfon Electronics 30000
Televizor Electronics 45000
Lampochka Lighting 500

Explicación:

  1. WHERE price < 50000 — primero filtramos los productos, dejando solo los que cuestan menos de 50 000.
  2. ORDER BY category ASC, price ASC — ordenamos por categoría (alfabéticamente), y dentro de cada categoría por precio ascendente.

Ejemplo 5: Error común — olvidar agrupar condiciones

Ahora veamos qué puede salir mal. ¿Qué pasa si nos olvidamos de poner los paréntesis al usar operadores lógicos?

Consulta incorrecta:

SELECT name, age, grade
FROM students
WHERE age > 21 AND grade = 'B' OR grade = 'C'
ORDER BY age ASC;

Aquí OR grade = 'C' se ejecuta sin tener en cuenta AND age > 21, y la consulta devuelve un resultado incorrecto. Vas a obtener todos los que tienen nota C, aunque sean menores de 21 años.

Por eso, usa siempre paréntesis para que quede claro:

WHERE age > 21 AND (grade = 'B' OR grade = 'C')
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION