Riepilogo :in questo tutorial ti presenteremo i comandi SQLite più comunemente usati del programma a riga di comando sqlite3.
Il progetto SQLite fornisce un semplice strumento da riga di comando denominato sqlite3 (o sqlite3.exe su Windows) che consente di interagire con i database SQLite utilizzando istruzioni e comandi SQL.
Connetti a un database SQLite
Per avviare sqlite3, digita sqlite3 come segue:
>sqlite3
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
Code language: Shell Session (shell)
Per impostazione predefinita, una sessione SQLite utilizza il database in memoria, quindi tutte le modifiche andranno perse al termine della sessione.
Per aprire un file di database, usa il .open FILENAME
comando. La seguente istruzione apre il chinook.db
banca dati:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Se vuoi aprire un file di database specifico quando ti connetti al database di SQlite, usa il seguente comando:
>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
sqlite>
Code language: Shell Session (shell)
Se avvii una sessione con un nome di database che non esiste, lo strumento sqlite3 creerà il file di database.
Ad esempio, il comando seguente crea un database denominato sales
nel C:\sqlite\db\
directory:
>sqlite3 c:\sqlite\db\sales.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite>
Code language: Shell Session (shell)
Mostra tutti i comandi disponibili e i loro scopi
Per mostrare tutti i comandi disponibili e il loro scopo, usa il .help
comando come segue:
.help
Code language: Shell Session (shell)
Mostra i database nella connessione al database corrente
Per mostrare tutti i database nella connessione corrente, usa .databases
comando. I .databases
comando visualizza almeno un database con il nome:main
.
Ad esempio, il comando seguente mostra tutti i database della connessione corrente:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
Per aggiungere un database aggiuntivo nella connessione corrente, utilizzare l'istruzione ATTACH DATABASE
. La seguente istruzione aggiunge il chinook
database alla connessione corrente.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Ora se esegui .databases
comando di nuovo, sqlite3 restituisce due database:main
e chinook
.
sqlite> .databases
seq name file
--- --------------- ---------------------
0 main c:\sqlite\db\sales.db
2 chinook c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Esci dallo strumento sqlite3
Per uscire dal programma sqlite3, usa .exit
comando.
sqlite>.exit
Code language: Shell Session (shell)
Mostra tabelle in un database
Per visualizzare tutte le tabelle nel database corrente, usa .tables
comando. I seguenti comandi aprono una nuova connessione al database al chinook
database e visualizzare le tabelle nel database.
>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite> .tables
albums employees invoices playlists
artists genres media_types tracks
customers invoice_items playlist_track
sqlite>
Code language: Shell Session (shell)
Se vuoi trovare le tabelle in base a uno schema specifico, usa il .table
comando modello. sqlite3 usa il LIKE
operatore per la corrispondenza dei modelli.
Ad esempio, l'istruzione seguente restituisce la tabella che termina con la stringa es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Mostra la struttura di una tabella
Per visualizzare la struttura di una tabella, si utilizza il .schema TABLE
comando. La TABLE
l'argomento potrebbe essere un modello. Se lo ometti, il .schema
il comando mostrerà le strutture di tutte le tabelle.
Il comando seguente mostra la struttura degli albums
tabella.
sqlite> .schema albums
CREATE TABLE "albums"
(
[AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[Title] NVARCHAR(160) NOT NULL,
[ArtistId] INTEGER NOT NULL,
FOREIGN KEY ([ArtistId]) REFERENCES "artists" ([ArtistId])
ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE INDEX [IFK_AlbumArtistId] ON "albums" ([ArtistId]);
sqlite>
Code language: Shell Session (shell)
Per mostrare lo schema e il contenuto di sqlite_stat
tabelle, usi il .fullschema
comando.
sqlite>.fullschema
Code language: CSS (css)
Mostra indici
Per mostrare tutti gli indici del database corrente, usa .indexes
comando come segue:
sqlite> .indexes
IFK_AlbumArtistId
IFK_CustomerSupportRepId
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
IFK_InvoiceLineInvoiceId
IFK_InvoiceLineTrackId
IFK_PlaylistTrackTrackId
IFK_TrackAlbumId
IFK_TrackGenreId
IFK_TrackMediaTypeId
Code language: Shell Session (shell)
Per mostrare gli indici di una tabella specifica, usa la .indexes TABLE
comando. Ad esempio, per mostrare gli indici degli albums
tabella, utilizzare il seguente comando:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
Per mostrare gli indici delle tabelle i cui nomi terminano con es
, utilizzi un pattern dell'operatore LIKE.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Salva il risultato di una query in un file
Per salvare il risultato di una query in un file, utilizza il .output FILENAME
comando. Dopo aver emesso il .output
comando, tutti i risultati delle query successive verranno salvati nel file che hai specificato nel FILENAME
discussione. Se vuoi salvare il risultato della successiva singola query solo nel file, emetti il .once FILENAME
comando.
Per visualizzare nuovamente il risultato della query sullo standard output, emetti .output
comando senza argomenti.
I seguenti comandi selezionano il title
dagli albums
tabella e scrivi il risultato in albums.txt
file.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Esegui istruzioni SQL da un file
Supponiamo di avere un file chiamato commands.txt
nel c:\sqlite\
cartella con il seguente contenuto:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
Per eseguire le istruzioni SQL nel commands.txt
file, usi il .read FILENAME
comando come segue:
sqlite> .mode column
sqlite> .header on
sqlite> .read c:/sqlite/commands.txt
AlbumId Title
---------- ----------------------
156 ...And Justice For All
257 20th Century Masters -
296 A Copland Celebration,
94 A Matter of Life and D
95 A Real Dead One
96 A Real Live One
285 A Soprano Inspired
139 A TempestadeTempestade
203 A-Sides
160 Ace Of Spades
Code language: Shell Session (shell)
In questo tutorial, hai appreso molti comandi utili nello strumento sqlite3 per eseguire varie attività che riguardano il database SQLite.