Резюме :в този урок ще ви запознаем с най-често използваните SQLite команди на програмата sqlite3 от командния ред.
Проектът SQLite предоставя прост инструмент от команден ред, наречен sqlite3 (или sqlite3.exe за Windows), който ви позволява да взаимодействате с базите данни на SQLite, като използвате SQL изрази и команди.
Свържете се с база данни на SQLite
За да стартирате sqlite3, въведете sqlite3, както следва:
>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)
По подразбиране SQLite сесията използва базата данни в паметта, следователно всички промени ще изчезнат, когато сесията приключи.
За да отворите файл на база данни, използвате .open FILENAME
команда. Следното изявление отваря chinook.db
база данни:
sqlite> .open c:\sqlite\db\chinook.db
Code language: Shell Session (shell)
Ако искате да отворите конкретен файл на база данни, когато се свържете към базата данни SQlite, използвайте следната команда:
>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)
Ако стартирате сесия с име на база данни, което не съществува, инструментът sqlite3 ще създаде файла на базата данни.
Например, следната команда създава база данни с име sales
в C:\sqlite\db\
директория:
>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)
Показване на всички налични команди и техните цели
За да покажете всички налични команди и тяхната цел, използвате .help
команда, както следва:
.help
Code language: Shell Session (shell)
Показване на бази данни в текущата връзка с база данни
За да покажете всички бази данни в текущата връзка, използвате .databases
команда. .databases
командата показва поне една база данни с име:main
.
Например следната команда показва всички бази данни на текущата връзка:
sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>
Code language: Shell Session (shell)
За да добавите допълнителна база данни в текущата връзка, използвате израза ATTACH DATABASE
. Следното изявление добавя chinook
база данни към текущата връзка.
sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;
Code language: Shell Session (shell)
Сега, ако стартирате .database
командата отново, sqlite3 връща две бази данни:main
и 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)
Излезте от инструмента sqlite3
За да излезете от програмата sqlite3, използвате .exit
команда.
sqlite>.exit
Code language: Shell Session (shell)
Показване на таблици в база данни
За да покажете всички таблици в текущата база данни, използвате .tables
команда. Следните команди отварят нова връзка към базата данни към chinook
база данни и покажете таблиците в базата данни.
>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)
Ако искате да намерите таблици въз основа на конкретен модел, използвайте .table
команда шаблон. sqlite3 използва LIKE
оператор за съвпадение на шаблони.
Например, следният оператор връща таблицата, която завършва с низа es
.
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
Code language: Shell Session (shell)
Показване на структурата на таблица
За да покажете структурата на таблица, използвате .schema TABLE
команда. TABLE
аргументът може да бъде модел. Ако го пропуснете, .schema
командата ще покаже структурите на всички таблици.
Следната команда показва структурата на albums
таблица.
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)
За да покажете схемата и съдържанието на sqlite_stat
таблици, използвате .fullschema
команда.
sqlite>.fullschema
Code language: CSS (css)
Показване на индекси
За да покажете всички индекси на текущата база данни, използвате .indexes
команда, както следва:
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)
За да покажете индексите на конкретна таблица, използвате .indexes TABLE
команда. Например за показване на индекси на albums
таблица, използвате следната команда:
sqlite> .indexes albums
IFK_AlbumArtistId
Code language: CSS (css)
За показване на индекси на таблиците, чиито имена завършват с es
, използвате шаблон на оператора LIKE.
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
Code language: Shell Session (shell)
Запазете резултата от заявка във файл
За да запишете резултата от заявка във файл, използвате .output FILENAME
команда. След като издадете .output
команда, всички резултати от следващите заявки ще бъдат запазени във файла, който сте посочили в FILENAME
аргумент. Ако искате да запишете резултата от следващата единична заявка само във файла, издавате .once FILENAME
команда.
За да покажете отново резултата от заявката на стандартния изход, издавате .output
команда без аргументи.
Следните команди избират title
от albums
таблица и запишете резултата в albums.txt
файл.
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
Code language: Shell Session (shell)
Изпълнете SQL оператори от файл
Да предположим, че имаме файл с име commands.txt
в c:\sqlite\
папка със следното съдържание:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
Code language: Shell Session (shell)
За да изпълните SQL операторите в commands.txt
файл, използвате .read FILENAME
команда, както следва:
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)
В този урок научихте много полезни команди в инструмента sqlite3 за изпълнение на различни задачи, които се занимават с базата данни SQLite.