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