Oversigt :i denne øvelse vil vi introducere dig til de mest almindeligt anvendte SQLite-kommandoer i kommandolinjeprogrammet sqlite3.
SQLite-projektet leverer et simpelt kommandolinjeværktøj ved navn sqlite3 (eller sqlite3.exe på Windows), der giver dig mulighed for at interagere med SQLite-databaserne ved hjælp af SQL-sætninger og kommandoer.
Opret forbindelse til en SQLite-database
For at starte sqlite3 skal du skrive sqlite3 som følger:
>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)
Som standard bruger en SQLite-session databasen i hukommelsen, derfor vil alle ændringer være væk, når sessionen slutter.
For at åbne en databasefil skal du bruge .open FILENAME
kommando. Følgende sætning åbner chinook.db
database:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Hvis du vil åbne en bestemt databasefil, når du opretter forbindelse til SQLite-databasen, skal du bruge følgende kommando:
>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)
Hvis du starter en session med et databasenavn, der ikke findes, vil sqlite3-værktøjet oprette databasefilen.
For eksempel opretter følgende kommando en database med navnet sales
i C:\sqlite\db\
mappe:
>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)
Vis alle tilgængelige kommandoer og deres formål
For at vise alle tilgængelige kommandoer og deres formål, bruger du .help
kommando som følger:
.help
Code language: Shell Session (shell)
Vis databaser i den aktuelle databaseforbindelse
For at vise alle databaser i den aktuelle forbindelse, bruger du .databases
kommando. .databases
kommandoen viser mindst én database med navnet:main
.
For eksempel viser følgende kommando alle databaserne for den aktuelle forbindelse:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
For at tilføje en ekstra database i den aktuelle forbindelse, bruger du sætningen ATTACH DATABASE
. Følgende sætning tilføjer chinook
database til den aktuelle forbindelse.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Hvis du nu kører .database
kommandoen igen, returnerer sqlite3 to databaser:main
og 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)
Afslut sqlite3-værktøjet
For at afslutte sqlite3-programmet skal du bruge .exit
kommando.
sqlite>.exit
Code language: Shell Session (shell)
Vis tabeller i en database
For at vise alle tabellerne i den aktuelle database, bruger du .tables
kommando. Følgende kommandoer åbner en ny databaseforbindelse til chinook
database og få vist tabellerne i databasen.
>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)
Hvis du vil finde tabeller baseret på et bestemt mønster, bruger du .table
mønster kommando. sqlite3 bruger LIKE
operator til mønstertilpasning.
For eksempel returnerer følgende sætning tabellen, der slutter med strengen es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Vis strukturen af en tabel
For at vise strukturen af en tabel, bruger du .schema TABLE
kommando. TABLE
argument kunne være et mønster. Hvis du udelader det, vil .schema
kommandoen viser strukturerne for alle tabellerne.
Den følgende kommando viser strukturen af albums
tabel.
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)
For at vise skemaet og indholdet af sqlite_stat
tabeller, bruger du .fullschema
kommando.
sqlite>.fullschema
Code language: CSS (css)
Vis indekser
For at vise alle indekser af den aktuelle database, bruger du .indexes
kommando som følger:
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)
For at vise indekserne for en specifik tabel, bruger du .indexes TABLE
kommando. For eksempel for at vise indekser af albums
tabel, bruger du følgende kommando:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
For at vise indekser af de tabeller, hvis navne slutter med es
, bruger du et mønster af LIKE-operatoren.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Gem resultatet af en forespørgsel i en fil
For at gemme resultatet af en forespørgsel i en fil, skal du bruge .output FILENAME
kommando. Når du har udstedt .output
kommando, vil alle resultaterne af de efterfølgende forespørgsler blive gemt i den fil, du har angivet i FILENAME
argument. Hvis du kun vil gemme resultatet af den næste enkelte forespørgsel i filen, udsteder du .once FILENAME
kommando.
For at vise resultatet af forespørgslen til standardoutputtet igen, udsteder du .output
kommando uden argumenter.
Følgende kommandoer vælger title
fra albums
tabel og skriv resultatet til albums.txt
fil.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Kør SQL-sætninger fra en fil
Antag, at vi har en fil med navnet commands.txt
i c:\sqlite\
mappe med følgende indhold:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
For at udføre SQL-sætningerne i commands.txt
fil, bruger du .read FILENAME
kommando som følger:
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)
I denne vejledning har du lært mange nyttige kommandoer i sqlite3-værktøjet til at udføre forskellige opgaver, der omhandler SQLite-databasen.