Módulo 6 · 01 | Consultas SQL con IA

MÓDULO 6 · CLASE 1 · BLOQUE A

Consultas SQL con IA: uso adecuado de Claude, ChatGPT y DeepSeek

Qué hace bien la IA y qué no, cómo armar un buen prompt, qué herramienta usar, cómo perfilar la base y cómo construir el prompt maestro de contexto. Regla de oro: la IA propone, los datos verifican.

1. Punto de partida: la IA genera SQL probable, no SQL verificado

Lo que sí hace bienLo que no puede hacer
Escribe el borrador de la consulta en segundosVer tu base: solo conoce lo que le contás
Explica línea por línea lo que no entendésSaber que ID_PROFE tiene NULL sin el perfilado
Encuentra errores de sintaxis y los corrigeGarantizar que el resultado sea correcto
Traduce una pregunta de negocio a SQLAdivinar tus reglas de negocio
Documenta y ordena consultas largasHacerse responsable de un DELETE

Regla

La IA es un copiloto rápido; el piloto y el control de calidad sos vos.

2. Anatomía de un buen prompt: cinco piezas

#PiezaQué va
1RolActuá como analista de BI experto en MySQL 8
2ContextoTablas, columnas, claves, valores posibles, NULLs
3TareaQué pregunta de negocio hay que responder
4FormatoUna consulta, comentada, columnas y orden
5RestriccionesSolo MySQL 8, sin inventar columnas, explicá
-- 1 ROL Actuá como analista de BI experto en MySQL 8. -- 2 CONTEXTO empleados(ID_EMPLEADO PK, NOMBRE, CARGO 'Mozo'/'Secretaria', SALARIO) -- 3 TAREA ¿Qué cargo cuesta más en planilla y qué % del total representa? -- 4 FORMATO Una consulta comentada: cargo, total_salarios, pct_del_total. -- 5 RESTRICCIONES Sin inventar columnas. Explicá cada línea en una oración.

3. Claude, ChatGPT y DeepSeek: ¿cuál uso y para qué?

Claude (Anthropic)ChatGPT (OpenAI)DeepSeek (China)
Fuerte enExplicaciones ordenadas y pedagógicas; acepta esquemas largos completosMuy versátil; puede ejecutar Python para probar lógicaGratis y fuerte en código; modo razonamiento que muestra los pasos
Usalo paraRevisar y refactorizarTraducir preguntas a SQLSegunda opinión
PrivacidadRevisá en Configuración si tus chats se usan para entrenarDesactivá el entrenamiento en Controles de datosDatos en servidores en China: solo estructura, nunca datos reales

Ojo

Las tres cambian seguido de versión y de plan gratuito. Lo que no cambia: comparar respuestas y verificar con los datos.

4. Seis reglas de oro

  • Estructura sí, datos no: pegá tablas y columnas. Nunca cédulas, salarios reales ni clientes.
  • Leé antes de ejecutar: si no podés explicar una línea, no la ejecutes.
  • Verificá con números: conteo de filas y totales contra una consulta simple.
  • SELECT antes de modificar: ningún UPDATE o DELETE de la IA sin SELECT previo y transacción.
  • Pedí que explique: «Explicá cada línea» convierte la respuesta en una clase.
  • Iterá con el error: si falla, pegale el mensaje exacto de MySQL.

5. Cinco errores típicos de la IA (los vamos a ver en tablas_libro)

ErrorEjemploUnidad
Inventa columnasUsa cursos.PROFESOR o alumnos.EDAD, que no existenU2
Sintaxis de otro motorTOP 5, ISNULL(), || para concatenar: no es MySQLU2
Pierde filas con INNER JOIN«SQL avanzado» desaparece por no tener profesorU4
NOT IN con NULLDevuelve 0 filas sin avisar. Correcto: NOT EXISTSU5
Confunde preciosPRECIO de lista ≠ PRECIO cobrado: 38,54 vs 36,38U4

6. Paso 0: perfilar la base antes de preguntar

Abrí 04_Perfilado_Generico_BD.sql en Workbench (solo lee, no modifica nada), cambiá una línea y ejecutá todo. Guardá cada bloque en CSV con el botón Export → CSV.

SET @bd = 'tablas_libro'; -- Export → CSV de cada bloque -- A la IA: 03_nulos, 05_valores, 06_estructura_ia
BloqueQué muestraArchivo¿A la IA?
1 · Tablas y filas realesCOUNT(*), no TABLE_ROWS01_tablas.csvOpcional
2 · DiccionarioTipo, PK, FK, NULL02_columnas.csvOpcional
3 · Nulos realesCuántos hay de verdad03_nulos.csvSÍ
4 · RelacionesHija → padre04_relaciones.csvOpcional
5 · Valores posiblesSolo catálogos05_valores_posibles.csvSÍ
6 · Estructura para IAUna línea por tabla06_estructura_ia.csvSÍ

¿Por qué COUNT(*) y no TABLE_ROWS?

TABLE_ROWS es una estimación: para facturas dice 0 y en realidad hay 1. Sin perfilado la IA adivina la base; con perfilado, la conoce.

