SQLite3 数据库升级

在当前数据库中创建表
 create table person(id integer,name Text);


插入两条数据
insert into person values(1,"zhangsan");
insert into person values(2,"lisi");


查看当前的数据库内容
select * from person;


1|zhangsan
2|lisi


一、给表添加新列



新添加一列 sex
 alter table person add column sex Text default 'male';

再次查询
1|zhangsan|male
2|lisi|male
多了一列 sex 其默认值是 male


二、删除表中的某列


现在想删除刚才添加的列 sex
alter table person drop column sex;

你会得到这样的错误
Error: near "drop": syntax error
sqlite 不支持该项操作。


如果在数据库升级中,需要删除原有的列,怎么办?
step1. 创建新表
create table new_person(id integer,name text);

step2. 复制原有表中的数据
insert into new_person select id,name from person;

step3. 删除原来的表
drop table person;


再次查询表 new_person
1|zhangsan
2|lisi

这样就模拟了删除列的操作。

还有这样一种情况,原有表中的字段少于即将升级的数据库表字段。
person(原来的旧表):只有字段 id、name
new_person(升级的表):有三个字段 id、name、sex(升级的目的就是想多加该列)


可以这样做
 
insert into new_person select id,name,'female' from person;

其中,'female' 是 sex 列的默认值。




©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页