在 SQLite 中,ALTER 命令用于修改已经存在的表的结构。具体来说,ALTER TABLE 语句允许你添加、修改或删除表的列,也可以添加或删除索引。以下是一些常见的 ALTER TABLE 操作:

添加列
-- 在表 "table_name" 中添加一个新列 "new_column",数据类型为 INTEGER
ALTER TABLE table_name
ADD COLUMN new_column INTEGER;

修改列
-- 修改表 "table_name" 中的列 "column_name" 的数据类型为 TEXT
-- 注意:SQLite 不直接支持修改列的数据类型,因此需要创建一个新表,将数据导入新表,最后删除旧表
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
CREATE TABLE temp_table AS SELECT * FROM table_name;
DROP TABLE table_name;
CREATE TABLE table_name (
    -- 列出其他列...
    column_name TEXT,
    -- 列出其他列...
);
INSERT INTO table_name SELECT * FROM temp_table;
DROP TABLE temp_table;
COMMIT;
PRAGMA foreign_keys=on;

删除列
-- 删除表 "table_name" 中的列 "column_name"
-- 注意:SQLite 不直接支持删除列,因此需要创建一个新表,将不需要的列排除在外,最后删除旧表
PRAGMA foreign_keys=off;
BEGIN TRANSACTION;
CREATE TABLE temp_table AS SELECT col1, col2, ... FROM table_name;
DROP TABLE table_name;
ALTER TABLE temp_table RENAME TO table_name;
COMMIT;
PRAGMA foreign_keys=on;

添加索引
-- 在表 "table_name" 的列 "column_name" 上创建索引
CREATE INDEX index_name
ON table_name (column_name);

删除索引
-- 删除表 "table_name" 上名为 "index_name" 的索引
DROP INDEX IF EXISTS index_name;

请注意,对于某些操作,SQLite 不支持直接修改表的结构,因此需要通过创建新表、导入数据、删除旧表的方式来完成。在进行任何结构修改操作时,建议在生产环境之前进行充分的测试。


转载请注明出处:http://www.zyzy.cn/article/detail/14192/SQLite