Filtrado y Ordenación de Datos en MySQL

MySQLMySQLBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos técnicas esenciales para filtrar y ordenar datos en MySQL. Aprenderás cómo utilizar cláusulas WHERE para filtrar datos según condiciones específicas, ordenar los resultados con ORDER BY y limitar la salida con la cláusula LIMIT. Estas habilidades son fundamentales para cualquier usuario de bases de datos, ya que te permiten recuperar exactamente los datos que necesitas en el orden que deseas. A través de ejercicios prácticos, adquirirás experiencia práctica con estas operaciones cruciales de bases de datos y entenderás cómo consultar y organizar datos de manera efectiva en MySQL.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) sql(("SQL")) -.-> sql/DataManipulationandQueryingGroup(["Data Manipulation and Querying"]) sql(("SQL")) -.-> sql/AdvancedDataOperationsGroup(["Advanced Data Operations"]) sql/BasicSQLCommandsGroup -.-> sql/select("SELECT statements") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") sql/DataManipulationandQueryingGroup -.-> sql/where("WHERE clause") sql/DataManipulationandQueryingGroup -.-> sql/order_by("ORDER BY clause") sql/DataManipulationandQueryingGroup -.-> sql/like("LIKE operator") sql/AdvancedDataOperationsGroup -.-> sql/string_functions("String functions") sql/AdvancedDataOperationsGroup -.-> sql/numeric_functions("Numeric functions") subgraph Lab Skills sql/select -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} mysql/select -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} sql/where -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} sql/order_by -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} sql/like -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} sql/string_functions -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} sql/numeric_functions -.-> lab-418305{{"Filtrado y Ordenación de Datos en MySQL"}} end

Filtrado Básico de Datos con WHERE

En este paso, aprenderemos cómo utilizar la cláusula WHERE para filtrar datos según condiciones específicas. La cláusula WHERE es una de las características más importantes en SQL, ya que te permite recuperar solo los datos que cumplen con tus criterios.

Primero, conectémonos a MySQL y seleccionemos nuestra base de datos:

sudo mysql -u root

Una vez conectados:

USE bookstore;

Operaciones de Comparación Simples

Comencemos con los operadores de comparación básicos:

-- Libros con precio superior a $40
SELECT title, price
FROM books
WHERE price > 40;

Deberías ver una salida como esta:

+-------------------------+-------+
| title                   | price |
+-------------------------+-------+
| The MySQL Guide         | 45.99 |
| Advanced Database Concepts | 54.99 |
| Database Administration | 49.99 |
| The Perfect Index       | 42.99 |
+-------------------------+-------+

Los operadores de comparación comunes incluyen:

  • = (igual a)
  • <> o != (diferente de)
  • > (mayor que)
  • < (menor que)
  • >= (mayor o igual que)
  • <= (menor o igual que)

Probemos otro ejemplo para encontrar libros publicados en un año específico:

SELECT title, author, publication_year
FROM books
WHERE publication_year = 2023;

Uso de AND y OR

Podemos combinar múltiples condiciones utilizando AND y OR:

-- Libros técnicos publicados en 2023
SELECT title, genre, publication_year, price
FROM books
WHERE genre = 'Technical'
AND publication_year = 2023;

Probemos OR para encontrar libros que son muy nuevos o muy caros:

SELECT title, publication_year, price
FROM books
WHERE publication_year = 2023
OR price >= 50;

Trabajando con Valores NULL y Booleanos

Para encontrar libros que están agotados:

SELECT title, price, in_stock
FROM books
WHERE in_stock = FALSE;

Coincidencia de Patrones con LIKE

En este paso, exploraremos la coincidencia de patrones utilizando el operador LIKE, que nos permite buscar patrones en datos de texto. Esto es especialmente útil cuando no conoces el texto exacto que estás buscando.

El operador LIKE utiliza dos caracteres especiales:

  • % representa cero o más caracteres
  • _ representa exactamente un carácter

Probemos algunos ejemplos:

-- Encontrar libros con "SQL" en cualquier parte del título
SELECT title, author
FROM books
WHERE title LIKE '%SQL%';

Esta consulta encuentra cualquier libro donde "SQL" aparezca en cualquier parte del título. Deberías ver una salida como:

