Shrnutí :v tomto tutoriálu vám představíme nejběžněji používané příkazy SQLite programu příkazového řádku sqlite3.
Projekt SQLite poskytuje jednoduchý nástroj příkazového řádku s názvem sqlite3 (nebo sqlite3.exe v systému Windows), který umožňuje interakci s databázemi SQLite pomocí příkazů a příkazů SQL.
Připojte se k databázi SQLite
Chcete-li spustit sqlite3, zadejte sqlite3 následovně:
>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)
Ve výchozím nastavení používá relace SQLite databázi v paměti, takže po skončení relace budou všechny změny odstraněny.
Chcete-li otevřít soubor databáze, použijte .open FILENAME
příkaz. Následující příkaz otevře chinook.db
databáze:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Pokud chcete při připojení k databázi SQlite otevřít konkrétní databázový soubor, použijte následující příkaz:
>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)
Pokud spustíte relaci s názvem databáze, který neexistuje, nástroj sqlite3 vytvoří soubor databáze.
Například následující příkaz vytvoří databázi s názvem sales
v C:\sqlite\db\
adresář:
>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)
Zobrazit všechny dostupné příkazy a jejich účely
Chcete-li zobrazit všechny dostupné příkazy a jejich účel, použijte .help
příkaz takto:
.help
Code language: Shell Session (shell)
Zobrazit databáze v aktuálním připojení k databázi
Chcete-li zobrazit všechny databáze v aktuálním připojení, použijte .databases
příkaz. .databases
zobrazí alespoň jednu databázi s názvem:main
.
Například následující příkaz zobrazí všechny databáze aktuálního připojení:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
Chcete-li přidat další databázi v aktuálním připojení, použijte příkaz ATTACH DATABASE
. Následující příkaz přidává chinook
databáze k aktuálnímu připojení.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Nyní, když spustíte .database
sqlite3 vrátí dvě databáze:main
a 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)
Ukončit nástroj sqlite3
Chcete-li ukončit program sqlite3, použijte .exit
příkaz.
sqlite>.exit
Code language: Shell Session (shell)
Zobrazit tabulky v databázi
Chcete-li zobrazit všechny tabulky v aktuální databázi, použijte .tables
příkaz. Následující příkazy otevírají nové databázové připojení k chinook
databáze a zobrazí tabulky v databázi.
>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)
Pokud chcete najít tabulky založené na konkrétním vzoru, použijte .table
příkaz vzor. Sqlite3 používá LIKE
operátor pro shodu vzorů.
Například následující příkaz vrátí tabulku, která končí řetězcem es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Ukázat strukturu tabulky
Chcete-li zobrazit strukturu tabulky, použijte .schema TABLE
příkaz. TABLE
argument může být vzorem. Pokud jej vynecháte, .schema
příkaz zobrazí struktury všech tabulek.
Následující příkaz ukazuje strukturu albums
tabulka.
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)
Chcete-li zobrazit schéma a obsah sqlite_stat
tabulky, použijete .fullschema
příkaz.
sqlite>.fullschema
Code language: CSS (css)
Zobrazit indexy
Chcete-li zobrazit všechny indexy aktuální databáze, použijte .indexes
příkaz takto:
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)
Chcete-li zobrazit indexy konkrétní tabulky, použijte .indexes TABLE
příkaz. Chcete-li například zobrazit indexy albums
tabulky, použijete následující příkaz:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
Chcete-li zobrazit indexy tabulek, jejichž názvy končí es
, použijete vzor operátoru LIKE.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Uložte výsledek dotazu do souboru
Chcete-li uložit výsledek dotazu do souboru, použijte .output FILENAME
příkaz. Jakmile vydáte .output
všechny výsledky následných dotazů budou uloženy do souboru, který jste zadali v FILENAME
argument. Pokud chcete uložit výsledek dalšího jediného dotazu pouze do souboru, zadejte .once FILENAME
příkaz.
Chcete-li znovu zobrazit výsledek dotazu na standardní výstup, zadejte .output
příkaz bez argumentů.
Následující příkazy vyberou title
z albums
a výsledek zapište do albums.txt
soubor.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Provádět příkazy SQL ze souboru
Předpokládejme, že máme soubor s názvem commands.txt
v c:\sqlite\
složku s následujícím obsahem:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
Chcete-li provést příkazy SQL v commands.txt
použijte .read FILENAME
příkaz takto:
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)
V tomto tutoriálu jste se naučili mnoho užitečných příkazů v nástroji sqlite3 k provádění různých úloh, které se zabývají databází SQLite.