SQL
Qué es
(Structured Query Language, lenguaje de consulta estructurado) es el lenguaje estándar para consultar y manipular bases de datos relacionales como PostgreSQL, MySQL, SQLite y SQL Server. Piensa en pedir un plato en un restaurante: dices lo que quieres en el plato, no cómo cocinarlo. SQL funciona de la misma manera. Describes el resultado que quieres, y el motor de la averigua cómo obtenerlo de forma eficiente. Esto se llama ser declarativo.
Puntos fuertes
- Declarativo: expresas lo que quieres, no cómo recorrer las filas en un bucle.
- Probado durante décadas, con motores maduros y fuertes garantías de consistencia.
- Las operaciones basadas en conjuntos (joins, agregaciones, funciones de ventana) son concisas y rápidas.
- Transferible: el SQL básico funciona en la mayoría de las bases de datos relacionales.
Contrapartidas
- Los dialectos difieren (Postgres frente a MySQL frente a SQLite), así que la portabilidad no es total.
- Es fácil escribir consultas lentas; el rendimiento depende de los índices y los planes de ejecución.
- No es un lenguaje de propósito general: el control de flujo y la lógica resultan incómodos.
- Los cambios de esquema (migraciones) requieren cuidado en producción.
Cuándo recurrir a él
Recurre a SQL siempre que tus datos sean relacionales y se consulten por estructura: informes, analítica, backends de aplicaciones y cualquier sistema donde importen la integridad de los datos y los joins. Es la herramienta adecuada para agregaciones y preguntas puntuales sobre datos estructurados, y se combina bien con casi cualquier lenguaje de .
Encaje con vibe coding
Los asistentes de IA son muy buenos con SQL y pueden traducir preguntas en inglés simple a consultas sorprendentemente bien, pero pueden adivinar tu esquema. Orienta a la IA pegando las definiciones reales de las tablas (sentencias CREATE TABLE) y nombrando tu base de datos específica (Postgres, SQLite, etc.) para que use el dialecto y las funciones correctas. Pídele que explique la consulta y que sugiera índices para las que sean lentas. Haz que siempre parametrice la entrada del usuario en lugar de pegar los valores directamente en el texto de la consulta. Imagina un campo de formulario donde alguien escribe, en lugar de un nombre, un comando; si pegas ese texto directamente en tu consulta, la base de datos podría ejecutarlo. Mantener separada la entrada del usuario evita esto, un ataque llamado inyección SQL (SQL injection). Verifica las consultas generadas con una muestra pequeña antes de ejecutarlas contra producción.
SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE u.active = true
GROUP BY u.name
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC;