问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SQLite3入门指南:安装、示例数据库及常用命令详解

创作时间:
作者:
@小白创作中心

SQLite3入门指南:安装、示例数据库及常用命令详解

引用
1
来源
1.
https://www.cnblogs.com/lofly/articles/18185842

SQLite是一个开源的关系型数据库引擎,具有零配置、自包含、独立事务等特点,被广泛应用于嵌入式系统和小型项目中。本文将详细介绍SQLite3的安装、示例数据库的使用以及SQLite3命令行工具的常用命令,帮助读者快速掌握SQLite3的基本使用方法。

SQLite是一个开源的,

  • 零配置的 (zero-configuration),

  • 自包含的 (self-contained),

  • 独立的(stand-alone),

  • 事务(transaction) 的关系型数据库引擎,

    它被设计用于嵌入到应用程序中。

SQLite 数据库与访问数据库的应用程序集成。应用程序与 SQLite 数据库交互,直接从存储在磁盘上的数据库文件读取和写入。

SQLite显著的特点:

  1. SQLite 对表使用 动态类型 。这意味着您可以在任何列中存储任何值,无论数据类型如何。

  2. SQLite 允许 单个数据库连接同时访问多个数据库文件 。这带来了许多不错的功能,例如连接不同数据库中的表或通过单个命令在数据库之间复制数据。

  3. 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 表存储顾客数据

  • invoicesinvoice_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 可以属于多个播放列表。播放列表 playliststyracks 表之间的关系是多对多的。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数据库。

将会显示以下信息:

SQLite version 3.36.0 2021-06-18 18:36:39Enter ".help" for usage hints.sqlite>

使用 .tables 命令查看所有当前数据库中所有的表。

输出:

albums          employees       invoices        playlistsartists         genres          media_types     trackscustomers       invoice_items   playlist_track

使用 .eixt 命令退出sqlite3工具。

SQLite命令

下面介绍SQLite3中最常用的命令。

连接SQLite数据库

>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>

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

要打开数据库文件,请使用 .open FILENAME 命令。以下语句打开 chinook.db 数据库:

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

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

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

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

显示所有可用的命令

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

要显示当前连接中的所有数据库,请使用

.databases 命令。 .databases 命令显示至少一个名为:main 的数据库。

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

要将数据库附加到当前连接,请使用 ATTACH DATABASE 语句。以下语句将 chinook 数据库添加到当前连接。

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

再次运行 .database命令,会显示两个数据库

 sqlite> .databasesseq  name             file---  ---  ---0    main             c:\sqlite\db\sales.db2    chinook          c:\sqlite\db\chinook.db 

退出SQLite3命令

使用命令.exit退出SQLite3程序。

显示数据库表上的所有表格

使用 .tables 命令显示当前数据库上的所有的表格。

 >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> 

如果要查找基于特定模式的表,可以使用 .table 模式命令。sqlite3 使用 LIKE 运算符进行模式匹配。

例如,以下语句返回以'es'结尾的表格名。

.table '%es'employees    genres       invoices     media_types

显示表格的结构

要显示表的结构,请使用 .schema TABLE 命令。TABLE 参数可以是一个模式。如果省略它,.schema 命令将显示所有表的结构。

 sqlite> .schema albumsCREATE 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> .indexesIFK_AlbumArtistIdIFK_CustomerSupportRepIdIFK_EmployeeReportsToIFK_InvoiceCustomerIdIFK_InvoiceLineInvoiceIdIFK_InvoiceLineTrackIdIFK_PlaylistTrackTrackIdIFK_TrackAlbumIdIFK_TrackGenreIdIFK_TrackMediaTypeId 
.indexes albumsIFK_AlbumArtistId

使用%es 来显示以es结尾的索引

sqlite> .indexes %esIFK_EmployeeReportsToIFK_InvoiceCustomerId

将查询结果保存到文件

使用命令 .output FILENAME将查询结果保存到文件里面。如果你只想将下一个单一查询的结果保存到文件中,那么你需要执行 .once FILENAME 命令。

要再次将查询结果显示到标准输出,你需要执行没有参数的 .output 命令。

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

.output albums.txtSELECT title FROM albums;

执行文件中的SQL语句

假设在c:\sqlite\目录下有个commands.txt文件,该文件的内容如下:

SELECT albumid, titleFROM albumsORDER BY titleLIMIT 10;

为了执行commands.txt文件中的SQL语句,你可以使用 .read FILENAME命令

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
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号