SQLite 创建、修改、删除表并举例

以下各节将介绍如何创建表、修改表结构以及删除表。 SQLite3. 通过示例介绍 CREATE TABLE、ALTER TABLE 和 DROP TABLE 命令。
SQLite 创建表格
句法
以下是 CREATE TABLE 语句的语法。
CREATE TABLE table_name( column1 datatype, column1 datatype );
要创建表,您应该使用“CREATE TABLE”查询,如下所示:
CREATE TABLE guru99 ( Id Int, Name Varchar );
在表名后的两个括号内,定义表的列,每列应具有以下属性:
- 名称,列名在表的列中应该是唯一的。
- 数据类型——列数据类型。
- 可选列约束,我们将在本教程的后续章节中进行解释。
SQLite 如果表不存在则创建表
当脚本运行多次时,如果表已存在,则普通的 CREATE TABLE 语句会失败并报错停止。 SQLite 它使用可选的 IF NOT EXISTS 子句解决了这个问题,该子句仅在表不存在时创建表,而当表已存在时则不执行任何操作。
CREATE TABLE IF NOT EXISTS guru99 ( Id Int, Name Varchar );
上述语句永远不会引发“表已存在”错误,因此可以安全地将其放在设置或迁移脚本的顶部。
删除表时,原理相同。在 DROP TABLE 语句中添加 IF EXISTS 可以避免因表已存在而导致的错误:
DROP TABLE IF EXISTS guru99;
这两个条款在自动化脚本中都很常见,因为它们允许同一个文件重复运行,而无需在运行之间进行手动清理。
放下桌子
要删除表,请使用“DROP TABLE”命令,后跟表名,如下所示:
DROP TABLE guru99;
改变表格
您可以使用“ALTER TABLE”命令重命名表,如下所示:
ALTER TABLE guru99 RENAME TO guru100;
要验证表名是否已更改,可以使用命令“.tables”显示表列表,表名现在应该已更改为如下所示:
如您所见,执行“alter table”命令后,表名“guru99”已更改为“guru100”。
SQLite 添加列 - 使用 ALTER TABLE 命令
您还可以使用“ALTER TABLE”命令添加列:
ALTER TABLE guru100 ADD COLUMN Age INT;
这将修改“guru100”表,并向其中添加一列“年龄”。
如果没有看到任何输出,则表示语句执行成功,列已添加。没有输出意味着光标将位于“sqlite>”之后,后面没有任何文本,如下所示:
但是,为了验证列是否已添加,我们可以使用命令“.schema guru100”。这将显示表定义,您应该可以看到我们刚刚添加的新列:
SQLite ALTER TABLE:重命名和删除列
除了增加一列之外,现代版本 SQLite 还可以重命名单个列或删除列。重命名列的功能自 [版本号] 起可用。 SQLite 3.25,它会更新表定义中的名称,以及引用该列的每个索引、触发器和视图中的名称。
ALTER TABLE guru100 RENAME COLUMN Name TO FullName;
要删除一列, SQLite 3.35 及更高版本支持直接使用 DROP COLUMN 子句:
ALTER TABLE guru100 DROP COLUMN Age;
当列是主键、唯一约束或索引的一部分时,无法删除该列。在旧版本中, SQLite 对于缺少 DROP COLUMN 的版本,经典的解决方法是创建一个包含所需列的新表,将行复制过去,删除旧表,最后重命名新表。
如何在……中复制表格 SQLite 使用 CREATE TABLE AS SELECT
有时您需要一份表的副本,无论是作为进行风险更改前的备份,还是作为创建新表的起点。 SQLite 它使用 CREATE TABLE AS SELECT 一步构建完成,该语句创建一个新表,其列来自查询,并用查询返回的行填充该表。
CREATE TABLE guru100_backup AS SELECT * FROM guru100;
新表“guru100_backup”接收来自“guru100”表的相同列和每一行数据。要仅复制某些行,请在 SELECT 语句中添加 WHERE 子句:
CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;
需要记住的一点是,CREATE TABLE AS SELECT 会复制列名、类型和数据,但不会复制主键、其他约束或索引。如果副本必须强制执行与原始表相同的规则,则需要自行将这些信息添加到新表中。
SQLite 将值插入表中
要向表中插入值,我们使用“INSERT INTO”语句,如下所示:
INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);
可以省略表名后的列名,如下写:
INSERT INTO Tablename VALUES(value1, value2, ….);
在这种情况下,如果您从表中省略列名,则插入的值的数量必须与表的列数完全相同。然后每个值都将插入到对应的列中。例如,对于以下插入语句:
INSERT INTO guru100 VALUES(1, 'Mike', 25);
该语句的结果如下:
- 值 1 将被插入到“id”列中。
- 值“Mike”将被插入到“姓名”列中,
- 值 25 将被插入到“年龄”列中。
INSERT … DEFAULT VALUES 语句
您可以一次性使用列的默认值填充表,如下所示:
INSERT INTO Tablename DEFAULT VALUES;
如果某一列不允许空值或默认值,则会收到“该列的 NOT NULL 约束失败”的错误提示。如下所示:





