Comentarios
Los comentarios en SQL son texto que MySQL ignora al ejecutar la consulta. Sirven para documentar el propósito de una consulta, explicar una lógica compleja, desactivar temporalmente partes del código o dejar notas para otros desarrolladores (o para ti mismo en el futuro).
Comentarios de una línea con --
Los comentarios de una línea comienzan con dos guiones seguidos de un espacio (-- ). Todo lo que escribas después de -- hasta el final de la línea se ignora:
-- Obtener los 5 productos más caros
SELECT nombre, precio
FROM productos
ORDER BY precio DESC
LIMIT 5;MySQL ejecuta solo el SELECT; la primera línea es un comentario que describe la intención de la consulta.
Es importante que haya un espacio después de los dos guiones. --Esto no se interpreta como comentario en algunas situaciones, mientras que -- Esto siempre funciona. MySQL requiere ese espacio (o un tabulador) para distinguir los comentarios del operador de decremento y otros usos del doble guion.
También puedes añadir comentarios al final de una línea:
SELECT
nombre,
precio,
precio * 1.21 AS precio_con_iva -- IVA del 21%
FROM productos
WHERE activo = TRUE -- Solo productos activos
ORDER BY precio DESC;Cada comentario -- se aplica solo a su línea. El código SQL antes del -- se ejecuta normalmente.
Comentarios de una línea con
MySQL también acepta el carácter # para comentarios de una línea. Todo lo que sigue al # hasta el final de la línea se ignora:
# Consultar empleados del departamento de ventas
SELECT nombre, puesto, salario
FROM empleados
WHERE puesto LIKE '%Vend%';Esta sintaxis es específica de MySQL y no funciona en otros sistemas como PostgreSQL o SQL Server. Si escribes SQL que pueda ejecutarse en distintas bases de datos, usa -- en lugar de #.
Comentarios de bloque
Los comentarios de bloque comienzan con /* y terminan con */. Pueden abarcar varias líneas:
/*
Informe de ventas por estado.
Se excluyen los pedidos cancelados para no
distorsionar las métricas de rendimiento.
*/
SELECT
estado,
COUNT(*) AS total_pedidos,
SUM(total) AS importe_total
FROM pedidos
WHERE estado != 'cancelado'
GROUP BY estado;Los comentarios de bloque son ideales para explicaciones largas que requieren varias líneas. También puedes usarlos en una sola línea:
SELECT nombre, /* precio sin IVA */ precio FROM productos LIMIT 3;En este caso, el comentario está insertado en medio de la consulta. MySQL lo ignora y ejecuta SELECT nombre, precio FROM productos LIMIT 3;.
Desactivar código temporalmente
Una de las aplicaciones más prácticas de los comentarios es desactivar partes de una consulta durante el desarrollo o la depuración:
SELECT
nombre,
precio,
stock
-- , descripcion
-- , creado_en
FROM productos
WHERE precio > 100
-- AND stock < 50
ORDER BY precio DESC;Aquí hemos comentado dos columnas (descripcion y creado_en) y una condición del WHERE (AND stock < 50). MySQL las ignora, pero siguen ahí para poder reactivarlas fácilmente quitando el -- . Es mucho más rápido que borrar y reescribir código.
Con comentarios de bloque puedes desactivar secciones más grandes:
SELECT nombre, precio
FROM productos
WHERE precio > 100
/*
AND stock < 50
AND categoria_id IN (6, 7, 8)
AND activo = TRUE
*/
ORDER BY precio;Las tres condiciones adicionales están desactivadas. Para reactivarlas, basta con quitar /* y */.
Comentarios en scripts SQL
Cuando escribes archivos .sql con múltiples sentencias, los comentarios ayudan a organizar y documentar el script:
-- =============================================
-- Script: crear_usuario_desarrollo.sql
-- Descripción: Crea un usuario para desarrollo local
-- Autor: Equipo de desarrollo
-- =============================================
-- Crear el usuario
CREATE USER IF NOT EXISTS 'dev'@'localhost'
IDENTIFIED BY 'password_desarrollo';
-- Otorgar permisos sobre la base de datos de la tienda
GRANT ALL PRIVILEGES ON tienda_mysql.*
TO 'dev'@'localhost';
-- Aplicar los cambios de permisos
FLUSH PRIVILEGES;Este tipo de documentación es especialmente valioso en scripts que se comparten entre equipos o que se ejecutan como parte de procesos automatizados.
Comentarios condicionales de MySQL
MySQL tiene una sintaxis especial para comentarios que solo se ejecutan en MySQL. Comienzan con /*! y terminan con */:
SELECT /*! STRAIGHT_JOIN */ p.nombre, c.nombre AS categoria
FROM productos p
JOIN categorias c ON p.categoria_id = c.id;El STRAIGHT_JOIN dentro de /*! ... */ lo ejecuta MySQL pero lo ignoran otros sistemas de bases de datos. Esto permite escribir SQL portable que aprovecha funcionalidades específicas de MySQL sin romper en otros SGBD.
También puedes especificar una versión mínima de MySQL:
CREATE TABLE ejemplo (
id INT PRIMARY KEY,
datos JSON /*!80016 CHECK (JSON_VALID(datos)) */
);El número 80016 significa MySQL 8.0.16. La restricción CHECK solo se aplica si MySQL es versión 8.0.16 o posterior. En versiones anteriores, se ignora. Los dumps generados por mysqldump usan esta sintaxis extensivamente.
Buenas prácticas
Los comentarios son más útiles cuando explican el porqué, no el qué. El propio SQL ya describe qué hace la consulta. Un buen comentario explica la razón detrás de una decisión:
-- Mal comentario: no aporta nada que no diga el código
-- Seleccionar nombre y precio de productos donde precio > 1000
SELECT nombre, precio
FROM productos
WHERE precio > 1000;
-- Buen comentario: explica el contexto de negocio
-- Productos de gama alta (>1000€) para el catálogo premium
SELECT nombre, precio
FROM productos
WHERE precio > 1000;No comentes cada línea de una consulta simple. Reserva los comentarios para lógica no obvia, decisiones de diseño y consultas complejas donde el propósito no es evidente a primera vista.
Con esto completamos la sección de consultas básicas. En la siguiente sección exploraremos los operadores y filtros avanzados: AND, OR, NOT, IN, BETWEEN, LIKE e IS NULL.
Escrito por Eduardo Lázaro