+------------------+----------------+
| title            | author         |
+------------------+----------------+
| SQL for Beginners| Sarah Johnson  |
| SQL Mystery Tales| Jennifer White |
+------------------+----------------+

Probemos más coincidencias de patrones:

-- Encontrar libros que empiecen con "The"
SELECT title, author
FROM books
WHERE title LIKE 'The%';
-- Encontrar libros con "Database" en el título
SELECT title, author, price
FROM books
WHERE title LIKE '%Database%';

Ten en cuenta que LIKE no distingue entre mayúsculas y minúsculas en MySQL por defecto. Si necesitas una coincidencia que distinga entre mayúsculas y minúsculas, puedes usar BINARY:

-- Búsqueda que distingue entre mayúsculas y minúsculas
SELECT title, author
FROM books
WHERE title LIKE BINARY 'The%';

Ordenación de Resultados con ORDER BY

En este paso, aprenderemos cómo ordenar los resultados de nuestras consultas utilizando la cláusula ORDER BY. Esto nos permite organizar nuestros datos en un orden significativo, ya sea ascendente (ASC) o descendente (DESC).

Ordenación por una Sola Columna

Comencemos con una ordenación básica por precio:

-- Ordenar libros por precio (ascendente por defecto)
SELECT title, price
FROM books
ORDER BY price;

Verás los libros listados desde el más barato hasta el más caro. Para invertir el orden:

-- Ordenar libros por precio en orden descendente
SELECT title, price
FROM books
ORDER BY price DESC;

La salida mostrará primero los libros más caros:

+---------------------------+-------+
| title                     | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration   | 49.99 |
| The MySQL Guide           | 45.99 |
| The Perfect Index         | 42.99 |
...
+---------------------------+-------+

Ordenación por Múltiples Columnas

Podemos ordenar por múltiples columnas, lo cual es útil cuando la primera columna de ordenación tiene valores duplicados:

-- Ordenar por género y luego por precio dentro de cada género
SELECT title, genre, price
FROM books
ORDER BY genre, price DESC;

Puedes combinar ordenaciones ascendentes y descendentes:

-- Ordenar por género (ascendente) y precio (descendente)
SELECT title, genre, price
FROM books
ORDER BY genre ASC, price DESC;

Limitación de Resultados con LIMIT

En este paso, aprenderemos cómo utilizar la cláusula LIMIT para restringir el número de filas devueltas por una consulta. Esto es especialmente útil cuando se trabaja con conjuntos de datos grandes o cuando solo se necesita ver algunos ejemplos.

Uso Básico de LIMIT

Para ver solo los 3 libros más caros:

SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3;

Solo deberías ver tres filas:

+---------------------------+-------+
| title                     | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration   | 49.99 |
| The MySQL Guide           | 45.99 |
+---------------------------+-------+

Uso de LIMIT con Desplazamiento (Offset)

LIMIT puede tomar dos números: el desplazamiento (cuántas filas omitir) y la cantidad (cuántas filas devolver):

-- Omitir los primeros 3 libros y mostrar los siguientes 3
SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3, 3;

Esto mostrará el 4º, 5º y 6º libros más caros.

Un caso de uso común es la paginación. Por ejemplo, para mostrar la "página 2" con 5 elementos por página:

SELECT title, author, price
FROM books
ORDER BY title
LIMIT 5, 5;

Esto omite los primeros 5 resultados (página 1) y muestra los siguientes 5 (página 2).

Combinando Todo

Vamos a juntar todo lo que hemos aprendido para crear una consulta más compleja:

SELECT title, author, price
FROM books
WHERE genre = 'Technical'
AND price > 30
ORDER BY price DESC
LIMIT 3;

Esta consulta:

  1. Filtra los libros técnicos con un precio superior a $30.
  2. Los ordena por precio en orden descendente.
  3. Muestra solo los 3 mejores resultados.

Resumen

En este laboratorio, hemos cubierto técnicas esenciales para filtrar y ordenar datos en MySQL:

  1. Uso de cláusulas WHERE con operadores de comparación y lógicos para filtrar datos
  2. Coincidencia de patrones con el operador LIKE para búsquedas de texto
  3. Ordenación de resultados utilizando ORDER BY con una o múltiples columnas
  4. Limitación de conjuntos de resultados utilizando LIMIT y OFFSET

Estas habilidades forman la base para una recuperación y organización eficientes de datos en MySQL.