Samenvatting: in deze tutorial introduceren we de meest gebruikte SQLite commando’s van het sqlite3 command-line programma.
Het SQLite project levert een eenvoudig command-line programma genaamd sqlite3 (of sqlite3.exe op Windows) waarmee u kunt communiceren met de SQLite databases door gebruik te maken van SQL statements en commando’s.
Verbinden met een SQLite database
Om sqlite3 te starten, typt u het sqlite3 als volgt:
Code language: Shell Session (shell)>sqlite3SQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.Connected to a transient in-memory database.Use ".open FILENAME" to reopen on a persistent database.sqlite>
Het is standaard dat een SQLite sessie gebruik maakt van de in-memory database, daarom zijn alle wijzigingen verdwenen als de sessie eindigt.
Om een database bestand te openen, gebruikt u het .open FILENAME
commando. Het volgende commando opent de chinook.db
database:
Code language: Shell Session (shell)sqlite> .open c:\sqlite\db\chinook.db
Als u een specifiek databasebestand wilt openen wanneer u verbinding maakt met de SQlite-database, gebruikt u het volgende commando:
Code language: Shell Session (shell)>sqlite3 c:\sqlite\db\chinook.dbSQLite version 3.13.0 2016-05-18 10:57:30Enter ".help" for usage hints.sqlite>
Als u een sessie start met een databasenaam die niet bestaat, maakt het sqlite3-hulpprogramma het databasebestand aan.
Het volgende commando maakt bijvoorbeeld een database aan met de naam sales
in de directory C:\sqlite\db\
:
Code language: Shell Session (shell)>sqlite3 c:\sqlite\db\sales.dbSQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.sqlite>
Toon alle beschikbare commando’s en hun doel
Om alle beschikbare commando’s en hun doel te tonen, gebruikt u het .help
commando als volgt:
Code language: Shell Session (shell).help
Toon databases in de huidige databaseverbinding
Om alle databases in de huidige verbinding te tonen, gebruikt u het .databases
commando. Het .databases
commando toont ten minste één database met de naam: main
.
Het volgende commando toont bijvoorbeeld alle databases van de huidige verbinding:
Code language: Shell Session (shell)
Om een extra database in de huidige verbinding toe te voegen, gebruikt u het statement ATTACH DATABASE
. Het volgende statement voegt de chinook
database toe aan de huidige verbinding.
Code language: Shell Session (shell)sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Als je nu het .database
commando opnieuw uitvoert, geeft de sqlite3 twee databases terug: main
en chinook
.
Code language: Shell Session (shell)sqlite> .databasesseq name file--- --------------- ---------------------0 main c:\sqlite\db\sales.db2 chinook c:\sqlite\db\chinook.db
Exit sqlite3 tool
Om het sqlite3 programma te verlaten, gebruikt u het .exit
commando.
Code language: Shell Session (shell)sqlite>.exit
Toon tabellen in een database
Om alle tabellen in de huidige database te tonen, gebruikt u het .tables
commando. De volgende commando’s openen een nieuwe databaseverbinding met de chinook
database en tonen de tabellen in de database.
Code language: Shell Session (shell)>sqlite3 c:\sqlite\db\chinook.dbSQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.sqlite> .tablesalbums employees invoices playlistsartists genres media_types trackscustomers invoice_items playlist_tracksqlite>
Als u tabellen wilt vinden op basis van een specifiek patroon, gebruikt u het .table
patroon commando. sqlite3 gebruikt de LIKE
operator voor het matchen van patronen.
Het volgende statement geeft bijvoorbeeld de tabel terug die eindigt met de string es
.
Code language: Shell Session (shell)sqlite> .table '%es'employees genres invoices media_typessqlite>
De structuur van een tabel weergeven
Om de structuur van een tabel weer te geven, gebruikt u het .schema TABLE
commando. Het TABLE
argument kan een patroon zijn. Als u het weglaat, zal het .schema
commando de structuur van alle tabellen tonen.
Het volgende commando toont de structuur van de albums
tabel.
Code language: Shell Session (shell)sqlite> .schema albumsCREATE TABLE "albums"( INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, NVARCHAR(160) NOT NULL, INTEGER NOT NULL, FOREIGN KEY () REFERENCES "artists" () ON DELETE NO ACTION ON UPDATE NO ACTION);CREATE INDEX ON "albums" ();sqlite>
Om het schema en de inhoud van de sqlite_stat
tabellen te laten zien, gebruikt u het .fullschema
commando.
Code language: CSS (css)sqlite>.fullschema
Toon indexen
Om alle indexen van de huidige database te tonen, gebruikt u het .indexes
commando als volgt:
Code language: Shell Session (shell)sqlite> .indexesIFK_AlbumArtistIdIFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId
Om de indexen van een specifieke tabel te tonen, gebruikt u het .indexes TABLE
commando. Om bijvoorbeeld indexen van de tabel albums
te tonen, gebruikt u het volgende commando:
Code language: CSS (css)sqlite> .indexes albumsIFK_AlbumArtistId
Om indexen te tonen van de tabellen waarvan de naam eindigt op es
, gebruikt u een patroon van de LIKE operator.
Code language: Shell Session (shell)sqlite> .indexes %esIFK_EmployeeReportsToIFK_InvoiceCustomerId
Het resultaat van een query in een bestand opslaan
Om het resultaat van een query in een bestand op te slaan, gebruikt u het .output FILENAME
commando. Zodra u het .output
commando geeft, worden alle resultaten van de volgende query’s opgeslagen in het bestand dat u hebt opgegeven in het FILENAME
argument. Als u het resultaat van de volgende enkele query alleen in het bestand wilt opslaan, geeft u het .once FILENAME
-commando.
Om het resultaat van de query weer te geven op de standaarduitvoer, geeft u het .output
-commando zonder argumenten.
De volgende commando’s selecteren de title
tabel en schrijven het resultaat naar het albums.txt
bestand.
Code language: Shell Session (shell)sqlite> .output albums.txtsqlite> SELECT title FROM albums;
Verricht SQL statements vanuit een bestand
Voorstel dat we een bestand hebben met de naam commands.txt
in de c:\sqlite\
map met de volgende inhoud:
Code language: Shell Session (shell)SELECT albumid, titleFROM albumsORDER BY titleLIMIT 10;
Om de SQL-statements in het commands.txt
bestand uit te voeren, gebruikt u het .read FILENAME
commando als volgt:
Code language: Shell Session (shell)sqlite> .mode columnsqlite> .header onsqlite> .read c:/sqlite/commands.txtAlbumId Title---------- ----------------------156 ...And Justice For All257 20th Century Masters -296 A Copland Celebration,94 A Matter of Life and D95 A Real Dead One96 A Real Live One285 A Soprano Inspired139 A TempestadeTempestade203 A-Sides160 Ace Of Spades
In deze tutorial heb je veel handige commando’s geleerd in de sqlite3 tool om verschillende taken uit te voeren die te maken hebben met de SQLite database.
- Was deze tutorial nuttig?
- Ja/Nee