SQLite数据库升级

一、数据库升级,主要有以下这几种情况:

  1. 增加表
  2. 删除表
  3. 修改表
    (1) 更改表名字
    (2) 增加表字段
    (3) 删除表字段、更改一个已经存在字段的名称、数据类型等等

按实现方式分类

1、删除一个已经存在的字段,或者更改一个已经存在字段的名称、数据类型等等
2、增加表、删除表、增加表字段、修改表名字

二、增加表和删除表

问题不大,因为它们都没有涉及到数据的迁移问题,增加表只是在原来的基础上CRTATE TABLE,而删除表就是对历史数据不需要了,那只要DROP TABLE即可。那么修改表呢?

三、修改表

1、 SQLite 仅仅支持 ALTER TABLE 语句的一部分功能,我们可以用 ALTER TABLE 语句来更改一个表的名字,也可向表中增加一个字段(列)

ALTER TABLE 旧表名 RENAME TO 新表名  // 改变表名 
ALTER TABLE 表名 ADD COLUMN 列名 数据类型  // 增加一列

2、 但是我们不能删除一个已经存在的字段,或者更改一个已经存在字段的名称、数据类型等等

这时候只能使用复制表思想了,具体步骤如下:

// 将表名改为临时表
ALTER TABLE student RENAME TO student_temp;

// 创建新表
CREATE TABLE student (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT);

// 导入数据
INSERT INTO student (id, name) SELECT id, title FROM student_temp;

// 更新sqlite_sequence
UPDATE sqlite_sequence SET seq = 3 WHERE name = student;

// 由于在SQLite中使用自增长字段,引擎会自动产生一个sqlite_sequence表,
// 用于记录每个表的自增长字段的已使用的最大值,所以要一起更新下。
// 如果有没有设置自增长,则跳过此步骤。

// 删除临时表(可选)
DROP TABLE student_temp;

四、增加表、删除表、增加表的字段、更改表名字

这几种情况参考:Android SQLite数据库版本升级原理解析

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值