Skip to main content

不想错过的实用SQLite命令

SQLite项目提供了一个名为sqlite3(或Windows上的sqlite3.exe)的简单命令行工具,允许您使用SQL语句和命令与SQLite数据库交互。

连接到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>

默认情况下,SQLite会话使用内存中的数据库,因此,当会话结束时,所有更改都将消失。

要打开数据库文件,请使用。打开文件名命令。下面的语句打开chinook。数据库:

sqlite> .open c:\sqlite\db\chinook.db

如果要在连接到SQlite数据库时打开特定的数据库文件,请使用以下命令:

>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
sqlite>

如果使用不存在的数据库名称启动会话,sqlite3工具将创建数据库文件。

例如,以下命令在C:\sqlite\db\目录中创建一个名为sales的数据库:

>sqlite3 c:\sqlite\db\sales.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite>

显示所有可用命令及其用途

要显示所有可用命令及其用途,请使用。帮助命令如下:

.help

显示当前数据库连接中的数据库

要显示当前连接中的所有数据库,请使用。数据库命令。这个databases命令至少显示一个名为main的数据库。

例如,以下命令显示当前连接的所有数据库:

sqlite> .database
seq name file
--- --------------- --------------------------
0 main c:\sqlite\db\sales.db
sqlite>

要在当前连接中添加其他数据库,请使用ATTACH database语句。下面的语句将chinook数据库添加到当前连接。

sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;

现在,如果你运行。再次使用database命令,sqlite3返回两个数据库:main和chinook。

sqlite> .databases
seq name file
--- --------------- ---------------------
0 main c:\sqlite\db\sales.db
2 chinook c:\sqlite\db\chinook.db

退出sqlite3工具

要退出sqlite3程序,请使用。退出命令。

sqlite>.exit

显示数据库中的表

要显示当前数据库中的所有表,请使用。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>

如果希望根据特定模式查找表,可以使用。表格模式命令。sqlite3使用LIKE操作符进行模式匹配。

例如,下面的语句返回以字符串es结尾的表。

sqlite> .table '%es'
employees genres invoices media_types
sqlite>

显示表格的结构

要显示表格的结构,请使用。模式表命令。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>

要显示sqlite_stat表的模式和内容,可以使用。fullschema命令。

sqlite>.fullschema

显示索引

要显示当前数据库的所有索引,请使用。索引命令如下:

sqlite> .indexes
IFK_AlbumArtistId
IFK_CustomerSupportRepId
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
IFK_InvoiceLineInvoiceId
IFK_InvoiceLineTrackId
IFK_PlaylistTrackTrackId
IFK_TrackAlbumId
IFK_TrackGenreId
IFK_TrackMediaTypeId

要显示特定表的索引,可以使用。索引表命令。例如,要显示albums表的索引,可以使用以下命令:

sqlite> .indexes albums
IFK_AlbumArtistId

要显示名称以es结尾的表的索引,可以使用LIKE运算符的模式。

sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId

将查询结果保存到文件中

要将查询结果保存到文件中,请使用。输出文件名命令。一旦你发布了。输出命令时,后续查询的所有结果将保存到您在FILENAME参数中指定的文件中。如果只想将下一个查询的结果保存到文件中,可以发出以下命令:。一次文件名命令。

要再次向标准输出显示查询结果,请发出。不带参数的输出命令。

以下命令从albums表中选择标题,并将结果写入albums。txt文件。

sqlite> .output albums.txt
sqlite> SELECT title FROM albums;

从文件中执行SQL语句

假设我们有一个名为commands的文件。c:\sqlite\文件夹中包含以下内容的txt:

SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;

执行命令中的SQL语句。txt文件,您可以使用。按如下方式读取文件名命令:

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

在本教程中,您已经学习了sqlite3工具中的许多有用命令,可以执行处理SQLite数据库的各种任务。