SQLite-libreria-software | Linuxiano.it
Privacy Policy

SQLite-libreria-software

SQLite-libreria-software

SQLite-libreria-software scritta in linguaggio C che implementa un DBMS SQL di tipo ACID incorporabile all’interno di applicazioni

Il suo creatore, D. Richard Hipp, lo ha rilasciato nel pubblico dominio, rendendolo utilizzabile quindi senza alcuna restrizione. Permette di creare una base di dati (comprese tabelle, query, form, report) incorporata in un unico file, come nel caso dei moduli Access di Microsoft Office e Base di OpenOffice.org e Libre Office; analogamente a prodotti specifici come Paradox o Filemaker.

SQLite non è un processo standalone utilizzabile di per sé, ma può essere incorporato all’interno di un altro programma. È utilizzabile con il linguaggio C/C++, ed esistono binding anche per altri linguaggi, in particolare Tcl. È inoltre stato integrato nella versione 5 di PHP, consentendo a tale popolare linguaggio di disporre di un altro RDBMS indipendentemente dalla presenza di MySQL. Viene utilizzato in Mozilla Firefox e Seamonkey per memorizzare i segnalibri, la cronologia di navigazione ed altre informazioni.

Caratteristiche e limitazioni

  • è compatta (meno di 500KB per l’intera libreria alla versione 3.6.14);
  • molto veloce; in molti casi più di MySQL e PostgreSQL;
  • codice sorgente è liberamente disponibile, chiaro e ben commentato;
  • in grado di interpretare stringhe SQL; a differenza di altre librerie simili, supporta buona parte dello standard SQL92;
  • ha la possibilità di interpretare campi in JSON;
  • l’API è semplice da utilizzare;
  • ha transazioni atomiche, consistenti, isolate e durabili (ACID), anche in caso di crash di sistema o blackout;
  • è multipiattaforma;
  • include un programma di utilità a riga di comando per accedere al database anche manualmente (come su MySQL, Postgresql e tanti altri DB) o tramite scripting;
  • supporta database che possono essere anche molto grandi; attualmente il limite è 140TB ( 2 47 {\displaystyle 2^{47}} {\displaystyle 2^{47}} byte) con una riga di dimensione
  • massima pari a 1Gb[1];
  • un database consiste di un unico file, il cui formato interno è indipendente dalla piattaforma e dal relativo ordine dei byte;
  • non ha dipendenze esterne;
  • normalmente non richiede alcun lavoro di amministrazione, ma supporta il comando “SQL VACUUM” nel caso si renda necessario compattare esplicitamente i dati del database.

SQLite presenta dei limiti legati in parte alla finalità di semplice database da incorporare in altre applicazioni:

  • non offre le stored procedure;
  • non prevede la gestione dei permessi d’accesso, demandata al software con cui si interagisce con il database e/o al meccanismo dei permessi del file system;
  • non ha una vera gestione della concorrenza: le applicazioni che lo utilizzano, se necessario, devono implementarla;
  • per garantire la coerenza del file del database sono usati i lock del file system, e quindi vi possono essere problemi qualora quest’ultimo non li implementi correttamente, ad esempio
  • con file system di rete (come NFS);
  • non offre alcuna cache per le query (e non ne ha la possibilità, non esistendo un processo server centrale);
  • non ha protocolli di rete, non essendo utilizzabile come programma a sé; è possibile utilizzare un database remoto, ma solo tramite file system di rete del sistema operativo, con
  • prestazioni difficilmente accettabili;
  • non supporta alcuni importanti costrutti SQL quali RIGHT JOIN e FULL OUTER JOIN;
  • non supporta le sottoquery variabili.
  • non supporta la scrittura diretta nelle viste (occorre usare trigger “INSTEAD OF”);
  • non consente di modificare, cancellare o rinominare le colonne di una tabella: il comando ALTER TABLE è infatti limitato alla modifica del nome della tabella e all’aggiunta di
  • colonne in coda alla stessa. Molti frontend di terze parti aggirano comunque il limite rigenerando in modo trasparente la tabella (perdendo però trigger e indici ad essa correlati);
  • non supporta trigger di tipo “FOR EACH STATEMENT” (solo “FOR EACH ROW”, eventualmente combinato con “INSTEAD OF”);
  • il supporto ai trigger ricorsivi ed ai vincoli sulle chiavi esterne, introdotto rispettivamente nelle versioni 3.6.18 e 3.6.19, deve essere attivato dal programmatore; tale comportamento,
  • dovuto alla compatibilità con le versioni precedenti, sarà modificato a partire dalla versione 3.7.

