Samenvatting :in deze tutorial laten we je kennismaken met de meest gebruikte SQLite-opdrachten van het sqlite3-opdrachtregelprogramma.
Het SQLite-project levert een eenvoudig opdrachtregelprogramma genaamd sqlite3 (of sqlite3.exe op Windows) waarmee u kunt communiceren met de SQLite-databases met behulp van SQL-instructies en -opdrachten.
Verbinding maken met een SQLite-database
Om de sqlite3 te starten, typt u de sqlite3 als volgt:
>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)
Standaard gebruikt een SQLite-sessie de in-memory database, daarom zijn alle wijzigingen verdwenen wanneer de sessie eindigt.
Om een databasebestand te openen, gebruikt u de .open FILENAME
opdracht. De volgende instructie opent de chinook.db
databank:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Als u een specifiek databasebestand wilt openen wanneer u verbinding maakt met de SQlite-database, gebruikt u het volgende commando:
>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)
Als u een sessie start met een databasenaam die niet bestaat, zal de sqlite3-tool het databasebestand maken.
Met de volgende opdracht wordt bijvoorbeeld een database gemaakt met de naam sales
in de C:\sqlite\db\
map:
>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)
Toon alle beschikbare commando's en hun doel
Om alle beschikbare commando's en hun doel te tonen, gebruik je de .help
commando als volgt:
.help
Code language: Shell Session (shell)
Toon databases in de huidige databaseverbinding
Om alle databases in de huidige verbinding te tonen, gebruikt u de .databases
opdracht. De .databases
opdracht geeft ten minste één database weer met de naam:main
.
Het volgende commando toont bijvoorbeeld alle databases van de huidige verbinding:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
Om een extra database in de huidige verbinding toe te voegen, gebruikt u de instructie ATTACH DATABASE
. De volgende verklaring voegt de chinook
. toe database naar de huidige verbinding.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Als u nu de .database
. uitvoert commando nogmaals, de sqlite3 retourneert twee databases:main
en 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)
Sqlite3-tool afsluiten
Om het sqlite3-programma af te sluiten, gebruikt u de .exit
commando.
sqlite>.exit
Code language: Shell Session (shell)
Toon tabellen in een database
Om alle tabellen in de huidige database weer te geven, gebruikt u de .tables
opdracht. De volgende opdrachten openen een nieuwe databaseverbinding met de chinook
database en geef de tabellen in de database weer.
>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)
Als je tabellen wilt vinden op basis van een specifiek patroon, gebruik je de .table
patroon commando. De sqlite3 gebruikt de LIKE
operator voor patroonherkenning.
De volgende instructie retourneert bijvoorbeeld de tabel die eindigt met de tekenreeks es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Toon de structuur van een tabel
Om de structuur van een tabel weer te geven, gebruikt u de .schema TABLE
opdracht. De TABLE
argument kan een patroon zijn. Als u het weglaat, wordt de .schema
commando toont de structuren van alle tabellen.
Het volgende commando toont de structuur van de albums
tafel.
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)
Om het schema en de inhoud van de sqlite_stat
te tonen tabellen, gebruik je het .fullschema
commando.
sqlite>.fullschema
Code language: CSS (css)
Indexen tonen
Om alle indexen van de huidige database te tonen, gebruik je de .indexes
commando als volgt:
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)
Om de indexen van een specifieke tabel te tonen, gebruik je de .indexes TABLE
opdracht. Om bijvoorbeeld indexen van de albums
weer te geven table, gebruik je het volgende commando:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
Indexen tonen van de tabellen waarvan de naam eindigt op es
, gebruik je een patroon van de LIKE-operator.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Sla het resultaat van een zoekopdracht op in een bestand
Om het resultaat van een zoekopdracht in een bestand op te slaan, gebruikt u de .output FILENAME
opdracht. Zodra u de .output
commando, worden alle resultaten van de volgende zoekopdrachten opgeslagen in het bestand dat u hebt opgegeven in de FILENAME
argument. Als u het resultaat van de volgende enkele zoekopdracht alleen in het bestand wilt opslaan, geeft u de .once FILENAME
op commando.
Om het resultaat van de query opnieuw naar de standaarduitvoer te tonen, geeft u de .output
. op commando zonder argumenten.
De volgende commando's selecteren de title
uit de albums
tabel en schrijf het resultaat naar de albums.txt
bestand.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Voer SQL-instructies uit vanuit een bestand
Stel dat we een bestand hebben met de naam commands.txt
in de c:\sqlite\
map met de volgende inhoud:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
Om de SQL-instructies uit te voeren in de commands.txt
bestand, gebruik je de .read FILENAME
commando als volgt:
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 deze tutorial heb je veel nuttige commando's geleerd in de sqlite3-tool om verschillende taken uit te voeren die te maken hebben met de SQLite-database.