SQLite(3):操作数据库中的表

成元 / 2026-09-28 / 约 1657 字 / 预计阅读 4 分钟 / — 次浏览 < 教程, 笔记 > • [ SQL, SQLite ]

前言

上一篇简单介绍了 SQLite 中对数据库的一些常见操作,这一节继续说一下数据库中表的一些常见操作。

对表的操作一般使用 SQL 语句。

SQLite 数据库中表的存储

只需要明白数据库(Database)包含多张表(Table),表包含多行(Row),每一行又由多个列(Column)组成即可。

创建表

可以用 CREATE TABLE 语句在数据库中新增一个表。使用单列主键时,它的 SQL 语法如下:

CREATE TABLE table_name (
   column1 datatype PRIMARY KEY,
   column2 datatype,
   column3 datatype
);

如果主键由多个列组成,需要在所有列定义之后声明:

CREATE TABLE table_name (
   column1 datatype,
   column2 datatype,
   PRIMARY KEY (column1, column2)
);

比如,我要在数据库中创建一个记录学生信息的表,可以输入以下语句:

sqlite> CREATE TABLE stu(
   ...> id INTEGER PRIMARY KEY,
   ...> name TEXT,
   ...> city TEXT,
   ...> score INTEGER
   ...> );

可以看到,这个表叫 stu,有四列数据,分别是:

删除表

可以用 DROP TABLE 语句删除数据库中的表。它的 SQL 语法如下:

DROP TABLE database_name.table_name;

使用此命令时要特别注意,因为表一旦被删除,其中的所有信息也会永远丢失。

比如,我想删除一个名为 teacher 的表,可以输入以下语句:

sqlite> DROP TABLE teacher;

修改表

可以用 ALTER TABLE 语句修改数据库中已有的表。这里介绍重命名表和添加列这两种操作。

重命名表的 SQL 语法如下:

ALTER TABLE database_name.table_name RENAME TO new_table_name;

向已有的表中添加新列的 SQL 语法如下:

ALTER TABLE database_name.table_name ADD COLUMN column_def...;

比如,有一个存储学生信息的表 stu,我想将其改名为 student,可以输入以下语句:

sqlite> ALTER TABLE stu RENAME TO student;

此外,如果想向 student 表中添加一个表示年龄的列,可以输入以下语句:

sqlite> ALTER TABLE student ADD age INTEGER;

查看表

sqlite3 CLI 工具提供了一些用于查看用户所创建表的点命令:

.tables 一般用于显示表和视图的名字。.schema 显示的信息更完整,它会直接显示表、索引、视图和触发器等数据库对象的 CREATE 语句,能够清楚地看出数据库的结构。

表内数据的增删改查

增

可以用 INSERT INTO 语句向数据库中的表插入新数据。它的 SQL 语法如下:

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);

在这里,column1, column2,…columnN 是要插入数据的表中的列的名称。

如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。

比如,当前数据库中有这样一个表:

sqlite> .schema
CREATE TABLE stu(
id INTEGER PRIMARY KEY,
name TEXT,
city TEXT,
score INTEGER
);

我想向其中插入三个新同学的信息,可以输入以下语句:

-- 写明白所有列
sqlite> INSERT INTO stu
   ...> VALUES (0, 'Wang', 'Beijing', 50);

-- 不写 city 列
sqlite> INSERT INTO stu (id, name, score)
   ...> VALUES (1, 'Li', 60);

-- 不写 score 列
sqlite> INSERT INTO stu (id, name, city)
   ...> VALUES (2, 'Zhao', 'Wuhan');

使用 SELECT 语句即可查看表中的新数据:

sqlite> SELECT * from stu;
id  name  city     score
--  ----  -------  -----
0   Wang  Beijing  50   
1   Li             60   
2   Zhao  Wuhan         

删

可以用 DELETE 语句删除数据库表中已有的记录。它的 SQL 语法如下:

DELETE FROM table_name
WHERE [condition];

这里需要用到 WHERE 语句来确定要删除哪一行的信息。

关于 WHERE 语句,具体用法可以查看介绍匹配语句的博客 SQLite(4):匹配语句。

比如,有一个 stu 表,表中有以下信息:

sqlite> SELECT * from stu;
id  name  city     score
--  ----  -------  -----
0   Wang  Beijing  50   
1   Li             60   
2   Zhao  Wuhan         

如果想删除 Li 同学的数据,可以输入以下语句:

sqlite> DELETE FROM stu
   ...> WHERE name = 'Li';

再次查看表中的数据,可以看到:

sqlite> SELECT * from stu;
id  name  city     score
--  ----  -------  -----
0   Wang  Beijing  50   
2   Zhao  Wuhan  

改

可以用 UPDATE 语句修改数据库表中已有的记录。它的 SQL 语法如下:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

这里需要用到 WHERE 语句来确定要修改哪一行的信息。

关于 WHERE 语句,具体用法可以查看介绍匹配语句的博客 SQLite(4):匹配语句。

比如,有一个 stu 表,表中有以下信息:

sqlite> SELECT * from stu;
id  name  city     score
--  ----  -------  -----
0   Wang  Beijing  50   
1   Li             60   
2   Zhao  Wuhan         

如果想修改 Li 同学的 city 与 score 列,可以输入以下语句:

sqlite> UPDATE stu
   ...> SET city = 'Tianjin', score = 80
   ...> WHERE name = 'Li';

再次查看表中的数据,可以看到:

sqlite> SELECT * from stu;
id  name  city     score
--  ----  -------  -----
0   Wang  Beijing  50   
1   Li    Tianjin  80   
2   Zhao  Wuhan

查

可以用 SELECT 语句获取数据库表中已有的数据,并以结果表的形式返回。这些结果表也被称为结果集。

其 SQL 语法如下:

SELECT column1, column2, columnN FROM table_name;

在这里,column1、column2……是表中的字段,它们的值就是要获取的数据。如果想获取所有字段,可以使用下面的语法:

SELECT * FROM table_name;

比如,有一个 stu 表,我要查看它的所有列,可以输入以下语句:

sqlite> SELECT * from stu;
id  name  city     score
--  ----  -------  -----
0   Wang  Beijing  50   
1   Li    Tianjin  80   
2   Zhao  Wuhan