个性化阅读
专注于IT技术分析

SQLite入门指南(图解)

本文概述

如果你熟悉关系数据库系统, 则可能听说过像MySQL, SQL Server或PostgreSQL这样的重量级人物。但是, SQLite是另一个有用的RDBMS, 它的设置和操作非常简单, 它具有与其他关系数据库相比许多不同的功能。这些功能包括:

  • 不需要服务器:也就是说, 不需要启动, 停止或配置服务器进程。数据库管理员无需分配实例或管理用户访问权限。
  • 简单数据库文件:SQLite数据库是单个普通磁盘文件, 可以存储在任何目录中。由于数据库文件可以轻松地复制到记忆棒上或通过电子邮件发送, 因此这也使共享变得简单。
  • 清单键入:大多数SQL数据库引擎都依赖静态键入。也就是说, 你只能存储与特定列关联的相同数据类型的值。但是, SQLite使用清单类型, 这允许将任何数量的任何数据类型存储到任何列中, 而不管该列的声明数据类型如何。请注意, 此规则有一些例外。整数主键列就是这样的例外, 它只能存储整数。

与大多数事情一样, SQLite在其他数据库引擎方面也有一些限制。例如, SQLite没有选择进行”正确”或”完全外部联接”的选择, 并且无服务器性质对于安全性和防止数据滥用也可能是不利的。但是, 它是一个非常强大的工具, 在某些情况下非常有用。例如, 我在最近的社交媒体分析工作项目中使用了SQLite数据库, 以一种非常简单有效的方式存储了数百万个Twitter用户的$ edge \ space list ^ {1} $。

因此, 在本教程中, 我将说明如何使用SQLite数据库进行操作。我们将介绍SQLite的设置, 表创建和操作, SQLite点命令以及如何使用简单的SQL查询来操纵SQLite数据库中的数据。

$ ^ {1} $边缘列表或邻接列表是无序列表的集合, 用于表示网络分析中的图。每个列表描述图中包含的给定节点或顶点的已设置邻居。

我们将介绍的第一件事是如何将SQLite导入你的计算机。这非常简单。如果查看Sayak Paul撰写的《带有Python的SQLite教程》, 你将意识到有一个名为DB Browser for SQLite的GUI工具可以使你轻松入门。但是, 出于多样性的考虑, 我将展示如何使用命令行工具, 有时我也倾向于使用该工具。

如果你使用Windows设备, 则要做的第一件事是转到以下站点并下载sqlite-tools-win32-x86-3270200.zip。解压缩文件夹后, 应该会看到以下三个文件:

SQLite入门指南1

之后, 启动SQLite命令行就像单击sqlite3应用程序一样简单, 这将使命令行像下面这样弹出:

SQLite入门指南2

现在你可能会注意到, SQLite的默认设置是使用临时内存数据库。绝大多数时候你将不想使用它。取而代之的是, 我们将使用点命令.open创建一个新数据库, 后跟你要赋予新数据库文件的名称(请参见下文):

SQLite入门指南3

这样, 你就创建了一个新的数据库。另外, 请注意, 将.db放在所需的数据库名称后面以创建数据库文件至关重要。我们将数据库命名为Tweet_Data.db, 因为我将使用鸣叫来填充数据库中的表。

现在创建了数据库, 我们可以继续创建推文表。我们可以通过两种方式做到这一点。首先, 我们可以简单地导入.csv文件并将其制成表格。这是通过使用.mode dot命令和csv, 并使用.import dot命令将一个文件(在这种情况下, 一个csv位于同一文件夹中, 但可以是你的任何csv)将SQLite设置为csv模式来完成的。计算机(如果键入完整路径)和你选择的表名。你可能还想使用.headers dot命令和后跟on来显示列标题。 (见下文)

SQLite入门指南4

完成此操作后, 你可以使用.tables命令显示数据库文件中的所有可用表以及.schema命令, 后跟一个表名以显示表的结构。此外, 你可以执行简单的查询, 例如SELECT $$ FROM Table_Name *, 以验证数据是否在那里。

SQLite入门指南5

除了通过导入csv之类的文件来创建表之外, 还可以使用CREATE TABLE创建表, 然后使用INSERT INTO插入新行。在下面的示例中, 你将看到如何从头开始创建表并插入两个新行。

注意:在SQLite命令行中, 如果你想像我在示例中一样继续在下一行写相同的查询, 则在需要新行时只需按Enter。当末尾有分号时, 按Enter键将对查询进行评估。

