Iniziare con SQLite3 – Comandi di base

SQLite è una libreria C che implementa un motore di database SQL. È un sistema di gestione di database relazionali (o RDBMS). La maggior parte dei database SQL lavora con il modello client/server. Prendete MySQL per esempio. Per inserire e ricevere dati da un database MySQL è necessario inviare una richiesta al server MySQL, che alla ricezione vi fornirà la risposta appropriata. Contrariamente a MySQL, i database SQLite sono gestiti direttamente dal disco. Non c’è bisogno di creare richieste al server.

SQLite370.svg (Custom)

Installazione

Opereremo sul nostro database usando la sqlite31 Command Line Interface(CLI). Lavoreremo sotto la piattaforma Linux. sqlite3 CLI per MAC OS e Windows sono uguali, ma per coerenza, si raccomanda di installare Homestead Improved – una leggera VM eseguibile in 5 minuti che terrà il tuo computer pulito da software extra non necessari.

Per installarlo su Homestead Improved (o su qualsiasi sistema operativo basato su Debian come Ubuntu), eseguire quanto segue:

sudo apt-get install sqlite3 libsqlite3-dev

Questo installerà sqlite3. Per installarlo su altre piattaforme, seguite le loro istruzioni ufficiali. Dopo che è stato installato, possiamo avviare la sessione. Aprite il terminale/linea di comando e inserite il comando sqlite3. Dovete vedere qualcosa di questo tipo :

CLI sqlite3

La seconda linea vi dice di inserire .help per le istruzioni. C’è un prompt che ti aspetta per digitare un comando. Quindi vai avanti e inserisci .help. Questo vi darà una lista di Meta Comandi e le loro descrizioni.

Meta Comandi

I Meta Comandi sono usati per definire il formato di output per le tabelle, esaminare i database e per altre operazioni amministrative. Iniziano sempre con un punto. Anche .help è un meta-comando. Potete scorrere la lista. Eccone alcuni che vi torneranno spesso utili:

Comando Descrizione
.show Visualizza le impostazioni correnti per vari parametri
.databases Fornisce nomi di database e file
.quit Chiude il programma sqlite3
.tables Mostra le tabelle correnti
.schema Visualizza lo schema della tabella
.header Visualizza o nasconde l’intestazione della tabella di output
.mode Seleziona la modalità per la tabella di output
.dump Dump database in formato testo SQL

Comandi standard

Passiamo attraverso i comandi standard in sqlite3. I meta-comandi sono emessi per esaminare un database. I comandi SQL standard sono emessi per operare su un database. I comandi standard possono essere classificati in tre gruppi:

  • Linguaggio di definizione dei dati: Fornisce la struttura di memorizzazione e i metodi per accedere ai dati dal sistema di database.

    • CREATE
    • ALTER
    • DROP
  • Linguaggio di manipolazione dei dati: Permette agli utenti di manipolare (aggiungere/modificare/eliminare) i dati.

    • INSERT
    • UPDATE
    • DELETE
  • Data Query Language: Permette agli utenti di recuperare i dati richiesti dal database.

    • SELECT

Nota: SQLite comprende molti altri comandi standard, un elenco dei quali può essere letto qui. Dato che il tutorial è un’introduzione per principianti, copriremo solo i comandi sopra menzionati.

I database SQLite sono file portatili multipiattaforma. Possono essere memorizzati su vari dispositivi di archiviazione e possono essere trasferiti su diversi computer.

Impareremo a lavorare con sqlite3 con il nostro database Comment Section. Quasi ogni sito web oggi ha una sezione commenti. Per pubblicare un commento, l’utente deve inserire i seguenti dettagli:

  • Nome
  • Email
  • Sito web
  • Commento

Di questi quattro, solo l’URL del sito è opzionale. Dobbiamo anche definire una colonna che numera i commenti. Chiamiamola post_id.

Possiamo definire i tipi di dati delle colonne (attributi) come segue:

Attributo Datotipo richiesto
post_id INTEGER
name TEXT
email TEXT
website_url TEXT
commento TEXT

Si può vedere la documentazione per diversi tipi di dati e classi di archiviazione forniti in SQLite3.

SQLite3 usa Manifest Typing2. La maggior parte degli altri motori di database, incluso MySQL, usa lo Static Typing.

Ora creiamo un database. Se sei ancora nel programma sqlite3, chiudilo inserendo .quit al prompt di sqlite. Poi, dai il comando:

sqlite3 comment_section.db

Questo creerà un file di database comment_section.db nella directory di lavoro corrente.

Nota: se nessun nome di file segue il comando, sqlite3 crea automaticamente un database temporaneo. È quello che è successo quando abbiamo inserito il singolo comando sqlite3 per la prima volta.

CREATE TABLE

Per memorizzare i commenti dobbiamo definire una tabella. Chiamiamola . Per crearla, inserire l’istruzione:

CREATE TABLE comments ( post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL, website_url TEXT NULL, comment TEXT NOT NULL );

NOT NULL si assicura che il valore particolare non venga lasciato vuoto in un record. PRIMARY KEY3 e AUTOINCREMENT4 elaborano l’attributo post_id.

Per controllare se la tabella è stata creata, emetti il meta comando .tables. Verrà visualizzato il nome della tabella .

Crea commenti sulla tabella

Nota: Per ottenere lo schema della tabella inserire .schema comments

Ora che la tabella è stata creata, dobbiamo inserire i dati.

INSERT ROWS

Supponiamo che un utente abbia inserito un commento con i dettagli:

