Sqlite之修改表中某一列

Sqlite是不能像其他数据库那样对列进行修改的,包括队列的重命名,删除列,修改列属性等操作

比如像mysql,其对表中的某一列是可以直接用sql进行操作的,如:

alter table test drop  column name; --删除表列 

alter table test modify address char(10) --修改表列类型  或者 alter table test change address address char(40) 

alter table test change column address address1 varchar(30)--修改表列名

这些操作Sqlite都是不能直接操作的

那Sqlite如何实现对列的修改呢?下面提供一种思路:

首先将你所要修改的表,将表名改成临时表:

如:ALTER TABLE "Student" RENAME TO "_Student_old_20140409";

其次,再创建一张新表,新表的字段就是你所需要的字段,新表中的数据就是临时表中的数据,这样确保数据的完整性:

如:

CREATE TABLE "Student" (

"Id"  INTEGER PRIMARY KEY AUTOINCREMENT,

"Name"  Text);

INSERT INTO "Student" ("Id", "Name") SELECT "Id", "Title" FROM "_Student_old_20140409";

这样来间接修改列,有点麻烦


有些做法是直接,它在创建新表时同时把数据插进去,如:

create table Student as select Id,Name from _Student_old_20140409;

这样得到的Student也是有数据的,得到表的列也是可以符合我们的需求的,

但是有个问题是,这种方式得到的Student表,它是完全没有索引的,包括主键索引,所以要自行再加上主键索引和其他需要的索引


另外,附上Sqlite的命令操作手册:http://www.runoob.com/sqlite/sqlite-index.html


猜你喜欢

转载自blog.csdn.net/CNYYGJ/article/details/80074664