La conexión
Una conexión es un archivo .lnc (LightNote Connection) dentro del
propio espacio de trabajo — versionable en Git y portátil entre máquinas. Las
conexiones de la carpeta aparecen en el panel Conexiones de la barra lateral
(el icono de base de datos), cada una con un punto de estado (verde conectada, gris
desconectada, rojo con error) y, debajo, los scripts que le pertenecen. Crea
una con Nuevo → Nueva conexión de BD o con el botón del panel; abrir un
.lnc desde el árbol de archivos también lleva al panel. Debajo de la
lista está el árbol de objetos de la conexión seleccionada. El menú contextual de
la conexión ofrece Conectar/Desconectar, Nuevo script,
Consola SQL y Editar conexión.
Carpeta sin conexión: el panel Conexiones vacío ofrece Nueva conexión… y
Abrir un archivo de base…, y lista las bases SQLite y DuckDB en archivo que ya están en la
carpeta, cada una con un Conectar. La base se reconoce por el contenido del archivo, no por
la extensión (un .db puede ser de cualquiera de las dos); un clic crea la conexión
(.lnc) junto al archivo, apuntándolo por el nombre — los dos viajan juntos — y ya
conecta.
Scripts: un script es un archivo .sql común y se abre en la
pestaña de código, como cualquier archivo — con historial, barra de cambios y
Guardar versión. Al comienzo de la barra de la pestaña están el selector
de conexión y el botón Ejecutar; los resultados aparecen debajo del
editor en la primera ejecución (o al lado: Ejecutar → Resultados al
lado). La conexión de origen del script queda guardada en el
.lnc, y al reabrir el script ya apunta a ella. Elegir otra conexión en
el selector vale solo para esa pestaña; para cambiar el origen, usa Usar siempre
"…" para este script. Un script sin origen se abre en Sin conexión,
aunque la carpeta tenga una sola conexión: ningún script se abre apuntando a una
base que no elegiste. La Consola SQL es una pestaña sin archivo, ya ligada a
la conexión. El Área de análisis de un resultado se guarda junto al script
(consulta.sql.analysis.json), una por consulta: el archivo guarda los
gráficos, las tablas dinámicas y el SQL de cada una — nunca los datos.
Una sesión por pestaña: cada pestaña de script abre su propia sesión con
la base — una consulta larga en una pestaña no bloquea las demás ni el árbol de
objetos, y el Commit de una pestaña no confirma lo que hizo otra. Las tablas
temporales y los comandos SET valen solo en la pestaña donde se
ejecutaron. Si el servidor limita el número de conexiones, desmarca Una sesión
por pestaña en Editar conexión. SQLite y DuckDB en archivo comparten
siempre la misma sesión (en SQLite una escritura bloquea el archivo entero). El
panel muestra cuántas sesiones tiene abiertas cada conexión.
Controladores: SQLite y DuckDB (archivo) nativos; PostgreSQL,
MySQL/MariaDB, SQL Server y genérico vía ODBC; Oracle nativo
(sin ODBC). SQL Server usa el controlador msodbcsql de Microsoft (instálalo en
la máquina) y ofrece autenticación de Windows o usuario/contraseña, además de
las opciones de cifrado del canal (Encrypt / confiar en el certificado). Para
Oracle, define la carpeta del Oracle Instant Client en Ajustes → Base de datos — se carga en tiempo de ejecución, sin nada que instalar. La
conexión Oracle tiene cuatro modos: Service Name (host/puerto/service),
SID (host/puerto/SID), Nombre TNS (alias del tnsnames.ora
de la carpeta del cliente) y Descriptor TNS completo (pegado en un campo de
texto).
Contraseña: marca Guardar contraseña para cifrarla dentro del
propio .lnc (cripto portable, se abre en otra máquina); sin marcar,
la contraseña no se guarda y se pide en cada conexión. El cifrado usa una
Frase de paso por espacio de trabajo, definida en Ayuda → Configurar Frase
de paso; consérvala bien — sin ella la contraseña no se puede abrir en ningún
otro sitio. La Frase de paso se guarda en caché solo en la máquina local (nunca va a
Git).
Marca Conectar al abrir para que la conexión se abra sola cuando abres uno de sus scripts. La conexión automática es silenciosa: si hay que escribir la contraseña (modo preguntar, o cifrada sin la Frase de paso en caché en la máquina), el script se abre desconectado, sin interrumpir.
Producción sin miedo: en Editar conexión, el campo Entorno dice qué base
de datos es esta — Desarrollo, Homologación o Producción —, y su color aparece en el
selector de conexión de la pestaña .sql, en una franja arriba de la pestaña y en una
etiqueta del panel Conexiones. En una conexión de producción, lo que modifica la base
(INSERT, UPDATE, DELETE, CREATE, DROP,
procedimientos…) muestra antes lo que va a ejecutarse y pide confirmación, con el
UPDATE/DELETE sin WHERE destacado; el botón predeterminado es
Cancelar, y guardar los cambios de la cuadrícula pregunta igual. Marca Solo lectura para
que la conexión rechace todo lo que modifica la base — en el script, en la cuadrícula y en los datos de
una tabla — antes de que la instrucción salga de LightNote: la cuadrícula deja de ofrecer edición y, en
SQLite, el archivo se abre solo para lectura. Lo que LightNote no sabe si solo lee (un bloque
BEGIN … END, un DECLARE) cuenta como escritura.
Túnel SSH: para una base detrás de un servidor SSH (bastión), elige en Túnel SSH
una conexión SSH (.lns) del espacio de trabajo — la misma del terminal remoto, con usuario,
clave o contraseña cifrada. Host y Puerto pasan a ser los de la base vistos desde el servidor
SSH (suele ser localhost). Al conectar, LightNote abre el túnel y llega a la base por él;
desconectar cierra el túnel. Solo se abre cuando conectas (nunca al abrir el archivo), el
.lns tiene que estar dentro del espacio de trabajo, y las opciones de ssh que ejecutan
comandos (ProxyCommand, LocalCommand, -F) se rechazan — el
-J vale. Solo pasan las opciones de una lista de permitidas (-J, -i, -4/-6, -C y -o con claves de conexión, cifrado y autenticación): -A, -R, -I y -E también se rechazan. Una conexión con túnel no la abren la IA (MCP), lnote ni los Bloques,
que conectarían directamente.
Información del servidor: al conectar, la app pregunta a la base de datos lo que informa sobre sí misma — la versión, la base de datos y el esquema actuales, el usuario, el tamaño, la codificación, la intercalación y la zona horaria, y si el servidor acepta escrituras (una réplica no las acepta). La versión aparece en la información sobre herramientas de la conexión, y el resto en Información del servidor…, en el menú contextual de la conexión, con un botón para copiarlo. Un dato que el servidor no informa — versión antigua, falta de privilegio — queda fuera, sin error. La versión va incluida cuando se pide a la IA que explique un error o analice un plan: la sintaxis que puede sugerir depende de ella.
Claves foráneas en SQLite: SQLite solo hace cumplir las claves foráneas
declaradas — y el ON DELETE CASCADE — cuando la conexión lo pide, y las conexiones de
la app lo piden: borrar una fila que otras referencian, o insertar una referencia a un registro que
no existe, se rechaza, y el CASCADE borra los hijos como dice el esquema. La casilla
Verificar las claves foráneas, en Editar conexión…, lo desactiva — solo para una carga
masiva fuera de orden. Activarlo no revisa lo que ya está en el archivo: Información del
servidor… cuenta, por tabla, las referencias rotas que ya existen (filas que apuntan a un
registro que no existe), grabadas por una herramienta que no las verificaba.
Ejecutar y ver el resultado
Ejecutar: Ctrl+Enter ejecuta la instrucción bajo el cursor y
Alt+X ejecuta el script entero; los resultados aparecen paginados, cada uno en
una pestaña Resultado con una barra de acciones abajo: Obtener el siguiente bloque, Congelar el resultado, Recuento total, cambiar el
Límite de filas, Actualizar (vuelve a ejecutar), Ver/Copiar SQL,
Exportar... y Generar SQL de la fila seleccionada. Qué es una instrucción sale del propio texto: un bloque BEGIN … END y un cuerpo $$ … $$ quedan enteros, y una línea sola con / (Oracle) o GO (SQL Server) también separa.
Escribir SQL con ayuda: Ctrl+Espacio completa según el contexto:
después de FROM, JOIN, UPDATE o INTO
vienen las tablas de la base (la lista se abre sola al escribir el espacio), y después
de alias. vienen las columnas de esa tabla (se abre sola al escribir el
punto) — incluso antes de escribir el FROM, y sin expandir nada en el
árbol: LightNote lee el catálogo de la base en segundo plano, y las columnas solo
cuando el texto llega a ellas. En un script con varias instrucciones, la que
Ctrl+Enter va a ejecutar queda resaltada. Cuando una instrucción falla, queda
marcada en el editor, el nombre que señaló la base (la tabla o la columna que no existe,
el punto del error de sintaxis) recibe un subrayado ondulado, el cursor va hasta allí y
el mensaje aparece al dejar el ratón encima. Ctrl+clic o F12 en el nombre
de una tabla abre sus datos; F4, sus propiedades. Formatear
(Shift+Alt+F) ordena el SQL sin ninguna herramienta instalada: una cláusula por
línea, los elementos del SELECT uno por línea cuando son varios,
AND/OR y subconsultas sangrados. Solo cambia espacios y las
mayúsculas de las palabras clave, nunca un nombre, un texto o un comentario, y deja como
están las instrucciones que no son consultas (CREATE, bloques
BEGIN … END).
Congelar el resultado: lee el resultado completo de la base de datos de una sola vez y lo guarda en una tabla local (en disco, si no cabe en memoria). A partir de ahí la cuadrícula se desplaza sin consultar la base, el recuento de filas pasa a ser exacto (sin necesidad de Contar el total), hacer clic en un encabezado ordena (otro clic invierte; un tercer clic vuelve al orden en que la base entregó las filas) y la exportación también sale de la copia local. Ordenar por el encabezado vale hasta 100 mil filas; por encima de eso se rechaza, con el motivo en el tooltip del encabezado, porque cada página tendría que reordenar la copia completa y recorrer la cuadrícula volvería a tardar minutos. Un resultado que ya llegó completo en la primera página se ordena sin necesidad de congelar: las filas ya están en memoria. Lo que no se ordena es la primera parte de un resultado todavía paginado: el encabezado afirmaría un orden que solo vale para lo que está en pantalla.
El gráfico y la tabla dinámica pasan a cubrir el resultado completo, incluso en bases donde el gráfico no existía. Si la congelación se detiene antes del final (pulsaste Detener o se alcanzó el tope), las filas siguen locales pero el gráfico y la tabla dinámica siguen en el servidor: sumar sobre parte del resultado daría un número equivocado, y ordenar la cuadrícula ordena solo las filas traídas, no el resultado completo.
Actualizar descongela y vuelve a ejecutar la consulta. Independientemente de congelar, las páginas que ya pasaron por la cuadrícula quedan guardadas localmente: volver atrás a una de ellas no consulta la base de datos otra vez. Solo se ejecuta una congelación a la vez: con dos resultados abiertos, pulsar Congelar el resultado en el otro se rechaza con el motivo, en lugar de interrumpir el que está en curso; para detenerlo, use Detener en su propia pestaña.
Cuadrícula de resultados: cada consulta que devuelve filas tiene una pestaña con el nombre de la tabla (el SQL completo está en la sugerencia de la pestaña). Una ejecución nueva reemplaza esas pestañas, salvo las fijadas — clic derecho en la pestaña, Fijar el resultado —, que quedan para comparar; la × cierra un resultado. Junto a las pestañas, el resumen de la ejecución dice cuántas filas llegaron y cuánto tardó, o el error en rojo; al hacer clic se abren los Mensajes. El pie repite las filas y el tiempo y, con el resultado todavía a medias, ofrece Obtener el siguiente bloque y Contar el total. La barra sobre la cuadrícula agrupa el resto: Actualizar, Congelar, Límite, el menú Análisis, Valor, Columnas y Exportar (con Copiar SQL, Ver SQL y Generar SQL); en una ventana estrecha los botones pierden el texto antes de desaparecer. El encabezado muestra el tipo de cada columna (texto, número, fecha…) y marca con una llave las columnas de la clave de la tabla; al dejar el ratón encima dice el tipo completo. Arrastrar el encabezado reordena las columnas, y Columnas (o el clic derecho en el encabezado) oculta, muestra y ajusta el ancho al contenido — la elección sobrevive a Actualizar, al Límite y al orden.
Celdas: un NULL aparece en cursiva atenuada, distinto de un texto
vacío, y los números quedan alineados a la derecha; al seleccionar varias celdas, el pie muestra
el recuento de la selección y, si son numéricas, la suma y la media. Valor (o Ver valor
en el panel en el menú contextual) abre al lado el valor completo de la celda
seleccionada, sin cortes, con Formatear para embellecer JSON/XML solo en pantalla; el botón
Registro del panel cambia el valor por la fila entera traspuesta — una columna por
línea, con el nombre junto al valor —, que sigue al cursor (también con Ver el registro
completo, en el menú de la celda). En el menú de una celda, Filtrar por este valor /
Excluir este valor vuelven a ejecutar la consulta con un WHERE por la celda, e
Ir al registro referenciado sigue la clave foránea de la columna y consulta la tabla padre
por el valor.
Buscar y filtrar en la cuadrícula: Ctrl+F con el foco en la cuadrícula va
al campo Buscar en la cuadrícula, que muestra solo las filas que contienen el texto en
cualquier columna — con el foco en el editor, Ctrl+F sigue siendo la búsqueda del SQL. El
embudo de al lado abre el Filtro avanzado (condiciones por columna, con Y/O), y las
columnas filtradas llevan un embudo en el encabezado; hacer clic en una barra del gráfico, en una
celda de la tabla dinámica o en un valor frecuente de Calidad se convierte en una
selección, una etiqueta sobre la cuadrícula que se quita con su ×. El pie dice cuántas
filas quedan de cuántas. Buscar y filtrar valen sobre el resultado completo, en una copia
local: con un resultado que llegó entero es inmediato; con solo la primera parte, el campo queda
gris con el motivo — filtrar lo que está en pantalla ocultaría lo que está en la parte siguiente
— y Congelar lo habilita. Con la búsqueda o el filtro activos, el gráfico, la tabla
dinámica y Calidad describen el mismo recorte que la cuadrícula. Nada de esto cambia la
consulta: para recortar en la base, usa Filtrar por este valor o escribe el
WHERE.
Gráfico y tabla dinámica: dónde se hace el cálculo. El menú Análisis trae el
Gráfico, la Tabla dinámica, la Calidad y el Área de análisis, y en
Analizar sobre la elección entre Datos locales y Tabla completa (en el
servidor), marcada en la que está vigente. Cuando el resultado cupo entero en la primera
página, lo predeterminado es local: LightNote agrega sobre el resultado que ya está en
pantalla, sin volver a la base de datos en cada ajuste de eje, de agregado o de intervalo — y, como
el motor local es DuckDB, el gráfico pasa a existir también en Oracle, SQL Server, PostgreSQL y
MySQL, donde su SQL no se ejecuta en el servidor. Cuando el resultado llegó truncado, la
opción local queda no disponible con el motivo: agregar sobre una muestra daría un número
equivocado, y avisar del corte no protegería a nadie, porque lo que se lee en un gráfico es la
altura de la barra. La opción del servidor agrega sobre la consulta completa, con una
consulta por ajuste, y no está disponible mientras haya búsqueda o filtro en la cuadrícula (el
recorte existe solo aquí). Las columnas numéricas que la base entrega como texto — el caso del
NUMBER de Oracle — se reconocen como números; los identificadores con cero a la
izquierda, como 01310, siguen siendo texto. En Oracle, SQL Server, PostgreSQL y MySQL,
con el resultado aún a medias, el Gráfico queda gris con el motivo, y se enciende cuando
congelas el resultado.
Calidad de los datos del resultado. El elemento Calidad del menú Análisis abre, junto a la cuadrícula, el mismo perfil por columna de las tablas de archivo. Lo calcula DuckDB: en la copia local cuando el resultado llegó entero (o se congeló), o en la propia base cuando la base es DuckDB. En Oracle, SQL Server, PostgreSQL y las demás, con el resultado aún a medias, el panel dice por qué no lo describe y ofrece Congelar el resultado allí mismo; si la congelación se detiene en el tope, recomienda restringir la consulta — el perfil de una parte describiría otra tabla. Hacer clic en un valor frecuente filtra la cuadrícula (es una selección, como en la búsqueda); para recortar en la base, usa Filtrar por este valor en el menú de la celda.
Sobre cuántos datos se hizo el análisis. Encima del gráfico, de la tabla dinámica, de la calidad y del Área de análisis, una línea dice si el cálculo usó todos los datos — con el número de filas, contado solo en la copia local — o si se calculó en la base de datos, sobre la consulta entera; ahí el recuento es el enlace Contar filas, porque contar ejecuta la consulta otra vez. Cuando el congelamiento se detuvo antes del final y hay búsqueda o filtro en la cuadrícula, el análisis solo puede hacerse sobre lo que se trajo, y la línea dice Parte de los datos, con el tono de aviso. La misma frase va en la leyenda del informe del Área de análisis.
Instantánea de los datos: el análisis de un script guardado conserva las tarjetas a su lado, no los datos — para verlo de nuevo hace falta la base. El botón Instantánea de los datos del Área de análisis guarda el resultado entero en un archivo Parquet junto al script, con las tarjetas; abrir ese archivo muestra el mismo análisis sin conexión, sobre los datos de ese momento. Es un gesto explícito y la ventana avisa antes: el archivo es una copia de los datos de la base, y va con la carpeta si esta va a Git o se comparte. Solo existe con el resultado entero aquí — con solo la primera parte, congélelo antes (la ayuda emergente del botón lo dice).
Plan de ejecución: el elemento Plan de ejecución del menú de
Ejecutar pide el plan de la instrucción bajo el cursor (SQLite, DuckDB, PostgreSQL y MySQL)
y lo muestra en la pestaña Plan: el árbol de pasos, con el que más pesa destacado y una
frase que dice qué significa — en PostgreSQL y MySQL, el paso de mayor coste propio (su
coste menos el de los pasos de dentro), con su parte del total; en DuckDB, el que más filas
produce; en SQLite, que no informa coste, la lectura de una tabla entera. Cuando el paso lee la
tabla entera en una base que tiene índices, la frase recuerda que un índice en la columna del
filtro suele evitarlo (en DuckDB, columnar, leer la tabla entera es lo normal y el consejo no
aparece). El alias de la consulta (FROM pedidos p) se sustituye por el nombre de la
tabla. Ver como texto muestra el mismo árbol sangrado, y Copiar el plan lo copia.
Los números son la estimación del planificador: la consulta no se ejecuta. Un
EXPLAIN escrito también se abre en la pestaña Plan cuando LightNote reconoce la
respuesta; lo que no reconoce sigue en la cuadrícula. En las bases que no exponen el plan en una
sola instrucción (SQL Server, Oracle) el elemento queda deshabilitado, con el motivo en la
sugerencia.
Analizar con la IA: el destaque dice qué paso pesa; el botón
Analizar con la IA de la pestaña Plan pregunta por qué lo eligió el planificador y
qué cambiar. Se envían la consulta, el plan y el esquema de las tablas que lee — con los índices
que ya existen, para que la IA no sugiera crear uno que ya está. Los valores se quitan antes
del envío (el texto entre comillas y los números se vuelven ?; el comentario sale
entero), y Ver lo que se enviará muestra exactamente lo que va. La sugerencia se abre en el
editor como script nuevo, y no se ejecuta nada.
El esquema
Datos de una tabla: haga doble clic en una tabla del árbol de
esquema para abrir su pestaña en la subpestaña Datos. Encima de la
cuadrícula hay dos campos, WHERE y ORDER BY, que se
aplican con Enter, y los dos van a la base de datos: valen para toda
la tabla, no solo para las filas que están en pantalla. Hacer clic en el
encabezado de una columna también ordena en la base de datos (ascendente,
descendente, sin orden) y rellena el ORDER BY; Filtrar por este
valor en el menú de una celda añade la condición al WHERE, visible
y editable. La pestaña tiene su propia sesión con la base de datos, como una
pestaña de script. Abrir la tabla desde Propiedades no consulta los datos:
la consulta solo se ejecuta cuando se muestra la subpestaña Datos. Con el ORDER BY vacío, las filas llegan en el orden de la clave primaria (el campo muestra cuál): sin ningún orden, la base de datos no garantiza la misma secuencia de una página a la siguiente, y al desplazarse podían repetirse u omitirse filas. Al ordenar por el encabezado, la clave desempata las filas con el mismo valor.
Editar los datos: en la cuadrícula de una tabla que tiene clave primaria (o única, de columnas NOT NULL), haga doble clic en una celda, pulse F2 o empiece a escribir. El editor es el del tipo de la columna: fecha con calendario, verdadero/falso en una lista, número que solo acepta números y JSON comprobado al confirmar. El texto borrado queda como texto vacío, no NULL: el NULL es un gesto propio (Establecer como NULL en el menú de la celda, o el botón NULL del panel de valor, que también edita textos largos). Insert añade una fila nueva —lo que quede como predeterminado recibe el valor predeterminado de la base de datos—, Duplicar fila copia la seleccionada salvo la clave, y Supr marca las filas para eliminar (de nuevo, las desmarca). Nada de esto va a la base de datos en el momento: los cambios quedan pendientes, pintados en la cuadrícula (ámbar la modificada, verde la nueva, rojo tachado la eliminada), y una franja encima los cuenta. Revisar… muestra el SQL que se ejecutará y lo copia como script; Guardar graba todo en una sola transacción, comprobando que cada UPDATE y DELETE alcanza exactamente una fila: si otra sesión modificó o eliminó la fila después de leerla, o si alguna instrucción falla, no se graba nada y los cambios siguen en la cuadrícula; Descartar los deshace todos. Recargar la cuadrícula, cambiar el filtro o cerrar la pestaña con cambios pendientes pregunta antes.
Cuando la cuadrícula no edita, dice por qué: en la sugerencia de los
botones y en una franja al intentar editar. Una tabla sin clave primaria ni única de
columnas NOT NULL queda de solo lectura: sin la clave, no hay forma de saber qué fila
cambiaría cada edición. En una pestaña de script, el resultado también se edita
cuando la consulta es un SELECT de una sola tabla que lista sus columnas
(o usa SELECT *) y trae la clave; join, subconsulta, columna calculada o
renombrada, DISTINCT, GROUP BY y UNION dejan
el resultado de solo lectura. Las columnas binarias no se editan en la cuadrícula. Y
con una transacción abierta en la pestaña (autocommit desactivado) con instrucciones
pendientes, confirme o deshaga antes de guardar: guardar la cuadrícula las llevaría
consigo.
Propiedades del objeto: pulse F4 sobre una tabla del árbol de esquema (o elija Propiedades en el menú contextual) para abrir su pestaña directamente en la estructura; junto a Datos hay cuatro subpestañas: Columnas (n.º,
nombre, tipo, si admite nulos, valor predeterminado y un icono de clave en las columnas
de la clave primaria), Claves (primarias, foráneas, únicas y checks; al
hacer doble clic en una clave foránea se abre la tabla referenciada), Índices y
DDL — el CREATE TABLE del objeto, listo para copiar, guardar
como .sql o abrir en una pestaña editable. Cuando la base de datos no
proporciona el DDL ya hecho (PostgreSQL y SQL Server no tienen ese comando), LightNote lo
reconstruye a partir de los metadatos — lo mismo ocurre cuando el comando de DDL
se deniega por falta de permiso — y lo indica claramente en la pestaña. Si ni siquiera el
catálogo de columnas se puede leer (sin permiso o catálogo no disponible), no hay de qué
reconstruir: la pestaña lo avisa en vez de quedarse vacía en silencio. El
menú contextual de la tabla también ofrece Copiar DDL sin abrir la pestaña.
Árbol de objetos: en el panel Conexiones, debajo de la
lista, el árbol de la conexión seleccionada separa Tablas de Vistas
(cada una con su icono) y marca con un icono de llave las columnas que forman parte
de la clave primaria. El árbol muestra también Procedimientos y funciones, Disparadores y Secuencias (donde la base de datos los tiene); un doble clic en un procedimiento, función o disparador abre su código fuente en una consola SQL de la conexión. Junto a cada tabla aparece el número aproximado de filas, y su comentario en la ayuda emergente: es la estimación que guarda la base de datos, no un COUNT(*). Los esquemas del sistema (SYS, pg_catalog…) quedan ocultos; el elemento al final de la lista los muestra. El cuadro de filtro criba al instante lo ya cargado y, a partir de 2 letras, busca también en la base de datos: lo que nadie expandió aparece en la carpeta En la base de datos de arriba. Dentro de un script, Ctrl+Alt+O (Ir a la tabla…, en el selector de conexión) abre la búsqueda con el teclado, y F12 sobre el nombre de una tabla abre su pestaña.
Actualizar metadatos. Después de un CREATE, ALTER, DROP o RENAME ejecutado en un script, el árbol, el autocompletado y las propiedades de la tabla vuelven a leer tablas, columnas y tipos solos, pocos segundos después — sin cerrar lo que estaba abierto en el árbol. Con el autocommit desactivado, la relectura espera el Commit (o el Rollback), porque antes de eso el cambio aún no existe para las demás sesiones. Cuando la estructura cambió desde fuera (otro programa, una migración), use el botón Actualizar metadatos en la barra del script, en el menú de la conexión, junto al filtro del árbol o el Actualizar de las propiedades de la tabla.
Explorar el esquema: Haz clic derecho en
una tabla para Insertar SELECT en el editor, Ver datos, Contar
filas, Copiar nombre cualificado o abrir el submenú Generar SQL →
INSERT/UPDATE/MERGE: una pantalla lista las columnas de la tabla para que
marques Incluir y Clave, muestra una vista previa en vivo e inserta el
comando en el editor (MERGE sale en ANSI; si el controlador no lo admite, aparece un
aviso). En la propia cuadrícula de resultados, el botón Generar SQL de la
barra inferior construye un INSERT/UPDATE/DELETE prerellenado con los valores
de la fila seleccionada (disponible cuando la consulta es un
SELECT de una sola tabla). Los nombres de tablas y columnas que
exploras en el árbol también empiezan a aparecer en el autocompletado
(Ctrl+Espacio) de los editores .sql de la conexión, sin consultas
adicionales a la base de datos.
Diagrama ER: en el menú contextual de la carpeta Tablas, Diagrama ER
de las tablas las dibuja todas; en el de una tabla, Diagrama ER (esta tabla y las que
referencia) dibuja esa y las que apuntan sus claves foráneas. El resultado es una nota en
Diccionario de Datos con un bloque mermaid erDiagram — columnas
con tipo, PK/FK, y cada clave foránea como relación (opcional cuando la columna
acepta NULL, uno a uno cuando la clave es la propia clave primaria). Es texto en la nota: se
versiona en Git y se edita como cualquier diagrama. Por encima de 40 tablas las demás quedan
fuera, y la nota dice cuántas.
Importar un archivo a una tabla: Importar archivo a una tabla… (en el
menú de la conexión y en el de la carpeta Tablas) e Importar archivo a esta tabla…
(en el de una tabla) llevan un CSV, TSV u hoja de Excel a la base — el camino de vuelta de
Exportar resultado. La ventana muestra la vista previa con el tipo leído de cada columna: un
tipo solo vale si todas las celdas coinciden (entero sin cero a la izquierda —
01310 es un código y queda como texto —, decimal con punto o con coma, fecha ISO,
verdadero/falso); la fecha dd/mm/aaaa queda como texto, porque el mes puede ir
primero. La celda vacía se vuelve NULL. El separador se detecta como en la vista de tabla.
Crear la tabla usa el nombre del archivo; Añadir a la tabla comprueba antes que las
columnas del archivo existan en ella. Todo va en una sola transacción: si falla una fila,
no queda nada — y la tabla creada en esta importación se borra. Los bloqueos valen aquí también:
la conexión de solo lectura rechaza, y la de producción pregunta antes. En una conexión DuckDB el
CSV lo lee la base directamente, sin límite de filas; en las demás, el límite es de 100 000
filas.
Exportar, variables y transacciones
Exportar resultados: haz clic derecho en la cuadrícula de resultados y elige
Exportar resultado... para escribir CSV (delimitador, carácter de
comilla, entrecomillar siempre, fila de encabezado, texto NULL), JSON Lines o
SQL (instrucciones INSERT con un nombre de tabla), con un límite
de filas opcional. La exportación recorre la consulta completa en modo
streaming (re-obtención paginada), no solo lo visible en pantalla.
Resultado en la nota del día: en el menú Exportar de la cuadrícula,
Añadir a la nota del día lleva la tabla tal como está en pantalla — las columnas visibles,
en el orden de la cuadrícula, con el recorte de la búsqueda y del filtro — y, justo debajo, la
consulta en un bloque sql: la nota guarda de dónde salió el número. El NULL
aparece como NULL, los números quedan alineados a la derecha, y una línea en cursiva
dice cuándo la tabla no es el resultado entero (las primeras 200 filas, o solo las ya
cargadas).
Variables de script: usa @set nombre = valor en una
línea del script para definir una variable — el prefijo @ la mantiene
fuera de la base (no choca con el SET real de Postgres/DuckDB/SQL
Server). Las referencias :nombre se sustituyen antes de ejecutar
(fuera de cadenas y comentarios; el cast ::tipo y los binds como
:1 quedan intactos); un :nombre sin valor abre un aviso
antes de ejecutar. El elemento Variables… del menú de Ejecutar abre la
pantalla de las variables ya definidas (editar/añadir/quitar).
Parámetros: al ejecutar una instrucción con :nombre — o con
?, ?1, ?2, salvo en PostgreSQL, donde
? es un operador de JSON —, la ventana Parámetros de la consulta
muestra la instrucción y todos sus parámetros ya rellenos con el último valor usado, y la
lista de cada uno guarda los valores anteriores: repetir con otro valor es cambiar un
campo. El valor entra en el SQL tal cual, así que el texto va entre comillas simples
('abc'). Lo que el script define con @set no se pregunta.
Desmarca Preguntar en cada ejecución para que la pestaña use los últimos valores
sin preguntar; para cambiarlos después, usa Variables….
Historial de consultas: el elemento Historial… del menú
de Ejecutar abre una ventana con las últimas instrucciones ejecutadas con
éxito en esta conexión, en las columnas SQL / Cuándo / Duración / Filas.
Selecciona una para Volver a ejecutar, Insertar en el editor o
Copiar (doble clic inserta), o usa Limpiar historial. Se guarda
solo en la máquina local (no va a Git ni al .lnc).
Historial de todas las conexiones: en la ventana del historial, marca Todas las conexiones para ver las consultas de todas las bases, de la más reciente a la más antigua, con la columna de la conexión, y buscar en todas con el campo de filtro. Volver a ejecutar vale solo para las consultas de esta conexión; las de otra se insertan en el editor, para ejecutarlas en la base correcta.
Transacciones: la opción Autocommit (activada por defecto) está en el menú de Ejecutar. Con ella desactivada, los cambios quedan pendientes hasta que los confirmes (Commit) o los descartes (Rollback), y la barra de la pestaña muestra Transacción · N pendientes, con los dos comandos. Cerrar la pestaña, cambiar de conexión o desconectar con una transacción abierta pregunta qué hacer.
Índice
Edición
- Visión general
- Primeros pasos
- Espacio de trabajo y ventanas
- Panel de actividades: tareas y mensajes
- Editor de código
- Markdown y wikilinks
- Diagramas (Mermaid)
- Matemáticas y química (LaTeX)
- Calendario en la nota
- Numeración y referencia cruzada
- Citas y referencias
- Norma del trabajo académico
- Grafo de conexiones
- Tablas (Parquet, CSV, JSON, Excel)
- Área de análisis: tabla dinámica y varios gráficos
- PDF e imágenes
- Imágenes: marcar una captura
- Páginas HTML (.html)
- Imprimir
- Zip como carpeta (.zip)
- Bloques (.lnb)
- Tareas (Kanban / Gantt)
- Tabla personalizada (.lnd)
- Bases (consultas guardadas sobre las notas)
Herramientas
- Buscar en archivos y Pendientes
- Control de versiones (Git fácil)
- Instantáneas y copia de seguridad
- Revisar cambios (puntos de control)
- Comparar archivos (diff)
- Ejecutar código (F5)
- Terminal y CLIs de IA
- Asistente de IA en la selección (Ctrl+K / Ctrl+I)
- IA en tu equipo
- Sesiones de IA
- Chat con IA
- Probar APIs HTTP (.lnh)
- Bases de datos (.lnc)
- Conexión SSH (.lns)
- Seguridad: Frase de paso, PIN y Markdown seguro
- Notas diarias, captura rápida y bandeja
- Reencontrar notas antiguas
- Tus notas en el móvil
- Grabar audio (voz, reunión) con transcripción por IA
- Notas adhesivas
- Calendario
- Paleta de comandos
Automatización (IA / scripts)
Referencia