Una peculiarità di SQLite è la gestione flessibile dei tipi di dati: ogni campo può contenere qualsiasi tipo di dato (o quasi; gestito differentemente nella versione 2 e 3).

Interfacce grafiche per SQLite

Pur gestibile da altre applicazioni, esistono delle interfacce grafiche appositamente sviluppate per SQLite:

  • DaDaBIK (sito)- software proprietario scritto in PHP che permette di creare un Web front-end per SQLite senza scrivere codice. Anche per MySQL e PostgreSQL;
  • SpatiaLite (sito)- estensione per il supporto dei dati geografici all’interno di database SQLite, può essere utilizzato da console o tramite un’interfaccia grafica dedicata.
  • SQLite Database Browser (sito)— è un’applicazione multipiattaforma che consente di amministrare in modo semplificato, con una interfaccia grafica, database di SQLite; Licenza public domain
  • TkSQLite (sito)— applicazione multipiattaforma. Licenza BSD-style
  • sqlite-manager (sito)— è una estensione per browser basati su Gecko (Firefox 3, Thunderbird 3, Seamonkey 2, Sunbird 1.0, Komodo 5.0, etc.) multipiattaforma, che consente di
  • amministrare in modo semplificato, con l’interfaccia grafica del browser, database di SQLite;
  • SQLiteManager (sito)— è un’applicazione multipiattaforma, basata sul web, che consente di amministrare in modo semplificato, con una interfaccia grafica, database di SQLite; Lingua francese
  • Sqliteman (sito)— applicazione realizzata con le librerie Qt4 – versione per GNU/Linux, Mac, Windows, richiede SQLite versione 3.
  • Database Master (sito) per Windows, anche per MySQL, PostgreSQL, FireBird, Oracle, DB2, Informix, ODBC, OleDB, SQL-Server, MongoDB.
  • Sqlite-Workbench (sito) – applicazione online per la gestione grafica di database sql

Diffusione:

Chromium (e quindi anche Google Chrome), Mozilla Firefox e Mozilla Thunderbird memorizzano varie informazioni di configurazione (segnalibri, cookie, contatti della rubrica, ecc) in database SQLite. Skype è un altro software molto diffuso che utilizza SQLite.[4] Adobe Systems utilizza SQLite come formato file in Adobe Photoshop Lightroom, come database di appoggio alle applicazioni in Adobe AIR e internamente in Adobe Reader.

Grazie alle ridotte dimensioni SQLite è particolarmente adatto ai sistemi embedded. SQLite viene inoltre utilizzato su iOS e MacOS per la gestione degli SMS e MMS, per il calendario, la cronologia delle chiamate e la memorizzazione dei contatti. La libreria è inoltre utilizzata in Symbian OS ed Android, sul sistema operativo del BlackBerry e su webOS di Palm.

Installazione di SQLite 3

Prima aggiorna la cache del repository dei pacchetti apt con il seguente comando:

Terminale
  • sudo apt update

La cache del repository dei pacchetti apt dovrebbe essere aggiornata.

Ora per installare SQLite 3 , eseguire il seguente comando:

Terminale
  • sudo apt-get install sqlite3 libsqlite3-dev

Verifica l’ installazione:

Terminale
  • sqlite3 –version

sqlite-libreria-software

Rimuovere

Per rimuovere completamente sqlite3 aprite un terminale e digitate:

Terminale
    sudo apt-get purge –auto-remove sqlite3

Come e quando utilizzare Sqlite

Sqlite è un motore SQL open source molto semplice e veloce.
Questo tutorial spiegherà quando è ottimale utilizzare Sqlite, al contrario di un RDBMS completo come Mysql o Postgres, oltre a come installarlo ed esempi di utilizzo di base che coprono CRUD – Crea, Leggi, Aggiorna ed Elimina.

Non farti ingannare nel pensare che Sqlite sia solo per test e sviluppo. Ad esempio, funziona benissimo per i siti Web che ricevono fino a 100.000 hit al giorno – e questo è un limite prudente. La dimensione massima per un database Sqlite è di 140 Terabyte (che dovrebbe essere sufficiente, giusto?), E può essere sostanzialmente più veloce di un RDBMS completo. Il database completo e tutti gli altri dati necessari sono archiviati in un file normale nel file system dell’host, quindi non è necessario alcun processo server separato (eliminando tutte le necessità di una comunicazione tra processi lenta).
Utilizzo ottimale sul tuo VPS

Sqlite è focalizzato sulla semplicità. Poiché è completamente interno, è spesso significativamente più veloce delle alternative. Se stai cercando portabilità (per quanto riguarda sia le lingue che le piattaforme), semplicità, velocità e un minimo ingombro di memoria, Sqlite è l’ideale. Le sue carenze sono evidenti solo se è necessaria una concorrenza di lettura o scrittura elevata: Sqlite può supportare solo un writer alla volta e la latenza del file system normalmente elevata può essere scomoda se è necessario che molti client accedano contemporaneamente a un database Sqlite. Un ultimo possibile svantaggio è che la sua sintassi, sebbene simile ad altri sistemi SQL, è unica. Mentre è abbastanza banale passare a un altro sistema, se si fa “troppo grande” Sqlite, ci sarà un certo overhead coinvolto nella transizione.

Utilizzo di base dell’interfaccia della riga di comando

Per creare un database, esegui il comando:

Terminale

sqlite>sqlite3 database.db

Dove “database” è il nome del database. Se il file database.db esiste già, Sqlite aprirà una connessione ad esso; se non esiste, verrà creato. Dovresti vedere un output simile a:

SQLite version 3.22.0 2018-01-22 18:45:57
Enter “.help” for usage hints.
sqlite>

Ora creiamo una tabella e inseriamo alcuni dati. Questa tabella denominata “wines” ha quattro colonne: per un documento d’identità, il produttore del vino, il tipo di vino e il paese di origine del vino. Inserirò solo tre vini nel nostro database

:

Terminale

sqlite>CREATE TABLE wines (id integer, producer varchar(30), kind varchar(20), country varchar(20));

sqlite>INSERT INTO WINES VALUES (1, “Rooiberg”, “Pinotage”, “South Africa”);
sqlite>INSERT INTO WINES VALUES (2, “KWV”, “Shiraz”, “South Africa”);
sqlite>INSERT INTO WINES VALUES (3, “Marks & Spencer”, “Pinot Noir”, “France”);

Abbiamo creato il database, una tabella e alcune voci. Ora premi Ctrl + D per uscire da Sqlite e digita quanto segue (sostituendo nuovamente il nome del tuo database con ‘database’), che si riconnetterà al database che abbiamo appena creato:

Terminale

sqlite3 database.db

Ora digita:

Terminale

SELECT * FROM wines;

E dovresti vedere le voci che abbiamo appena creato:

sqlite-libreria-software

Grande. Questo è tutto per creare e leggere. Facciamo un aggiornamento ed eliminiamo:

Terminale

sqlite>UPDATE wines SET country=”South Africa” WHERE country=”France”;

Il che aggiornerà il database in modo che tutti i vini elencati come provenienti dalla Francia saranno invece elencati come provenienti dal Sud Africa. Verifica il risultato con:

Terminale

sqlite>SELECT * FROM wines;

E dovresti vedere:

1|Rooiberg|Pinotage|South Africa

