Ir al contenido

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.

PostgreSQL, MySQL / MariaDB, SQLite, SQL Server, Oracle y MongoDB.

  1. Abre Base de datos en la cápsula superior (o Abrir SQL Console) y pulsa Nueva conexión.
  2. 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).
  3. 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).

La consola: explorador de objetos a la izquierda, script y resultados a la derecha.

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.

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.

  • 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 SELECT y puedes navegar entre ellos.
  • Si algo falla, el mensaje te sitúa: «Lote 3/7 (línea 42 del script)».
MotorSeparadorDetalle
SQL ServerGOSolo 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.

  • 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.

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.

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.

La rejilla se maneja como una hoja de cálculo:

ParaHaz
Seleccionar una filaClic en ella
Añadir o quitar filas sueltasCtrl + clic
Seleccionar un rangoMayús + clic
Seleccionarlo todoLa casilla de la cabecera, o Ctrl+A
Limpiar la selecciónEsc

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 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.

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.

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.

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.

PresetQué deja hacer
Solo lecturaEl de fábrica. Leer datos y ver el esquema, nada más. Cada escritura pediría confirmación.
DesarrolloAdemás escribe, borra, crea y altera objetos, ejecuta rutinas, transacciones y exporta. No destruye objetos (DROP). Tolera hasta 100 filas afectadas sin preguntar.
AdministradorTodo, incluido DROP, con un tope de 1000 filas sin preguntar.

Si tocas un interruptor suelto, el preset pasa a llamarse Personalizado.

InterruptorQué cubre
Leer datos (SELECT)Consultas que devuelven filas.
Ver esquemaTablas, 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 funcionesEXEC, CALL y bloques guardados.
TransaccionesBEGIN, COMMIT, ROLLBACK, SAVEPOINT.
Commit automáticoSi se apaga, cada COMMIT se confirma.
Exportar a archivoVuelca resultados o copias a disco (INTO OUTFILE, COPY … TO, BACKUP).
Pedir confirmación antes de cada escrituraNada 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.

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.