SQLite数据库创建临时表、增加列的方法

SQLite数据库创建临时表、增加列的方法,第1张

概述        这两天帮朋友做一个关于地热数据处理的小软件再次用到了SQLite数据库,不过这次不是使用其缓存/内存数据库的功能,而是纯粹将其作为一个嵌入式文件数据库来使用的,其实对于数据量级相对比较小的系统而言,嵌入式数据库SQLite绝对是一个非常理想的选择。但是,话又说回来,毕竟是一个没有DBA的数据库系统,因此所能实现的功能相对就比较简单,这不,遇到了想在一张表中增加一列的功能时着实让我头

这两天帮朋友做一个关于地热数据处理的小软件再次用到了sqlite数据库,不过这次不是使用其缓存/内存数据库的功能,而是纯粹将其作为一个嵌入式文件数据库来使用的,其实对于数据量级相对比较小的系统而言,嵌入式数据库sqlite绝对是一个非常理想的选择。但是,话又说回来,毕竟是一个没有DBA的数据库系统,因此所能实现的功能相对就比较简单,这不,遇到了想在一张表中增加一列的功能时着实让我头疼了一个下午的时光。

我们都知道,数据库表中增加/删除一列用SQL语句实现很简单:

alter table 表名称 add 列名称 数据类型; // 数据库表中增加一列

alter table 表名称 drop column 列名称 数据类型; // 数据库中删除一列

但是,对于sqlite数据库而言有两个问题:

(1) 可以增加一列,但是该列只能是表的最后一列。

(2)不能删除一列。

对于第一个问题,如果你不觉得不爽的话,也没什么关系,并不影响使用,但是对于第二条而言问题就很大了,不支持删除一列还是很麻烦的事情。还要,条条大路通帝都。通过创建临时表的方法,可以很好的解决这个问题。

其实,说简单点儿,如果想删除表A中的一列或者一行,我们首先通过sql创建一个临时表,然后把表A中期望保留的数据存储到临时表中,然后把表A删除,再通过sql的create语句创建表A,最后将临时表中的数据再复制回来,算是一种曲线解决问题的方法吧。^_^

还是举两个例子说明最简单明了。

例1:在表coordinate中增加一列自动增长的ID列。

BEGIN TRANSACTION;CREATE TEMPORARY table ptemp(provinceID int,longitude double,latitude double);INSERT INTO ptemp SELECT provinceID,longitude,latitude FROM coordinate;DROP table coordinate;CREATE table provincecoordinate(ID INTEGER PRIMARY KEY autoINCREMENT,provinceID int,latitude double);INSERT INTO provincecoordinate(provinceID,latitude) SELECT provinceID,latitude FROM ptemp;DROP table ptemp;COMMIT;

例2:在表china中增加一列自动增长的ID列。

BEGIN TRANSACTION;CREATE TEMPORARY table ptemp(longitude double,latitude double);INSERT INTO ptemp SELECT longitude,latitude FROM china;DROP table china;CREATE table china(ID INTEGER PRIMARY KEY autoINCREMENT,latitude double);INSERT INTO china(longitude,latitude) SELECT longitude,latitude FROM ptemp;DROP table ptemp;COMMIT;

阿科

2012年9月22日于北京邮电大学新科研楼302

总结

以上是内存溢出为你收集整理的SQLite数据库创建临时表、增加列的方法全部内容,希望文章能够帮你解决SQLite数据库创建临时表、增加列的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1181591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存