简介
控制数据库维护哪些数据的关键是添加和删除操作。要插入,您需要为每个新行指定满足表每个列要求的数据项。要删除,您需要提供要删除的表中行的匹配条件。
在本文中,我们将深入探讨如何使用 INSERT 和 DELETE 命令从 SQLite 表中添加或删除数据。我们将介绍语法以及这些命令的一些更高级的变体,以便在单个语句中操作多行。
查看表的结构
在开始插入数据之前,您必须了解表的结构,以便满足表的列、数据类型和约束的要求。
要查找名为 student 的表的结构,您可以使用 SQLite .schema <table_name> 命令
.schema student
CREATE TABLE student (id INTEGER PRIMARY KEY, first_name TEXT, last_name TEXT, age INTEGER, student_email TEXT NOT NULL, class TEXT);
输出显示了表的列名、数据类型以及与待插入数据要求相关的其他信息。
为了获得更容易阅读的结果,您可以使用 .fullschema --indent 命令。这将以更好的间距显示连接数据库的模式
.fullschema --indent
CREATE TABLE student (id INTEGER PRIMARY KEY,first_name TEXT,last_name TEXT,age INTEGER,student_email TEXT NOT NULL,class TEXT);
注意:如果存在统计表,.fullschema 命令还将包含统计表的转储。我们暂时不讨论这一点,但在某些情况下,此输出可能很有用。
使用INSERT向表中添加新记录
SQL INSERT 命令用于向现有表添加数据行。一旦您了解了表的结构,就可以形成一个命令,将表的列与您要为新记录插入的相应值进行匹配。
该命令的基本语法如下所示
INSERT INTO my_table(column1, column2)VALUES ('value1', 'value2');
列列表中的列直接对应于值列表中提供的值。
例如,要将一名新学生插入到上面列出的 student 表中,我们可以键入
INSERT INTO student(first_name, last_name, student_email)VALUES ('Bob', 'Smith', 'bob.smith@smith.com');
我们为 first_name、last_name、student_email 提供值。我们将 id 字段留空,因为 SQLite 可以自动填充此字段。如果您查询该表,您会看到已添加新记录
SELECT * FROM student;
+-------------+------------+-----------+---------------------+id | first_name | last_name | student_email |+-------------+------------+-----------+---------------------+1 | Bob | Smith | bob.smith@smith.com |+-------------+------------+-----------+---------------------+
您还可以使用 Prisma Client 通过发出create query将数据添加到表中。
使用INSERT一次性添加多行
一次插入多行数据比逐个插入数据更有效地填充数据库。SQLite 允许您指定要添加到同一表中的多行。每个新行都用括号括起来,每组括号之间用逗号分隔。
多记录插入的基本语法如下所示
INSERT INTO my_table(column_name, column_name2)VALUES('value', 'value2'),('value3', 'value4'),('value5', 'value6');
对于我们一直引用的 student 表,您可以通过键入以下内容在单个语句中添加三名新学生
INSERT INTO student(first_name, last_name, student_email)VALUES('Abigail', 'Spencer', 'abispence@university.com'),('Tamal', 'Wayne', 'tamalwayne@university.com'),('Felipe', 'Espinosa', 'felesp@university.com');
使用DELETE从表中删除行
SQL DELETE 命令用于从表中删除记录,它与 INSERT 互补。要从表中删除行,您必须通过在 WHERE 子句中提供条件来指定您要删除的行。
基本语法如下:
DELETE FROM <table>WHERE <condition>;
例如,要删除 student 表中 last_name 设置为 Wayne 的每一行,我们可以键入以下内容
DELETE FROM studentWHERE last_name = 'Wayne';
要使用 Prisma Client 从表中删除数据,请使用delete query。
使用DELETE一次性删除多行
与 INSERT 类似,一次使用 DELETE 命令可能会很麻烦。您可以通过操作 WHERE 子句中的选择条件来一次删除多行。
例如,要按 id 删除多行,您可以键入以下内容
DELETE FROM studentWHERE id in (1,2);
您还可以通过省略 WHERE 子句来删除给定表中的所有行
DELETE FROM student;
Prisma Client 使用一个名为deleteMany的单独查询来一次删除多行数据。
结论
在本文中,我们介绍了如何从 SQLite 表中插入和删除数据的基础知识。我们首先讨论了如何查找表的结构以确保构造有效的插入数据查询。然后,我们介绍了如何一次插入和删除数据以及批量插入和删除数据。
INSERT 和 DELETE 命令是管理表中维护哪些数据最常用的命令。理解它们的基本语法和操作将使您能够快速有效地向数据库结构添加或删除记录。
