Podsumowanie: w tym poradniku zapoznamy Cię z najczęściej używanymi komendami 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 przy użyciu poleceń i instrukcji SQL.
Połączenie z bazą danych SQLite
Aby uruchomić sqlite3, wpisujemy sqlite3 w następujący sposób:
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>
Domyślnie sesja SQLite używa bazy danych in-memory, dlatego wszystkie zmiany zostaną usunięte, gdy sesja się zakończy.
Aby otworzyć plik bazy danych, używamy polecenia .open FILENAME
. Następujące polecenie otwiera bazę danych chinook.db
:
Code language: Shell Session (shell)sqlite> .open c:\sqlite\db\chinook.db
Jeśli chcesz otworzyć określony plik bazy danych podczas łączenia się z bazą danych SQlite, używasz następującego polecenia:
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>
Jeśli rozpoczniesz sesję z nazwą bazy danych, która nie istnieje, narzędzie sqlite3 utworzy plik bazy danych.
Na przykład, następujące polecenie tworzy bazę danych o nazwie sales
w katalogu 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>
Pokaż wszystkie dostępne komendy i ich przeznaczenie
Aby pokazać wszystkie dostępne komendy i ich przeznaczenie, należy użyć polecenia .help
w następujący sposób:
Code language: Shell Session (shell).help
Pokaż bazy danych w bieżącym połączeniu z bazą danych
Aby pokazać wszystkie bazy danych w bieżącym połączeniu, należy użyć polecenia .databases
. Polecenie .databases
wyświetla co najmniej jedną bazę danych o nazwie: main
.
Na przykład poniższe polecenie wyświetla wszystkie bazy danych w bieżącym połączeniu:
Code language: Shell Session (shell)
Aby dodać dodatkową bazę danych w bieżącym połączeniu, należy użyć stwierdzenia ATTACH DATABASE
. Poniższa instrukcja dodaje bazę danych chinook
do bieżącego połączenia.
Code language: Shell Session (shell)sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Teraz, jeśli ponownie uruchomisz polecenie .database
, sqlite3 zwróci dwie bazy danych: main
i chinook
.
Code language: Shell Session (shell)sqlite> .databasesseq name file--- --------------- ---------------------0 main c:\sqlite\db\sales.db2 chinook c:\sqlite\db\chinook.db
Wyjście z narzędzia sqlite3
Aby wyjść z programu sqlite3, używamy polecenia .exit
.
Code language: Shell Session (shell)sqlite>.exit
Pokaż tabele w bazie danych
Aby wyświetlić wszystkie tabele w bieżącej bazie danych, użyj polecenia .tables
. Poniższe polecenia otwierają nowe połączenie z bazą danych chinook
i wyświetlają tabele w bazie danych.
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>
Jeśli chcesz znaleźć tabele na podstawie określonego wzorca, używasz polecenia .table
wzorzec. Do dopasowywania wzorca sqlite3 używa operatora LIKE
.
Na przykład poniższa instrukcja zwraca tabelę, która kończy się ciągiem es
.
Code language: Shell Session (shell)sqlite> .table '%es'employees genres invoices media_typessqlite>
Pokaż strukturę tabeli
Aby wyświetlić strukturę tabeli, używamy polecenia .schema TABLE
. Argument TABLE
może być wzorcem. Jeśli go pominiesz, polecenie .schema
pokaże struktury wszystkich tabel.
Poniższe polecenie pokazuje strukturę tabeli albums
.
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>
Aby pokazać schemat i zawartość tabel sqlite_stat
, używamy polecenia .fullschema
.
Code language: CSS (css)sqlite>.fullschema
Pokaż indeksy
Aby pokazać wszystkie indeksy bieżącej bazy danych, używamy polecenia .indexes
w następujący sposób:
Code language: Shell Session (shell)sqlite> .indexesIFK_AlbumArtistIdIFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId
Aby pokazać indeksy konkretnej tabeli, używasz polecenia .indexes TABLE
. Na przykład, aby wyświetlić indeksy tabeli albums
, należy użyć następującego polecenia:
Code language: CSS (css)sqlite> .indexes albumsIFK_AlbumArtistId
Aby wyświetlić indeksy tabel, których nazwy kończą się na es
, należy użyć wzorca operatora LIKE.
Code language: Shell Session (shell)sqlite> .indexes %esIFK_EmployeeReportsToIFK_InvoiceCustomerId
Zapisywanie wyniku zapytania do pliku
Aby zapisać wynik zapytania do pliku, używasz polecenia .output FILENAME
. Gdy wydasz polecenie .output
command, wszystkie wyniki kolejnych zapytań zostaną zapisane do pliku, który podałeś w argumencie FILENAME
. Jeśli chcesz zapisać wynik kolejnego pojedynczego zapytania tylko do pliku, wydajesz polecenie .once FILENAME
.
Aby ponownie wyświetlić wynik zapytania na standardowe wyjście, wydajesz polecenie .output
bez argumentów.
Poniższe polecenia wybierają title
z tabeli albums
i zapisują wynik do pliku albums.txt
.
Code language: Shell Session (shell)sqlite> .output albums.txtsqlite> SELECT title FROM albums;
Wykonywanie poleceń SQL z pliku
Załóżmy, że mamy plik o nazwie commands.txt
w folderze c:\sqlite\
o następującej zawartości:
Code language: Shell Session (shell)SELECT albumid, titleFROM albumsORDER BY titleLIMIT 10;
Aby wykonać instrukcje SQL w pliku commands.txt
, używamy polecenia .read FILENAME
w następujący sposób:
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
W tym samouczku poznałeś wiele przydatnych poleceń w narzędziu sqlite3 do wykonywania różnych zadań, które dotyczą bazy danych SQLite.
- Czy ten kurs był pomocny?
- TakNie