Name : Shivam MamgainEmail : [email protected] : shivammg.blogspot.comComment : Great tutorial for beginners. 

Per inserirlo, usiamo il comando INSERT.

INSERT INTO comments ( name, email, website_url, comment )VALUES ( 'Shivam Mamgain', '[email protected]','shivammg.blogspot.com', 'Great tutorial for beginners.' );

Non ho fornito il valore di post_id, anche se è definito come NOT NULL. Il fatto è che non è necessario perché è un campo AUTOINCREMENT.

Inserite altre righe nella tabella per fare pratica.

SELECT

Abbiamo imparato a inserire dati nella tabella. Per recuperare i dati usiamo il comando SELECT.

SELECT post_id, name, email, website_url, commentFROM comments;

La dichiarazione di cui sopra può anche essere scritta come:

SELECT *FROM comments;

Questo recupererà tutte le righe dalla tabella. La tabella risultante potrebbe sembrare offuscata senza le intestazioni e la corretta separazione tra le colonne. Per ovviare a ciò, dobbiamo modificare alcuni parametri.

Inserire .show

show

Per visualizzare gli attributi delle colonne, inserire .headers ON.
Per visualizzare le righe in stile colonna, inserire .mode column.
Inserisci di nuovo l’istruzione SELECT.

Visualizzazione a colonne

Nota: Seleziona una modalità di visualizzazione che ti piace. Inserisci .help e cerca .mode. Ti verranno mostrati i vari valori che .mode può avere.

Aggiornamento

Supponiamo che l’email di ‘Shivam Mamgain’ sia stato cambiato in ‘[email protected]’. Abbiamo bisogno di aggiornare la riga. Emettere la seguente dichiarazione:

UPDATE commentsSET email = '[email protected]'WHERE name = 'Shivam Mamgain';

Questo cambierà l’attributo email per il nome ‘Shivam Mamgain’ in ‘[email protected]’.

Nota: L’attributo name non è unico, quindi la dichiarazione di cui sopra può interessare più di una riga. Per ogni nome = ‘Shivam Mamgain’ l’email sarà impostata su ‘[email protected]’. Per aggiornare una riga particolare usa l’attributo post_id. E’ definito come PRIMARY KEY e sarà sempre unico.

DELETE

Per cancellare una riga dalla tabella possiamo usare la condizione WHERE, proprio come in UPDATE.

Supponiamo di dover cancellare una riga con post_id 9. Possiamo inserire il comando:

DELETE FROM commentsWHERE post_id = 9;

Abbiamo bisogno di cancellare tutti i commenti postati da ‘Bart Simpson’ e ‘Homer Simpson’. Possiamo eseguire la seguente query:

DELETE FROM commentsWHERE name = 'Bart Simpson' OR name = 'Homer Simpson';

ALTER

Nuove colonne possono essere aggiunte ad una tabella usando ALTER. Sul web, molte persone non usano necessariamente il loro vero nome. Generalmente lavorano sotto uno pseudonimo, un nome utente. Abbiamo bisogno di aggiungere una colonna username alla nostra tabella. La query qui sotto realizza il compito:

ALTER TABLE commentsADD COLUMN username TEXT;

Questo creerà una colonna username in e imposterà il suo datatype a TEXT. Il valore di username per le righe già inserite sarà impostato a NULL.

Il comando ALTER è usato anche per rinominare le tabelle. Cambiamo la tabella in Coms.

ALTER TABLE commentsRENAME TO Coms;

DROP

Cancellare una tabella significa cancellare l’intera tabella. La tabella Coms può essere cancellata con la seguente query:

DROP TABLE Coms;

Conclusione

SQLite3 offre molti vantaggi rispetto ad altri database relazionali. Alcune delle sue caratteristiche distintive possono essere lette qui. La maggior parte dei framework PHP e molti altri framework web tra cui Django, Ruby on Rails e web2py hanno SQLite3 come database predefinito. La sua leggerezza lo rende preferibile per l’archiviazione locale nei browser web. È anche impiegato come memoria client per molti sistemi operativi, compresi Android e Windows Phone 8. È uno dei motori di database più ampiamente distribuiti.

Nel tutorial abbiamo interagito con un sistema di database SQLite. Ci sono applicazioni GUI per fare lo stesso, senza dover imparare i comandi. Due di queste applicazioni sono il DB Browser per SQLite e SQLiteStudio. Puoi anche fare pratica con SQL online su SQL Fiddle.

Questa guida ha coperto le basi per iniziare con SQLite3. Spero che vi invoglierà ad andare oltre. Puoi facilmente integrarlo con PHP usando la comune classe PDO.

  1. sqlite versione 3
  2. Manifest Typing libera molte restrizioni sul tipo di valore che può essere inserito per un particolare campo. Questo permette di inserire qualsiasi valore di qualsiasi tipo di dato in una colonna, indipendentemente dal tipo dichiarato della colonna (tranne che per INTEGER PRIMARY KEY). Non è nemmeno richiesto di fornire la dimensione massima per i tipi di dati. Dopo che l’utente inserisce i dati, SQLite determina la dimensione che richiederebbe sul disco. Per avere una visione più approfondita fate riferimento a Datatypes in SQLite3.
  3. Un PRIMARY KEY può definire univocamente una riga particolare. Tale attributo deve essere sempre definito come NOT NULL.
  4. AUTOINCREMENT imposta automaticamente l’attributo corrispondente del record attualmente inserito su un numero che è uno più il valore di AUTOINCREMENT (se non specificato). AUTOINCREMENT gli attributi definiti devono necessariamente essere INTEGERS.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *