Base de datos (consola SQL)
La sección Base de datos convierte a Context Code en un cliente multimotor completo: explorador de objetos estilo SSMS, editor de scripts con pestañas, diagramas ER, historial, copias de seguridad y un asistente de IA que entiende tu esquema.
Motores soportados
Sección titulada «Motores soportados»PostgreSQL, MySQL / MariaDB, SQLite, SQL Server, Oracle y MongoDB.
Conectar una base de datos
Sección titulada «Conectar una base de datos»- Abre Base de datos en la cápsula superior (o Abrir SQL Console) y pulsa Nueva conexión.
- Elige el Motor y completa los datos: servidor/host, puerto, usuario, contraseña y base de datos; la ruta del archivo (
.db/.sqlite) si es SQLite; Service name / SID si es Oracle. Para servidores con TLS están el modo SSL (MySQL y PostgreSQL) y «Confiar en certificado del servidor» (SQL Server). - Probar conexión confirma que los datos son correctos; Guardar conexión la deja en tus Conexiones guardadas.
Cada pestaña de script recuerda su propia conexión (Ctrl+Shift+S) y su propia base (Ctrl+Shift+D).
Tu sesión no se pierde al cambiar de sección
Sección titulada «Tu sesión no se pierde al cambiar de sección»Puedes irte al chat, al editor o al modo Developer y volver: la consola sigue exactamente como la dejaste — la conexión y la base activas, el árbol del explorador ya desplegado, tus pestañas de script (que además sobreviven al reinicio de la app), el cursor, el scroll y el deshacer de cada script.
Al volver, la app comprueba la conexión por lo bajo y, si el servidor la había cerrado, reconecta sola sin decirte nada.
Conexiones que no se caen
Sección titulada «Conexiones que no se caen»Para SQL Server y Oracle hay un latido cada dos minutos que mantiene viva la sesión. Y si una ejecución falla por un error de conexión (la red se cortó, el servidor reinició), la app reabre y reintenta una sola vez. Los errores de SQL —una columna mal escrita, una restricción violada— no se reintentan: repetir un INSERT a ciegas sería peor que el error.
Ejecutar scripts y lotes
Sección titulada «Ejecutar scripts y lotes»- F5 o ▶ ejecuta el script entero, o solo lo que tengas seleccionado; Ctrl+Enter ejecuta la sentencia donde está el cursor.
- El script se manda sentencia a sentencia, así que obtienes un panel de resultados por cada
SELECTy puedes navegar entre ellos. - Si algo falla, el mensaje te sitúa: «Lote 3/7 (línea 42 del script)».
Separadores de lote por motor
Sección titulada «Separadores de lote por motor»| Motor | Separador | Detalle |
|---|---|---|
| SQL Server | GO | Solo cuenta si va en su propia línea. Admite GO 5 para repetir el lote 5 veces y un comentario -- detrás. No parte nada que esté dentro de cadenas, identificadores o comentarios. |
| Oracle | / | En su propia línea. |
| PostgreSQL, MySQL/MariaDB, SQLite, MongoDB | — | Sin separador de lote. |
Todos los lotes van por la misma conexión, así que el USE, las tablas temporales y las transacciones se conservan de un lote al siguiente.
Scripts que tocan varias bases
Sección titulada «Scripts que tocan varias bases»- SQL Server: la consola antepone el
USE [base]del selector y admite nombres de tres partes (base.esquema.tabla). Si el script nombra una base distinta de la del contexto, avisa —«El script nombra la base X pero el contexto es Y»— y te ofrece Reescribir a Y o Quitar prefijos de base. - PostgreSQL: abre una conexión temporal por cada base que el script necesite.
- MySQL: hay que cualificar con
base.tabla.
Explorar el esquema
Sección titulada «Explorar el esquema»El Explorador de objetos es un árbol único al estilo SSMS: Bases de datos, Diagramas, Tablas (incluidas las del sistema, externas y de grafos), Vistas, Sinónimos, Programación (Procedimientos, Funciones), Almacén de consultas, Service Broker, Almacenamiento, Seguridad, y dentro de cada tabla sus Columnas, Índices y Estadísticas. Tiene filtro, expandir/colapsar todo, refrescar y copiar la cadena de conexión.
El menú contextual trae los atajos de siempre: consultar las primeras 100 filas, generar INSERT / UPDATE / DELETE, crear o eliminar una base, crear tabla, abrir el Diagrama ER o el Modelo de datos, copiar el nombre (simple o cualificado), hacer USE, abrir una nueva consulta aquí, copia de seguridad, restaurar y generar scripts.
Resultados
Sección titulada «Resultados»Pestañas Resultados y Mensajes, con filas devueltas o afectadas y el tiempo de ejecución. Ctrl+R esconde o muestra el panel.
Un script largo abre una pestaña Resultado N por cada consulta que devuelve filas. Las sentencias de contexto —USE, SET, DECLARE— no abren pestaña: antes ensuciaban el panel con resultados vacíos que había que ir saltando. Cada pestaña tiene su X para cerrarla, y hay «Cerrar todos los resultados» para dejar el panel limpio de una vez.
Seleccionar filas y copiarlas
Sección titulada «Seleccionar filas y copiarlas»La rejilla se maneja como una hoja de cálculo:
| Para | Haz |
|---|---|
| Seleccionar una fila | Clic en ella |
| Añadir o quitar filas sueltas | Ctrl + clic |
| Seleccionar un rango | Mayús + clic |
| Seleccionarlo todo | La casilla de la cabecera, o Ctrl+A |
| Limpiar la selección | Esc |
Ctrl+C copia como TSV, que es lo que Excel y Google Sheets pegan en columnas sin preguntar nada.
El menú contextual da el resto de formas de sacar los datos:
- Copiar fila(s) y Copiar con encabezados
- Copiar como CSV
- Copiar como INSERT — te pregunta el nombre de la tabla destino
- Copiar celda
- Seleccionar todo y Limpiar selección
- Un ajuste: «Copiar NULL como texto “NULL”», para cuando el destino no distingue un nulo de una celda vacía
El doble clic sigue editando la celda, como siempre.
Cada consulta ejecutada queda en el historial, que persiste entre sesiones.
Diagramas ER
Sección titulada «Diagramas ER»Diagramas entidad-relación con tres disposiciones automáticas —rejilla, jerárquico y radial—, vista de solo claves, cuadrícula, reordenado a mano y zoom. Puedes tener varios diagramas por base: agregar tablas, renombrarlos, duplicarlos, borrarlos y guardarlos; quedan almacenados en la base local de la app.
El asistente de IA
Sección titulada «El asistente de IA»Con Ctrl+I abres el asistente dentro de la consola. Sabe qué conexión y qué base tienes delante, y puede explicar una consulta, optimizarla, convertirla a otro dialecto o detectar errores; el resultado se aplica al script o se inserta en el cursor.
También sabe trabajar en bucle —generar, ejecutar, corregir— hasta ocho intentos. Lo que puede hacer sin preguntarte lo decides tú en Permisos (aquí abajo): distingue lectura de escritura y de operación destructiva, y avisa cuando algo parece irreversible o cuando la conexión parece de producción.
Copias, restauración y scripts
Sección titulada «Copias, restauración y scripts»Cada motor con sus herramientas propias: BACKUP / RESTORE en SQL Server, pg_dump / pg_restore en PostgreSQL, mysqldump en MySQL, VACUUM INTO en SQLite, mongodump en MongoDB y expdp / impdp en Oracle. La generación de scripts admite DROP IF EXISTS, índices, claves foráneas y cuántas filas por INSERT, y escribe el resultado en una pestaña nueva o en un archivo.
Permisos del agente, por conexión
Sección titulada «Permisos del agente, por conexión»Tú decides qué puede hacer el asistente en cada base de datos. En la cabecera del chat de la conexión hay un botón Permisos con el resumen de lo que está vigente; al abrirlo verás:
Qué puede hacer el asistente en «tu conexión». Lo que esté apagado se rechaza antes de tocar la base.
Esa frase es literal: lo denegado no llega a la base de datos. No es un aviso, es un freno.
Los tres presets
Sección titulada «Los tres presets»| Preset | Qué deja hacer |
|---|---|
| Solo lectura | El de fábrica. Leer datos y ver el esquema, nada más. Cada escritura pediría confirmación. |
| Desarrollo | Además escribe, borra, crea y altera objetos, ejecuta rutinas, transacciones y exporta. No destruye objetos (DROP). Tolera hasta 100 filas afectadas sin preguntar. |
| Administrador | Todo, incluido DROP, con un tope de 1000 filas sin preguntar. |
Si tocas un interruptor suelto, el preset pasa a llamarse Personalizado.
Los interruptores
Sección titulada «Los interruptores»| Interruptor | Qué cubre |
|---|---|
| Leer datos (SELECT) | Consultas que devuelven filas. |
| Ver esquema | Tablas, columnas y relaciones. |
| Escribir datos (INSERT/UPDATE) | Añade o cambia filas. |
| Borrar datos (DELETE/TRUNCATE) | Quita filas de las tablas. |
| Cambiar esquema (CREATE/ALTER) | Crea o modifica objetos. |
| Destruir objetos (DROP) | Irreversible: borra tablas enteras. |
| Ejecutar procedimientos y funciones | EXEC, CALL y bloques guardados. |
| Transacciones | BEGIN, COMMIT, ROLLBACK, SAVEPOINT. |
| Commit automático | Si se apaga, cada COMMIT se confirma. |
| Exportar a archivo | Vuelca resultados o copias a disco (INTO OUTFILE, COPY … TO, BACKUP). |
| Pedir confirmación antes de cada escritura | Nada se ejecuta sin tu visto bueno. |
Y un número: máximo de filas afectadas sin confirmación (0 = preguntar siempre).
Los permisos se guardan por conexión, dentro de la misma base cifrada de la aplicación. Si la conexión no la has guardado, se recuerdan por motor y etiqueta.
Qué hace el asistente con ellos
Sección titulada «Qué hace el asistente con ellos»Antes de cada lectura de esquema, muestra de datos o ejecución, el asistente consulta los permisos:
- Lo denegado ni se intenta, y el modelo te lo explica en vez de fallar a ciegas: «no tengo permiso para borrar en esta conexión; actívalo en Permisos».
- Lo que requiere confirmación te dice por qué y, cuando se puede medir, cuántas filas va a tocar.
- Si editas el SQL en el diálogo de confirmación, se vuelve a validar el texto que quedó, no el original.
- Lo irreversible se confirma siempre, aunque el permiso esté concedido.
- Un script mixto se deniega entero si una sola de sus sentencias está prohibida: no se ejecuta «hasta donde llegue».
La clasificación es por motor —PostgreSQL, MySQL/MariaDB, SQL Server (con GO), SQLite, Oracle (con /) y MongoDB— e ignora cadenas, comentarios e identificadores entrecomillados, así que un DELETE dentro de un literal no cuenta. También reconoce los disfraces habituales: WITH … DELETE, SELECT … INTO, MERGE y el cuerpo de un procedimiento.