ALTER TABLE table_name DROP COLUMN column_name;
(需SQLite 3.8.9+支持,操作前建议备份数据)。
SQLite(Android 默认数据库)不支持直接删除列,需通过重建表的方式间接实现,以下是具体步骤和代码示例:
假设原表为 users
,需删除列 age
:
-1. 创建临时表(排除需删除的列) CREATE TABLE IF NOT EXISTS users_temp AS SELECT id, name, email FROM users; -2. 删除原表 DROP TABLE users; -3. 重命名临时表为原表名 ALTER TABLE users_temp RENAME TO users; -4. 重新创建索引(如有) -例如原表有主键索引: CREATE UNIQUE INDEX index_users_id ON users(id);
关键点 | 说明 |
---|---|
事务处理 | 使用 BEGIN TRANSACTION 和 COMMIT 包裹操作,避免数据不一致。 |
自增主键重置 | 重建表后,自增主键值会从初始值(如 1 )重新开始,需提前备份最大值。 |
外键约束 | 如果涉及外键,需暂时禁用约束或调整依赖关系。 |
大表性能 | 对大表操作时,建议分批导出数据或使用 INSERT INTO new_table SELECT ... 。 |
解答:
SQLite 支持 ALTER TABLE
添加列,直接执行:
ALTER TABLE table_name ADD COLUMN new_column_name TEXT;
注意:添加列后,原有数据中新列的值会为 NULL
。
解答:
SQLite 允许通过以下步骤修改列类型(需重建表):
-示例:将列 age 从 INTEGER 改为 REAL CREATE TABLE temp_table AS SELECT id, name, CAST(age AS REAL) as age FROM original_table; DROP TABLE original_table; ALTER TABLE temp_table RENAME TO original_table;