• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

开启SQLite3

什么是SQLite3

SQLite是一个开源的,

  • 零配置的 (zero-configuration),
  • 自包含的 (self-contained),
  • 独立的(stand-alone),
  • 事务(transaction) 的关系型数据库引擎,
    它被设计用于嵌入到应用程序中。

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

image

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 数据库表及其关系。

image

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

posted @ 2024-05-11 16:54  编织快乐  阅读(105)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3