2|KWV|Shiraz|South Africa

3|Marks & Spencer|Pinot Noir|South Africa

sqlite-libreria-software

Ora tutti i nostri vini provengono dal Sudafrica. Beviamo il KWV in celebrazione ed eliminiamolo dal nostro database:

Terminale

sqlite>DELETE FROM wines WHERE id=2; SELECT * FROM wines;

E dovremmo vedere un altro vino elencato nella nostra cantina:

1|Rooiberg|Pinotage|South Africa 3|Marks & Spencer|Pinot Noir|South Africa

E questo copre tutte le operazioni di base del database. Prima di finire, proviamo un altro esempio (leggermente) meno banale, che utilizza due tabelle e un join di base.

Esci da Sqlite con il comando Ctrl + D e riconnettiti a un nuovo database con sqlite3 database2.db .

Creeremo una tabella di wines molto simile, ma anche una tabella dei paesi, che memorizza il nome del paese e l’attuale presidente. Creiamo prima la tabella dei paesi e inseriamo il Sudafrica e la Francia con (nota che contemporaneamente puoi copiare e incollare più righe di codice sqlite):

Terminale

sqlite> CREATE TABLE countries (id integer, name varchar(30), president varchar(30));
sqlite> INSERT INTO countries VALUES (1, “South Africa”, “Jacob Zuma”);
sqlite> INSERT INTO countries VALUES(2, “France”, “Francois Hollande”);

E poi possiamo ricreare la nostra tabella dei vini con:

Terminale

sqlite>CREATE TABLE wines (id integer, kind varchar(30), country_id integer);
INSERT INTO wines VALUES (1, “Pinotage”, 1);
INSERT INTO wines VALUES (2, “Shiraz”, 1);
INSERT INTO wines VALUES (3, “Pinot Noir”, 2);

Ora vediamo che tipo di vino ci sono in Sudafrica con:

Terminale

SELECT kind FROM wines JOIN countries ON country_id=countries.id WHERE countries.name=”South Africa”;

E dovresti vedere:

Pinotage Shiraz

E questo copre un Join di base. Nota che Sqlite è molto utile. Nella precedente istruzione join, per impostazione predefinita è INNER JOIN, sebbene utilizziamo semplicemente la parola chiave JOIN. Inoltre, non è necessario specificare vini.paesi_id quanto non ambiguo. D’altra parte, se proviamo il comando:

Terminale

sqlite> SELECT kind FROM wines JOIN countries ON country_id=id WHERE country_id=1;

Verrà visualizzato il messaggio di errore Error: ambiguous column name: id. Il che è abbastanza giusto in quanto entrambi i nostri tavoli hanno una colonna id. Ma generalmente Sqlite è comprensivo. I suoi messaggi di errore tendono a rendere piuttosto banale individuare e risolvere eventuali problemi e questo aiuta ad accelerare il processo di sviluppo. Per ulteriore assistenza con ulteriori sintassi, la documentazione ufficiale è piena di diagrammi come questo sqlite.org/lang delete.html, che può essere utile, ma se preferisci esempi concreti, ecco un link a un tutorial con una bella panoramica della maggior parte dei tipi di join: <a href=annuncio http://zetcode.com/db/sqlite/joins/ ”target=annuncioblankentare> zetcode.com/db/sqlite/joins/.

Infine, Sqlite ha wrapper e driver in tutte le principali lingue e può essere eseguito sulla maggior parte dei sistemi. Un elenco di molti di essi è disponibile qui. Buona fortuna e buon divertimento.

Per facilitare la lettura dei database creati, possimo usare SQLite Browser.

 

Utilizzo di SQLite tramite SQLite Browser

Ora puoi andare al menu Applicazioni > programmazione e cercare SQLite Browser.

Vedere risultati con utilizzando SQLite Browser

Aprite il vostro file manager, nel mio caso nautilus, e cliccate sopra al database appena creato. Apritelo con il destro del mouse e, scegliete DBbrowser for SQlite… oppure cliccate su open database come mostrato nell’ immagine sottostante.

