Comandos. conceptos generales
5.4 Comandos. Conceptos generales
Mientras que los apartados anteriores trataban las operaciones conceptuales que ocurren en una base de datos, este apartado se enfoca en cómo se expresan esas operaciones en lenguaje técnico. Los comandos son instrucciones específicas que se envían a la base de datos para que realice las operaciones CRUD. El lenguaje más universal para interactuar con bases de datos relacionales es SQL (Structured Query Language), un lenguaje declarativo que ha sido estándar internacional durante décadas. Este apartado introduce los conceptos fundamentales de SQL y cómo se estructura un comando.
Concepto de lenguaje de consulta
Un lenguaje de consulta es un sistema de comunicación entre el usuario o aplicación y la base de datos. A diferencia de lenguajes de programación procedurales que especifican paso a paso cómo hacer algo, los lenguajes de consulta son declarativos: especifican qué resultado se quiere, y el motor de base de datos determina cómo obtenerlo.
SQL es el estándar de facto en bases de datos relacionales. Existe SQL estándar (establecido por ISO/IEC), pero prácticamente cada gestor de bases de datos (MySQL, PostgreSQL, SQL Server, Oracle, etc.) implementa dialectos propios con extensiones particulares. Sin embargo, los conceptos fundamentales son consistentes entre todos ellos.
Estructura básica de un comando SQL
Los comandos SQL se organizan en cláusulas, cada una cumpliendo una función específica. El comando más común es SELECT, que recupera datos. Su estructura básica es:
SELECT especifica qué columnas recuperar, FROM indica qué tabla(s), WHERE establece condiciones, ORDER BY ordena los resultados, y LIMIT restringe la cantidad de resultados. Por ejemplo: SELECT nombre, email FROM clientes WHERE ciudad = 'Madrid' ORDER BY nombre LIMIT 10 recuperaría los nombres y correos de los primeros 10 clientes de Madrid, ordenados alfabéticamente.
Tipos principales de comandos SQL
Los comandos SQL se clasifican en varias categorías. Los comandos DDL (Data Definition Language) definen la estructura de la base de datos: CREATE TABLE (crear una tabla), ALTER TABLE (modificar una tabla), DROP TABLE (eliminar una tabla). Estos comandos son menos frecuentes en el uso diario, más comunes en la fase de diseño e implementación.
Los comandos DML (Data Manipulation Language) trabajan con los datos: SELECT (lectura), INSERT (creación), UPDATE (actualización), DELETE (eliminación). Estos son los comandos que se utilizan constantemente en operaciones diarias.
Los comandos DCL (Data Control Language) controlan el acceso: GRANT (otorgar permisos), REVOKE (revocar permisos). Estos se utilizan para gestionar la seguridad.
Subconsultas y uniones
Los comandos simples a menudo no bastan para obtener la información necesaria. Una subconsulta es un comando SELECT dentro de otro, permitiendo lógica compleja. Por ejemplo, para obtener todos los clientes que han realizado compras superiores al promedio, se usaría una subconsulta que primero calcula el promedio y luego filtra.
Las uniones (JOINs) combinan datos de múltiples tablas. Un JOIN INNER recupera solo registros que coinciden en ambas tablas, un LEFT JOIN incluye todos los registros de la tabla izquierda incluso si no tienen coincidencia, y así sucesivamente. Las uniones son fundamentales para la potencia del modelo relacional.
Funciones de agregación
Las funciones de agregación permiten resumir datos. COUNT cuenta registros, SUM suma valores, AVG calcula promedios, MIN y MAX encuentran valores mínimos y máximos. Cuando se usan con GROUP BY, permiten análisis complejos como "ventas totales por región" o "cantidad promedio de productos por categoría".
Índices y optimización
Un aspecto importante del trabajo con bases de datos es entender que no todos los comandos son igualmente eficientes. Recuperar mil registros de una tabla de diez millones es mucho más rápido si existe un índice en el campo que se está filtrando. Los administradores de bases de datos deben crear índices estratégicamente en campos frecuentemente consultados o usados en condiciones WHERE.
El análisis de un plan de ejecución (EXPLAIN en muchas bases de datos) permite ver cómo el motor de base de datos planea ejecutar un comando, identificando ineficiencias. Esta es una habilidad esencial para optimizar aplicaciones que dependen de consultas complejas.
Ejemplo práctico: Comandos comunes en un sistema de recursos humanos
Un profesional de recursos humanos necesitaría comandos para varias operaciones. Para encontrar empleados de un departamento específico: SELECT nombre, email FROM empleados WHERE departamento = 'Ventas'. Para obtener la nómina total por departamento: SELECT departamento, SUM(salario) FROM empleados GROUP BY departamento. Para encontrar empleados con antigüedad superior a 5 años: SELECT nombre FROM empleados WHERE fecha_contratacion < DATE_SUB(CURDATE(), INTERVAL 5 YEAR).
Para obtener información combinada de empleados y sus evaluaciones: SELECT e.nombre, COUNT(ev.id) as num_evaluaciones FROM empleados e LEFT JOIN evaluaciones ev ON e.id = ev.empleado_id GROUP BY e.id. Estos comandos variarían ligeramente según el gestor de base de datos específico, pero la lógica fundamental es la misma.
Ideas clave
- SQL es el lenguaje declarativo estándar para trabajar con bases de datos relacionales, especificando qué resultado se quiere, no cómo obtenerlo
- Los comandos SQL se clasifican en DDL (definición), DML (manipulación de datos) y DCL (control de acceso)
- El comando SELECT es fundamental, permitiendo recuperar datos con filtros, ordenamiento y limitaciones complejas
- Las subconsultas y uniones (JOINs) permiten consultas complejas que combinan datos de múltiples tablas
- Las funciones de agregación (COUNT, SUM, AVG, etc.) con GROUP BY permiten análisis y reportes resumidos
- La creación estratégica de índices y el análisis de planes de ejecución son esenciales para optimizar el desempeño