开启SQLite3
什么是SQLite3
SQLite是一个开源的,
- 零配置的 (zero-configuration),
- 自包含的 (self-contained),
- 独立的(stand-alone),
- 事务(transaction) 的关系型数据库引擎,
它被设计用于嵌入到应用程序中。
SQLite 数据库与访问数据库的应用程序集成。应用程序与 SQLite 数据库交互,直接从存储在磁盘上的数据库文件读取和写入。

SQLite显著的特点:
-
SQLite 对表使用动态类型。这意味着您可以在任何列中存储任何值,无论数据类型如何。
-
SQLite 允许单个数据库连接同时访问多个数据库文件。这带来了许多不错的功能,例如连接不同数据库中的表或通过单个命令在数据库之间复制数据。
-
SQLite能够创建运行速度非常快的内存数据库。
下载和安装SQLite3
参考教程: https://www.sqlitetutorial.net/download-install-sqlite/
SQLite数据库 GUI管理工具:https://github.com/pawelsalawa/sqlitestudio/releases
SQLite 示例数据库
SQLite示例数据库简介
Chinook 示例数据库是练习 SQL(尤其是 SQLite)的一个很好的数据库。以下数据库图说明了 Chinook 数据库表及其关系。

Chinook数据表介绍:
employees存储员工数据,例如 ID、姓氏、名字等。它还有一个名为 ReportsTo 的字段,用于指定谁向谁报告。customers表存储顾客数据invoices和invoice_items表:这两个表存储发票数据。发票表存储发票标题数据,invoice_items 表存储发票行项目数据。artists存储艺术家数据。这是一个包含 id 和 name 的简单表。albums表存储有关曲目列表的数据。每张专辑都属于一位艺术家。然而,一位艺术家可能拥有多张专辑。 artist与album是1对多的关系。media_types表存储媒体类型,例如 MPEG 音频和 AAC 音频文件。genres存储音乐类型,如摇滚乐,爵士乐等。tracks存储歌曲数据。每个歌曲属于一张专辑。 track与album的关系是多对1的关系。 一张专辑上有可以有很多首歌。playlists&playlist_track表:playlists表存储有关播放列表的数据。每个播放列表都包含一个tracks列表。每个track可以属于多个播放列表。播放列表playlists和tyracks表之间的关系是多对多的。playlist_track表就是用来反映这种关系的。
下载SQLite示例数据库
Chinook数据库下载链接: https://www.sqlitetutorial.net/wp-content/uploads/2018/03/chinook.zip
下载SQList样例数据库图表: https://www.sqlitetutorial.net/wp-content/uploads/2018/03/sqlite-sample-database-diagram.pdf
下载SQLite样例数据库(多种颜色版本):https://www.sqlitetutorial.net/wp-content/uploads/2018/03/sqlite-sample-database-diagram-color.pdf
怎么去连接SQLite示例数据库
进入chinook.db数据库所在目录,在命令行窗口使用以下命令来连接
chinook数据库。
sqlite3 chinook.db
将会显示以下信息:
SQLite version 3.36.0 2021-06-18 18:36:39
Enter ".help" for usage hints.
sqlite>
使用 .tables 命令查看所有当前数据库中所有的表。
.tables
输出:
albums employees invoices playlists
artists genres media_types tracks
customers invoice_items playlist_track
使用 .eixt 命令退出sqlite3工具。
SQLite命令
下面介绍SQLite3中最常用的命令。
连接SQLite数据库
>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 会话使用内存数据库,因此,会话结束时所有更改都将消失。
要打开数据库文件,请使用 .open FILENAME 命令。以下语句打开 chinook.db 数据库:
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 工具将创建数据库文件。
显示所有可用的命令
.help
显示当前数据库连接的数据库
要显示当前连接中的所有数据库,请使用
.databases 命令。 .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命令,会显示两个数据库
sqlite> .databases
seq name file
--- --------------- ---------------------
0 main c:\sqlite\db\sales.db
2 chinook c:\sqlite\db\chinook.db
退出SQLite3命令
使用命令.exit退出SQLite3程序。
显示数据库表上的所有表格
使用 .tables 命令显示当前数据库上的所有的表格。
>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>
如果要查找基于特定模式的表,可以使用 .table 模式命令。sqlite3 使用 LIKE 运算符进行模式匹配。
例如,以下语句返回以'es'结尾的表格名。
sqlite> .table '%es'
employees genres invoices media_types
sqlite>
显示表格的结构
要显示表的结构,请使用 .schema TABLE 命令。TABLE 参数可以是一个模式。如果省略它,.schema 命令将显示所有表的结构。
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 命令。
显示索引
要显示当前数据库的所有索引,请使用 .indexes 命令,如下所示:
sqlite> .indexes
IFK_AlbumArtistId
IFK_CustomerSupportRepId
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
IFK_InvoiceLineInvoiceId
IFK_InvoiceLineTrackId
IFK_PlaylistTrackTrackId
IFK_TrackAlbumId
IFK_TrackGenreId
IFK_TrackMediaTypeId
sqlite> .indexes albums
IFK_AlbumArtistId
使用%es 来显示以es结尾的索引
sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
将查询结果保存到文件
使用命令 .output FILENAME将查询结果保存到文件里面。如果你只想将下一个单一查询的结果保存到文件中,那么你需要执行 .once FILENAME 命令。
要再次将查询结果显示到标准输出,你需要执行没有参数的 .output 命令。
以下命令从 albums 表中选择 title,并将结果写入 albums.txt 文件。
sqlite> .output albums.txt
sqlite> SELECT title FROM albums;
执行文件中的SQL语句
假设在c:\sqlite\目录下有个commands.txt文件,该文件的内容如下:
SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;
为了执行commands.txt文件中的SQL语句,你可以使用 .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
浙公网安备 33010602011771号