Selezionate Execute SQL e scrivete:

SELECT * FROM wines;

 

Introduzione a SQLite 3 utilizzando SQLite Browser

In questa sezione, ti mostrerò le basi del database SQLite 3 con l’interfaccia utente grafica del browser SQLite .

Fare prima clic su Nuovo database per creare un nuovo database utilizzando SQLite Browser.

Dovresti vedere la seguente finestra di dialogo. Digita un nome file e salvalo da qualche parte sul tuo filesystem.

sqlite-libreria-software

Dovresti vedere la seguente finestra di dialogo. Digita un nome file e salvalo da qualche parte sul tuo filesystem. per provare ho scritto test

Ora dovresti vedere questa finestra. Usando questa finestra, puoi creare la tua prima tabella SQLite 3.

Inserisci il nome della tabella. Se vuoi seguire, la tabella utenti scrivi utenti.

Ora clicca su pulsante Add field ( aggiungi campo ) per aggiungere tanti campi o colonne sulla tua tabella.

Dopo aver cliccato ul pulsante Add field , dovresti vedere un nuovo campo come indicato nello screenshot qui sotto.

Ho chiamato l’ id campo, ho cambiato il tipo in INTEGER , ho selezionato le caselle di controllo Non null , PK (chiave primaria), AI (incremento automatico).

Ho aggiunto il nome e il campo Paese, ho impostato il Tipo su TEXT e ho selezionato le caselle di controllo Non null.

Nella sezione contrassegnata dello screenshot qui sotto, puoi trovare il codice SQL. Puoi eseguire questo codice nell’interfaccia della riga di comando di SQLite 3 e creare anche una tabella utenti identica. SQLite Browser è uno strumento fantastico per appoggiare anche SQLite.

Quando sei soddisfatto della tua tabella, clicca su OK.

Complimenti hai creato la tua tabella utenti!

Inserire i dati nella tabella degli utenti.

Prima vai alla scheda Sfoglia dati come indicato nello screenshot qui sotto.

sqlite-libreria-software

Seleziona la tabella utenti dalla sezione contrassegnata dello screenshot qui sotto.

sqlite-libreria-software

Una volta selezionata la tabella  utenti, clicca sul pulsante New record per aggiungere una nuova riga o dati nella tabella.

L’ id dovrebbe essere generato automaticamente. Il nome e il campo Paese devono essere vuoti. Clicca su ciascuno di essi e digita i dati che desideri.

sqlite-libreria-software

Come puoi, ho aggiunto una nuova riga alla tabella degli utenti.

salva le modifiche, clicca su Scrivi modifiche come indicato nella schermata qui sotto.

sqlite-libreria-software

Le modifiche dovrebbero essere scritte sul file system.

Se voui, puoi eseguire istruzioni SQL anche su SQLite Browser.

Per eseguire le istruzioni SQL, vai prima alla scheda Execute SQL come indicato nello screenshot seguente.

sqlite-libreria-software

Ho scritto una semplice istruzione SQL,

SELECT * FROM utenti

Ora se vuoi eseguire l’istruzione SQL, clicca su pulsante play come indicato nello screenshot sotto. Puoi anche premere F5 o Ctrl+r

Come puoi vedere, i dati vengono restituiti.

sqlite-libreria-software

Grazie! per l’utilizzo della Guida di Linuxiano.

Trovi questo tutorial utile? Condividi con i tuoi amici per tenerlo in vita.
Sii il primo a commentare, apprezzo i tuoi suggerimenti. Per ulteriori domande potete commentare qui sotto.

 

 

 

 

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Iscriviti al sito

Il tuo nome (richiesto)

La tua email (richiesto)

Oggetto

Il tuo messaggio


Ho letto

l’informativa Privacy

e autorizzo il trattamento dei miei dati personali per le finalità ivi indicate.

Risolvi il reCAPTCHA per dimostrare che non sei un robot:
[recaptcha]

clicca qui per tornare a Linuxiano