SQLite入门指南6

如果你一度决定要将查询结果导出到外部文件(例如csv), 则也可以使用SQLite的功能来执行此操作。为了将内容干净地导出到csv, 可以使用与导入类似的过程。首先, 先使用.header和on, 然后使用.mode和csv。然后, 使用.output dot命令, 后跟所需的csv文件名, 最后, 执行要导出的SQL查询, 并使用.exit命令退出SQLite。让我们尝试将在上一步中创建的新表导出到csv。

SQLite入门指南7

这也是新创建的csv, 其中也包含Sample_Tweets_2的数据。

SQLite入门指南8

除了创建和导出表外, 还可以使用UPDATE / SET和DROP TABLE SQL语句来更新表中的行或将表放在一起。在下面的示例中, 我们将更新玩具Sample_Tweets_2表中的第二条Tweet。

SQLite入门指南9

现在, 让我们告别玩具Sample_Tweets_2表, 并使用DROP TABLE将其从数据库文件中删除:

SQLite入门指南10

微型Twitter案例研究

现在, 你几乎已经了解了如何使用SQLite数据库和操作表的基本知识, 剩下要做的就是使用SQL查询派生有用的信息。现在, 我将展示我在Twitter社交媒体分析项目中执行的几个相对简单的查询。你可以将其视为一个很小的案例研究, 以说明SQLite数据库的实际应用。

让我们从简单的事情开始;在Sample_Tweets表中查找所有唯一的Twitter用户的屏幕名称。在我使用这些推文的项目中, 对于我来说, 找到从其收集推文的所有唯一用户是至关重要的, 因为我需要检索其关注者以创建本教程开始时提到的边缘列表。

SQLite入门指南11

数据库中有26, 860个唯一用户。考虑到我正在听的主题是网站本地化和翻译, 这是一个很好的示例。让我们看看使用稍微复杂一点的SQL查询(排除转发)后样本中推文最多的前20位用户:

SQLite入门指南12

你会发现, 最多的推文属于一个机器人!事实证明, 根据我为该项目计算的各种网络统计数据, 该列表中的最后一个成员UweMuegge确实是影响者。但是, 他绝对不是最重要的。

最后, 让我们看一下UweMuegge使用另一个SQL查询编写的一些推文:

SQLite入门指南13

似乎有两个主要主题, 翻译工作广告和翻译会议。为什么该领域的人们会在Twitter上关注他, 这是有道理的。

从上面的屏幕截图中可以看出的另一件事是, 你遇到了SQLite命令行界面的局限性之一。如果你有较大的文本字段, 它们将无法很好地显示, 并且很难阅读。这就是在这种情况下将数据库浏览器用于SQLite的一个好主意的原因。

结论

在本教程中, 你学习了如何创建SQLite数据库以及如何使用点命令和SQL语句操作表。此外, 你还看到了一个小型的实际案例研究, 其中我使用了SQLite数据库来处理来自Twitter的数据。那就很多了, 恭喜!

值得注意的是, SQLite数据库与R和Python结合使用时最有用。你可以使用sqlite3模块通过Python处理SQLite数据库(如果你想了解更多信息, 请参见SQLite with Python教程), 也可以使用R使用RSQLite。实际上, 我之前提到的Twitter用户关注者的边缘列表存储在我使用RSQLIte通过将每个用户的关注者网络附加到表之后创建的SQLite数据库中。在该项目的此步骤中, SQLite的使用至关重要, 因为断电或Windows自动更新之类的功能可以强制关闭计算机, 并使你从头开始收集追随者网络。由于Twitter的API速率限制, 此过程可能需要大约4周的时间, 因此, 如果发生这种情况, 请从0开始。但是, 如果你将随从网络保存在SQLite数据库中, 即使你的计算机被强制关闭, 你也可以在数据库中的最后一个用户之后再次从用户处收集数据, 这样可以节省大量时间。

这只是SQLite数据库如何成为数据科学家手中的绝佳工具的一个示例。我鼓励你在本教程未涵盖的范围之外进一步研究SQLite数据库和SQL。保持学习;天空才是极限!

如果你想了解更多有关SQL的知识, 请参加srcmini的SQL关系数据库简介课程。

赞(0)
未经允许不得转载:srcmini » SQLite入门指南(图解)

评论 抢沙发

评论前必须登录!