Cómo Escribir una Consulta SQL: Tutorial Práctico con Ejemplos
Cómo escribir una consulta SQL: un tutorial práctico con ejemplos
El Lenguaje de Consulta Estructurado (SQL) es el método universal para comunicarse con bases de datos relacionales, pero escribir una consulta efectiva va más allá de simplemente encadenar algunas palabras clave. Es un proceso que combina lógica, una comprensión clara de tus datos y una apreciación de cómo funcionan las bases de datos. Este tutorial te proporcionará los conocimientos necesarios para escribir consultas SQL que no solo sean correctas, sino también eficientes, legibles y mantenibles, independientemente de tu sistema de base de datos.
Qué Aprenderás
Al finalizar esta guía, podrás construir consultas SQL desde cero, filtrando, ordenando y agregando datos con precisión. Comprenderás la importancia del orden de ejecución de las consultas y te llevarás un plan claro para escribir sentencias SQL complejas que sean un activo profesional. Escribir una consulta SQL es un proceso estructurado donde las cláusulas se escriben en un orden específico que difiere de cómo las ejecuta el motor de la base de datos.
Los Fundamentos: La Sentencia SELECT
En el corazón de la recuperación de datos está la sentencia SELECT. Le indica a la base de datos exactamente qué información quieres ver y dónde encontrarla. La forma más básica de una consulta consiste en las cláusulas SELECT y FROM.
SELECT columna1, columna2
FROM nombre_tabla;
Por ejemplo, para recuperar las claves de empleados y los apellidos de una tabla de dimensiones, usarías:
SELECT EmployeeKey, LastName
FROM DimEmployee;
Aunque SELECT * puede ser tentador para ver rápidamente todas las columnas, se considera una mala práctica en código de producción porque puede devolver datos innecesarios, afectar el rendimiento y romper aplicaciones si el esquema de la tabla cambia. Siempre especifica las columnas que necesitas.
Construyendo Lógica con la Cláusula WHERE
Para filtrar datos y recuperar solo las filas relevantes, usas la cláusula WHERE. Esta especifica la condición de búsqueda que las filas deben cumplir para ser incluidas en los resultados. La cláusula WHERE va después de la cláusula FROM en la estructura de tu consulta.
Puedes usar varios operadores para construir condiciones de búsqueda potentes. Por ejemplo, para encontrar un empleado específico llamado "Smith", puedes usar una comparación de igualdad simple:
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE LastName = 'Smith';
Para filtros más complejos, puedes usar el operador LIKE para la coincidencia de patrones. La siguiente consulta encuentra todos los empleados cuyo apellido contiene el patrón "Smi":
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE LastName LIKE '%Smi%';
Los operadores lógicos como AND y OR te permiten combinar múltiples condiciones. Puedes usar AND para asegurar que todas las condiciones se cumplan y OR cuando cualquier condición pueda ser verdadera. Por ejemplo, para encontrar filas que cumplan varios criterios, podrías escribir:
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE EmployeeKey <= 500
AND LastName LIKE '%Smi%';
Es importante tener en cuenta que la cláusula WHERE filtra filas individuales y no puede filtrar resultados agregados. El operador IN es una forma concisa de verificar si un valor coincide con alguno en una lista, y BETWEEN se usa para encontrar valores dentro de un rango.
-- Usando IN
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE LastName IN ('Smith', 'Godfrey', 'Johnson');
-- Usando BETWEEN
SELECT EmployeeKey, LastName
FROM DimEmployee
WHERE EmployeeKey BETWEEN 100 AND 200;
Según la documentación de Microsoft, no hay límite en la cantidad de predicados que puedes incluir en una condición de búsqueda, lo que permite una lógica de filtrado altamente específica y compleja.
Dando Forma y Organizando tus Resultados
Después de filtrar tus datos, a menudo quieres organizarlos para una mejor legibilidad o realizar cálculos. La cláusula ORDER BY ordena el conjunto de resultados basándose en una o más columnas. Sigue a la sentencia SELECT y puede especificar orden ascendente (ASC, el valor predeterminado) o descendente (DESC). Para eliminar filas duplicadas de tu conjunto de resultados, usas la palabra clave DISTINCT justo después de SELECT.
SELECT DISTINCT JobTitle
FROM HumanResources.Employee
ORDER BY JobTitle;
La cláusula GROUP BY es una herramienta poderosa para la agregación de datos. Agrupa filas que tienen los mismos valores en columnas especificadas, permitiéndote realizar operaciones de resumen como SUM, AVG, COUNT, MAX y MIN. Por ejemplo, para encontrar el total de cada pedido de venta, podrías agrupar por SalesOrderID y sumar los totales de línea:
SELECT SalesOrderID,
SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
ORDER BY SalesOrderID;
Cuando quieras filtrar los resultados de un GROUP BY, debes usar la cláusula HAVING. A diferencia de la cláusula WHERE, que filtra filas individuales antes del agrupamiento, HAVING filtra grupos después de que se haya realizado la agregación.
SELECT ProductID
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(OrderQty) > 5;
El orden en que escribes estas cláusulas es crucial. Una consulta SQL estándar sigue esta estructura: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY.
Técnicas Avanzadas: Joins y Subconsultas
Los datos a menudo se almacenan en múltiples tablas, y los unes usando cláusulas JOIN. Un INNER JOIN recupera registros de dos tablas donde se cumple la condición de unión. Por ejemplo, puedes combinar la tabla Product con SalesOrderDetail para obtener información del producto junto con los datos de ventas.
Las subconsultas, o consultas anidadas, son consultas dentro de otra consulta. Son útiles para la manipulación y el análisis de datos que dependen de los resultados de otra operación. Una subconsulta correlacionada es un tipo particularmente complejo donde la consulta interna depende de la consulta externa para sus valores, ejecutándose repetidamente para cada fila procesada. La palabra clave EXISTS se usa a menudo con subconsultas correlacionadas para probar la existencia de filas en una subconsulta.
Escribiendo SQL Legible
Escribir SQL que funcione es solo la mitad de la batalla; escribir SQL que sea mantenible es una necesidad profesional. Sigue estas mejores prácticas para asegurar que tus consultas sean una herramienta para la colaboración, no una fuente de confusión:
- Pon en Mayúsculas las Palabras Clave: Usa mayúsculas para las palabras clave de SQL como
SELECT,FROM,WHEREyJOIN. Esto las separa de los nombres de columnas y tablas, facilitando la lectura de la consulta. - Usa Saltos de Línea y Sangría: Coloca cada cláusula principal en una nueva línea y usa sangría para mostrar la estructura de subconsultas o joins. Esta jerarquía visual aclara la lógica compleja.
- Añade Comentarios Significativos: Usa
--para añadir comentarios que expliquen el por qué detrás de tu consulta, no el qué. Esto es invaluable para tu futuro yo y para tus colegas. - Usa Alias Descriptivos: Al renombrar columnas con
ASo acortar nombres de tablas, elige alias que sean significativos. Evita nombres vagos comot1oa.
Fuentes
- WHERE (Transact-SQL) - SQL Server
- T-SQL Tutorial: Write Transact-SQL Statements
- SELECT Examples (Transact-SQL)
- PostgreSQL: Documentation: 17: 2.5. Querying a Table
- Data Management with SQL for Ecologists: Accessing Data With Queries
- EXISTS (Transact-SQL) - SQL Server
- Transact-SQL Syntax Conventions (Transact-SQL)
- How to Write SQL Queries Anyone Can Understand
— Editorial Team
Aún no hay comentarios.