Questa pagina descrive Calíope 1.5, la versione che sto costruendo adesso. La 1.4 è sull'App Store per Mac, iPad, iPhone, Apple Watch, Apple TV e Apple Vision Pro. Il changelog dice in quale versione è arrivata ogni funzione.

Aggiunge a ogni argomento un pulsante «Apri in Calíope». Funziona solo con l'app installata.

Editor SQLite

Editor SQLite

Apri e modifica file SQLite locali senza server.

Dove si trova: Workspace › Strumenti › Editor SQLite

L'Editor SQLite è uno strumento autonomo per file locali .sqlite/.db, in stile DB Browser for SQLite. Ha quattro sezioni: Struttura, Dati, Esegui SQL e Pragmas, e funziona anche senza connessione a un server.

Calíope apre database SQLite non cifrati (SQLCipher non è supportato).

Parole chiave: sqlite, db, locale, database, file

Aprire o creare un database

Apri un file SQLite esistente o creane uno nuovo.

Dove si trova: Workspace › Strumenti › Editor SQLite

Usa Apri… per scegliere un file .sqlite/.db esistente, o Nuovo database… per crearne uno vuoto. I file recenti appaiono nella schermata iniziale. Un contrassegno Sola lettura appare quando un file non può essere modificato.

Parole chiave: aprire, creare, nuovo, recenti, file

Esplorare e progettare la struttura

Sfoglia tabelle, viste, indici e trigger e creali.

La sezione Struttura mostra l'albero dello schema con le colonne e il DDL di ogni oggetto. Usa Nuovo per creare tabelle, indici o viste, Aggiungi colonna o Rinomina tabella sulla tabella selezionata, ed Elimina per eliminare un oggetto.

Parole chiave: struttura, tabella, indice, vista, trigger, creare, ddl, schema

Sfogliare e modificare i dati

Visualizza, filtra, ordina e modifica le righe.

La sezione Dati mostra le righe di una tabella pagina per pagina, con il contatore e le frecce a destra nella barra. Quante righe porta una pagina lo scegli tu in Preferenze › Editor di testo › Risultati › Righe per pagina —Impostazioni, su iPad—: è la stessa preferenza che usano la griglia di Esegui SQL e quella dell'Editor SQL. Ordina premendo l'intestazione di una colonna —premila di nuovo per invertire l'ordine—, restringi colonna per colonna con Filtri, oppure scrivi nel campo di ricerca per cercare in tutte insieme; in entrambi i casi il filtro si applica premendo Invio. Il selettore Tabella elenca le tabelle del file, e non tutte si modificano: su una tabella WITHOUT ROWID, o su una qualsiasi se il file è stato aperto in sola lettura, la barra dice che l'oggetto non può essere modificato invece di offrire i pulsanti.

Modificare una cella

macOS: doppio clic su di essa. iPad: un solo tocco.

Il valore si scrive nella griglia stessa. Invio conferma, e uscire dalla cella —toccarne un'altra, o perdere il focus— conferma anch'esso; Esc annulla e lascia il valore precedente (su iPad, con una tastiera collegata).

L'editor avanzato

Ciò che non sta in una riga si scrive in un foglio a parte. Si apre con il pulsante ⋯ della cella —macOS: al passaggio del puntatore; iPad: nelle celle della riga selezionata, che si marca toccandone il numero— oppure con Editor avanzato… nel menu contestuale (clic destro su macOS, tenere premuto su iPad). Lì lo stesso valore si scrive come testo, come JSON —con un pulsante che lo formatta, e senza lasciar applicare un JSON non valido—, in esadecimale, o si vede come immagine quando i byte lo sono —e quell'immagine si avvicina, dal 100 % all'800 %, con il pizzico, con la rotella o con i pulsanti in basso—; e quei byte si importano da un file e si esportano in un altro. Una cella che contiene già dati binari apre direttamente questo foglio, senza passare dal campo della griglia.

Lasciare una cella a NULL

Nel menu contestuale della cella, Imposta a NULL, senza aprire altro; dentro l'editor avanzato c'è anche come interruttore. Una cella senza valore si disegna come NULL in corsivo. Attenzione: cancellare il contenuto nella griglia e confermare scrive la stringa vuota, che non è la stessa cosa di NULL.

Aggiungere ed eliminare righe

Aggiungi riga apre un modulo con una riga per colonna, il suo tipo e se è obbligatoria. Le colonne che la tabella sa riempire da sola —quelle che dichiarano un valore predefinito e la chiave primaria INTEGER— nascono spuntate perché le scriva il motore: togli la spunta se preferisci mettere il valore tu. Un campo lasciato vuoto viene salvato come NULL, e Inserisci resta disattivato finché una colonna obbligatoria non ha valore —l'avviso accanto dice quale—. Alla conferma viene emessa una sola istruzione INSERT, che nomina solo le colonne con valore. Per eliminare, seleziona la riga dal suo numero e usa Elimina riga, o il menu contestuale di una qualsiasi delle sue celle.

Niente di tutto questo tocca il file finché non premi Salva modifiche: ciò che modifichi resta in una transazione in sospeso che Ripristina modifiche annulla per intero.

Parole chiave: dati, righe, modificare, filtrare, ordinare, cercare, cella, blob, null, inserire, nuova riga, eliminare, json, hex, immagine

Scrivere ed eseguire SQL

Evidenziazione della sintassi, completamento e una griglia di risultati con limite di righe.

