Podsumowanie :w tym samouczku przedstawimy najczęściej używane polecenia SQLite programu wiersza poleceń sqlite3.
Projekt SQLite dostarcza proste narzędzie wiersza poleceń o nazwie sqlite3 (lub sqlite3.exe w systemie Windows), które pozwala na interakcję z bazami danych SQLite za pomocą instrukcji i poleceń SQL.
Połącz się z bazą danych SQLite
Aby uruchomić sqlite3, wpisz sqlite3 w następujący sposób:
>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)
Domyślnie sesja SQLite korzysta z bazy danych w pamięci, dlatego wszystkie zmiany znikną po zakończeniu sesji.
Aby otworzyć plik bazy danych, użyj .open FILENAME
Komenda. Poniższa instrukcja otwiera chinook.db
baza danych:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Jeśli chcesz otworzyć określony plik bazy danych podczas łączenia się z bazą danych SQlite, użyj następującego polecenia:
>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)
Jeśli rozpoczniesz sesję z nazwą bazy danych, która nie istnieje, narzędzie sqlite3 utworzy plik bazy danych.
Na przykład poniższe polecenie tworzy bazę danych o nazwie sales
w C:\sqlite\db\
katalog:
>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)
Pokaż wszystkie dostępne polecenia i ich cele
Aby pokazać wszystkie dostępne polecenia i ich przeznaczenie, użyj .help
polecenie w następujący sposób:
.help
Code language: Shell Session (shell)
Pokaż bazy danych w bieżącym połączeniu z bazą danych
Aby wyświetlić wszystkie bazy danych w bieżącym połączeniu, użyj .databases
Komenda. .databases
polecenie wyświetla przynajmniej jedną bazę danych o nazwie:main
.
Na przykład następujące polecenie pokazuje wszystkie bazy danych bieżącego połączenia:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
Aby dodać dodatkową bazę danych w bieżącym połączeniu, użyj instrukcji ATTACH DATABASE
. Poniższa instrukcja dodaje chinook
bazy danych do bieżącego połączenia.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Teraz, jeśli uruchomisz .database
polecenie ponownie, sqlite3 zwraca dwie bazy danych:main
i 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)
Wyjdź z narzędzia sqlite3
Aby wyjść z programu sqlite3, użyj .exit
polecenie.
sqlite>.exit
Code language: Shell Session (shell)
Pokaż tabele w bazie danych
Aby wyświetlić wszystkie tabele w bieżącej bazie danych, użyj .tables
Komenda. Poniższe polecenia otwierają nowe połączenie bazy danych z chinook
bazy danych i wyświetlić tabele w bazie danych.
>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)
Jeśli chcesz znaleźć tabele na podstawie określonego wzorca, użyj .table
polecenie wzorca. sqlite3 używa LIKE
operator dopasowywania wzorców.
Na przykład poniższa instrukcja zwraca tabelę, która kończy się ciągiem es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Pokaż strukturę tabeli
Aby wyświetlić strukturę tabeli, użyj .schema TABLE
Komenda. TABLE
argument może być wzorcem. Jeśli go pominiesz, .schema
polecenie pokaże struktury wszystkich tabel.
Poniższe polecenie pokazuje strukturę albums
tabela.
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)
Aby pokazać schemat i zawartość sqlite_stat
tabele, używasz .fullschema
polecenie.
sqlite>.fullschema
Code language: CSS (css)
Pokaż indeksy
Aby wyświetlić wszystkie indeksy bieżącej bazy danych, użyj .indexes
polecenie w następujący sposób:
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)
Aby wyświetlić indeksy określonej tabeli, użyj .indexes TABLE
Komenda. Na przykład, aby wyświetlić indeksy albums
tabeli, użyj następującego polecenia:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
Aby wyświetlić indeksy tabel, których nazwy kończą się na es
, używasz wzorca operatora LIKE.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Zapisz wynik zapytania do pliku
Aby zapisać wynik zapytania do pliku, użyj .output FILENAME
Komenda. Po wydaniu pliku .output
polecenie, wszystkie wyniki kolejnych zapytań zostaną zapisane do pliku określonego w FILENAME
argument. Jeśli chcesz zapisać wynik następnego pojedynczego zapytania tylko do pliku, wydajesz .once FILENAME
polecenie.
Aby ponownie wyświetlić wynik zapytania na standardowym wyjściu, wydajesz .output
polecenie bez argumentów.
Poniższe polecenia wybierają title
z albums
tabeli i zapisz wynik do pliku albums.txt
plik.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Wykonywanie instrukcji SQL z pliku
Załóżmy, że mamy plik o nazwie commands.txt
w c:\sqlite\
folder z następującą zawartością:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
Aby wykonać instrukcje SQL w pliku commands.txt
użyj pliku .read FILENAME
polecenie w następujący sposób:
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)
W tym samouczku nauczyłeś się wielu przydatnych poleceń narzędzia sqlite3 do wykonywania różnych zadań związanych z bazą danych SQLite.