使用 SQLite 创建和删除数据库和表

使用 SQLite 创建和删除数据库和表

SQLite 使用 SQLite 创建和删除数据库和表目录简介创建数据库列出数据库连接在 SQLite 数据库中创建表删除表删除数据库总结分享到简介在本文中,我们将介绍 SQLite 中数据库和表的创建与销毁。我们可以快速回顾一下这两个术语

数据库:将不同的结构集和数据相互划分开来表:定义数据结构并在数据库中存储实际数据值SQLite 利用命令行来处理数据库文件。要跟随操作,您需要下载适用于您机器的 SQLite CLI。让我们开始吧。

创建数据库首先,在命令行中输入 sqlite3 启动一个新的 SQLite shell。结果将类似于以下内容

>sqlite3SQLite version 3.32.3 2020-06-18 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 命令打开其现有文件。例如,在以下命令中,将打开预先存在的 test.db 数据库。

.open test.db注意:如果您指定的文件名不存在,sqlite3 工具将创建该数据库文件。

要更明确地创建新数据库,请在 .open 命令中添加 --new。这里我们通过创建 people.db 来演示该命令。

.open --new people.db这将把您现有更改保存到指定的数据库文件,以供会话的其余部分使用。

列出数据库连接现在您已经创建了数据库,您可以使用 .database 命令检查您的连接。

.database以下示例展示了该命令的返回结果,其中显示了 main 数据库。

sqlite> .databasemain: /Users/user/people.dbsqlite>对于某些用例,您可能希望将其他数据库添加到当前连接。这可以使用 ATTACH DATABASE 语句完成,如下所示,将 test.db 添加到我们的活动连接中。

ATTACH DATABASE "test.db" AS test;现在,当我们运行 .database 命令时,将返回以下两个连接:main 和 test 数据库。

sqlite> .databasemain: /Users/user/people.dbtest: /Users/user/test.dbsqlite>在 SQLite 数据库中创建表创建数据库并验证连接后,您可以开始为数据库引入数据结构。

如何使用 SQLite 的 CREATE TABLE 命令在本节中,我们将通过创建 student 表来为我们新创建的 people.db 数据库添加数据结构。要在数据库中创建表,您将使用 CREATE TABLE 语句,其语法如下

CREATE TABLE student ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, age INTEGER, student_email TEXT NOT NULL, class TEXT );我们可以将上述语句分解为以下几个部分

CREATE TABLE <表名>:这是基本的命令语句。在示例中,<表名> 是 student,应为您打算为表命名的任何名称。<列名> <数据类型>:此语法定义了表中的一个基本列。在示例中,列名为 first_name,其对应的数据类型(由SQLite 数据类型定义)为 TEXT。<列约束>:列约束是可选的限制,为进入表的数据添加额外要求。在示例中,Not Null 列约束被添加到 student_email 列。这确保了在填充该列之前不会有任何条目被创建。<表约束>:与列约束类似,表约束是可选的,用于为数据添加额外要求。如果约束影响多个列而不是单个列的交互,则存在例外。在我们的示例中,将 PRIMARY KEY 添加到 id 字段就是一个表约束的例子。重要的是要注意,CREATE TABLE 语句默认会在 main 数据库中创建您指定的表。如果您打开了到多个数据库的连接,您需要在语句中指定 <数据库名>.<表名>,才能在 main 以外的数据库中创建表。调整前面的示例,将在 test 中创建表,如下所示

CREATE TABLE test.student ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, age INTEGER, student_email TEXT NOT NULL, class TEXT );如何仅在表不存在时创建表为确保您创建的表不存在,可以将可选的 IF NOT EXISTS 子句添加到前面的示例中,如下所示

CREATE TABLE IF NOT EXISTS student ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, age INTEGER, student_email TEXT NOT NULL, class TEXT );默认情况下,当尝试创建已存在的表而没有 IF NOT EXISTS 子句时,SQLite 会抛出错误。通过添加此子句,默认行为将被覆盖为警告而不是错误。命令的其余行为保持不变。

如何使用 .schema 验证表创建表后,您可以使用 .schema 命令验证表的结构。如果我们要确保之前创建的 student 表按照我们的意图进行了结构化,我们可以使用以下语法进行检查

.schema student对于 student 表,返回结果将如下所示

sqlite> .schema studentCREATE TABLE student (id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, age INTEGER, student_email TEXT NOT NULL, class TEXT);sqlite>为了获得更易读的结果,您可以使用 .fullschema --indent 命令。这将以更好的间距显示连接数据库的 Schema

.fullschema --indentsqlite> .fullschema --indentCREATE TABLE student ( id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, age INTEGER, student_email TEXT NOT NULL, class TEXT);sqlite>注意:.fullschema 命令还将包含统计表的转储(如果存在)。我们暂时不讨论这一点,但在某些情况下,此输出可能很有用。

删除表要在 SQLite 中从数据库删除表,您将使用 DROP TABLE 语句。此语句用于删除 student 表,如下所示

DROP TABLE IF EXISTS student;删除表时,IF EXISTS 语句是可选的。它添加的行为确保命令仅在表存在时运行。如果表不存在,则该语句将被简单地忽略,什么也不会发生。

删除数据库由于 SQLite 不像其他关系型数据库(如MySQL或PostgreSQL)那样有单独的服务器进程,因此不需要 DROP DATABASE 语句。SQLite 是一个嵌入式数据库引擎,因此要删除数据库,您必须从机器中删除文件。此操作将使数据库不再可访问。

总结本文涵盖了 SQLite 中创建和删除数据库和表的基础知识。本文介绍的命令是使用 SQLite 入门最基本的命令,可帮助您开始组织和结构化数据。

在上述语句中,例如 CREATE TABLE 和 DROP TABLE,根据用例可以考虑许多额外的参数。您可以在官方 SQLite 文档中阅读这些语句的更多详细信息。

Prisma.io 相关内容使用 Prisma 时,您可以使用 Prisma Migrate 来创建数据库和表。使用 Prisma Migrate 进行开发会根据声明性 Prisma schema 生成迁移文件并将其应用于您的数据库。

Prisma 是一个用于 Typescript 和 Node.js 的开源数据库工具包,旨在让应用程序开发人员在使用数据库时更高效、更自信。关于作者Alex EmerichAlex 是一个典型的爱观鸟、爱嘻哈的“书呆子”,也喜欢写关于数据库的文章。他目前住在柏林,在那里他像利奥波德·布鲁姆一样漫无目的地在城市中行走。上一页在 SQLite 中导入和导出数据下一页使用 SQLite 插入和删除数据在 GitHub 上编辑此页面

相关推荐

绝地求生groza在哪里
bet体育365正规吗

绝地求生groza在哪里

📅 07-18 👁️ 9358
徇的成语
365bet官网娱乐

徇的成语

📅 07-03 👁️ 6622