La sezione Esegui SQL usa lo stesso campo di testo e la stessa griglia di risultati dell'Editor SQL di server, ma sul file aperto e senza nessuna connessione di mezzo.

Scrivere ed eseguire

Il testo è evidenziato: parole chiave, stringhe, numeri e commenti, ciascuno con il suo colore. Premi Esegui, o ⌘↩ da dentro il testo, e viene eseguito l'intero script. Quello che si disegna sotto è il risultato dell'ultima istruzione che ha restituito righe; se nessuna ne ha restituite, si dice quante righe sono state interessate. Un errore ferma lo script su quell'istruzione e mostra il messaggio del motore così com'è.

Ciò che scrive nel file —un INSERT, un UPDATE, un CREATE TABLE— resta in sospeso, proprio come una modifica fatta in Dati: non tocca il file fino a Salva modifiche, e Ripristina modifiche annulla tutto.

Completamento

Il pannello dei suggerimenti porta le parole chiave SQL e le tabelle del file aperto con le loro colonne —tutte, non solo quelle della tabella selezionata in Struttura—, e si aggiorna dopo ogni cambio di schema.

Si apre a mano e non compare mai da solo mentre scrivi. Su macOS con ⌥Esc e almeno l'inizio della parola scritto: l'elenco nasce da quel prefisso, con le parole chiave davanti e i nomi del file dopo, e il nome si inserisce così com'è. Su iPad con il pulsante Completamento nell'intestazione della sezione, che apre il pannello in qualsiasi momento e non richiede tastiera; lì, accettare una tabella o una colonna la scrive tra accenti gravi —`mia_tabella`—, che SQLite accetta come le virgolette doppie.

Le parole chiave e l'aiuto delle funzioni sono quelli dell'SQL generale di Calíope, non quelli di SQLite: funzioni proprie come julianday() o printf() si eseguono senza problemi, ma non vengono suggerite.

La griglia di risultati

Le righe vanno per pagine, e quante ne stanno in una lo scegli in Preferenze › Editor di testo › Risultati › Righe per pagina —Impostazioni, su iPad—: la stessa preferenza che usano la sezione Dati e l'Editor SQL.

Su macOS puoi ordinare premendo l'intestazione di una colonna —l'ordine è del client e riguarda tutte le righe arrivate, non solo la pagina che hai davanti—, cambiare la larghezza di una colonna trascinandone il bordo, nascondere o riordinare le colonne dall'intestazione, scegliere più righe con ⇧ o ⌘ e copiarle con ⌘C, che le lascia in TSV con i nomi delle colonne davanti. Su iPad si cambia pagina con i pulsanti in basso e le colonne si misurano da sole.

In entrambi, trascinare una riga fuori dall'app la porta in un'altra come tabella, e il menu contestuale di una cella —clic destro su macOS, pressione prolungata su iPad— copia il suo valore, lo mostra intero ed esporta la riga in CSV.

Quello che si vede qui non si modifica: per cambiare un dato c'è la sezione Dati.

Il limite di righe

Un SELECT grande non viene portato intero: viene tagliato al Preferenze › Editor di testo › Risultati › Limite di righe, lo stesso limite che usa l'Editor SQL. Quando taglia, la griglia lo dice sotto le righe e offre Carica tutte, che riesegue la query senza limite. Con il limite a zero non si taglia mai.

Schede delle funzioni

Passando il puntatore su una funzione su macOS, o mettendoci il cursore di testo su iPad, appare la sua scheda, quella di SQLite: sintassi, ritorno, parametri e un esempio. Lo spiega l'argomento Aiuto contestuale delle funzioni SQL.

Parole chiave: esegui, sql, evidenziazione, sintassi, completamento, suggerimenti, griglia, risultati, ordinare, copiare, trascinare, limite, righe, pagina

Salvare e ripristinare le modifiche

Le modifiche restano in sospeso finché non le salvi.

Le modifiche sono raggruppate in una transazione in sospeso. Un punto ambra indica modifiche non salvate. Usa Salva modifiche per confermare o Ripristina modifiche per annullarle. La chiusura con modifiche in sospeso richiede conferma.

Parole chiave: salvare, ripristinare, confermare, transazione, modifiche

Importare ed esportare

Importa CSV ed esporta in CSV, JSON o SQL.

Da Importa / Esporta puoi importare un file CSV —diventa una tabella con il nome del file e colonne di testo, oppure le sue righe si aggiungono se quella tabella esiste già—, esportare la tabella aperta in Dati in CSV o JSON, o esportare l'intero database in un dump SQL (schema e dati). Un'importazione resta in sospeso, come qualsiasi modifica, fino a Salva modifiche.

Parole chiave: importare, esportare, csv, json, sql, dump, backup

Pragma e manutenzione

Modifica i pragma del file, controllalo e compattalo.

La sezione Pragmas mostra le impostazioni del file. Quelli in Modificabili —Chiavi esterne, Auto-vacuum e gli altri— cambiano all'istante, e quelli numerici con Applica. Agiscono subito, fuori dalla transazione in sospeso, quindi restano disattivati finché ci sono modifiche non salvate: salva o ripristina prima. Alcuni, come l'auto-vacuum, hanno effetto solo dopo un VACUUM.

Manutenzione controlla il file —Verifica integrità, Verifica chiavi esterne— o lo riordina —VACUUM, ANALYZE, REINDEX—, e la risposta del motore compare sotto i pulsanti. Gli altri pragma sono elencati in Sola lettura con il loro valore attuale.

Parole chiave: pragma, manutenzione, integrità, vacuum, analyze, reindex, chiavi esterne