⬇ Descargar perfilado de tablas_libro (Google Drive)

7. Lo que encontró el perfilado: los NULL reales anticipan las trampas

tablas_libro en números: 30 tablas · 6 alumnos · 5 cursos (1 sin profesor) · 4 profesores (1 sin cursos) · 8 inscripciones · 16 mascotas. Chica a propósito: todo se verifica a mano.

ColumnaNulosTrampa que anticipaUnidad
cursos.ID_PROFE1 de 5INNER JOIN pierde «SQL avanzado» · NOT IN da 0 filasU4 · U5
quinielas.ACIERTOS2 de 21Promedios y acumulados: filtrar ESCRUTADA = 'S'U3 · U6
vehiculos.ULTI_ITV3 de 5Mostrar «Sin inspección» con COALESCEU2
eventos.RESULTADO9 de 30Jornadas sin disputar: no son empatesU3

Valores posibles (bloque 5): empleados.CARGO: ‘Mozo’, ‘Secretaria’ · mascotas.ESTADO: ‘A’, ‘B’ · mascotas.UBICACION: ‘E01’ … ‘E05’ · quinielas.ESCRUTADA: ‘N’, ‘S’.

Catálogos sí, personas no

Nombres y apellidos no se repiten, así que el perfilado no los copia. Solo pasan columnas con 12 valores o menos que se repiten.

8. Método de trabajo: seis pasos del perfilado a la verificación

1 · Perfilar2 · Prompt3 · 3 IAs4 · Comparar5 · Ejecutar6 · Verificar
Y guardar en CSVPerfilado + notas + tareaClaude · ChatGPT · DeepSeek¿Qué cambia entre las 3?En MySQL WorkbenchFilas, totales, NULLs
-- Verificación mínima de cualquier consulta generada por IA SELECT COUNT(*) FROM ( /* pegá acá la consulta de la IA */ ) t; -- ¿cuántas filas esperaba? SELECT SUM(TOTAL_LINEA) FROM lineas_factura; -- ¿cuadra con TOTAL_FACTURA = 36,38?

9. Prompt maestro de contexto: sale del perfilado, no de memoria

Se arma copiando la salida del perfilado y sumando tus notas de negocio. Adjuntá los CSV 03, 05 y 06, o pegá la versión larga.

-- ESTRUCTURA (bloque 6) cursos(ID_CURSO int PK, TITULO varchar(50), ID_PROFE int FK→profesores.ID_PROFE NULL) lineas_factura(ID_FACTURA int PK FK→facturas, ID_LINEA int PK, ID_ARTICULO int FK→articulos, CANTIDAD int, PRECIO float, TOTAL_LINEA float) -- NULOS REALES (bloque 3) cursos.ID_PROFE 1 de 5 · quinielas.ACIERTOS 2 de 21 -- VALORES POSIBLES (bloque 5) empleados.CARGO: 'Mozo', 'Secretaria' -- NOTAS DE NEGOCIO (vos) lineas_factura.PRECIO = cobrado · articulos.PRECIO = lista -- REGLAS MySQL 8 · no inventes · decime cuántas filas esperar

Por qué funciona

  • La estructura se copia de la base real.
  • Los NULL reales anticipan las trampas.
  • Catálogos sí, datos personales no.
  • Tus notas cubren lo que la estructura no dice.
Versión para pegar en el chat (adjuntando los 3 CSV)
Actuá como analista de BI experto en MySQL 8. Respondé con SQL listo para Workbench, comentado en español, y explicá cada línea en una oración. Te adjunto el perfilado de mi base tablas_libro: - 06_estructura_ia.csv → tablas, columnas, tipos, PK y FK - 03_nulos.csv → columnas con NULL reales - 05_valores_posibles.csv → valores de las columnas tipo catálogo Leelos antes de responder y usá SOLO esas tablas y columnas. NOTAS DE NEGOCIO: - lineas_factura.PRECIO = precio cobrado; articulos.PRECIO = precio de lista. - empleados_tmp es la tabla de práctica para INSERT/UPDATE/DELETE. REGLAS: MySQL 8 · si falta algo, preguntá antes de inventar · al final decime cuántas filas debería devolver. Confirmá en 3 líneas qué entendiste de la base antes de empezar.

Tu turno

Ejercicio

Con el prompt maestro ya cargado, armá un prompt con las cinco piezas para responder: «¿Qué cargo nos cuesta más en planilla y qué porcentaje del total representa?». Pedilo en dos IAs, compará y verificá.

Ver solución
-- Total de salarios por cargo y % sobre la planilla SELECT CARGO, SUM(SALARIO) AS total_salarios, ROUND(SUM(SALARIO) * 100 / (SELECT SUM(SALARIO) FROM empleados), 1) AS pct_del_total FROM empleados GROUP BY CARGO ORDER BY total_salarios DESC; -- Tenés que obtener: Mozo 2900 → 52,5 % · Secretaria 2625,5 → 47,5 %
Scroll al inicio
¿Consultas? Escribinos