SQLite数据库创建临时表、增加列的方法
2017-09-06 19:30
337 查看
这两天帮朋友做一个关于地热数据处理的小软件再次用到了SQLite数据库,不过这次不是使用其缓存/内存数据库的功能,而是纯粹将其作为一个嵌入式文件数据库来使用的,其实对于数据量级相对比较小的系统而言,嵌入式数据库SQLite绝对是一个非常理想的选择。但是,话又说回来,毕竟是一个没有DBA的数据库系统,因此所能实现的功能相对就比较简单,这不,遇到了想在一张表中增加一列的功能时着实让我头疼了一个下午的时光。
我们都知道,数据库表中增加/删除一列用sql语句实现很简单:
alter table 表名称 add 列名称 数据类型; // 数据库表中增加一列
alter table 表名称 drop column 列名称 数据类型; // 数据库中删除一列
但是,对于SQLite数据库而言有两个问题:
(1) 可以增加一列,但是该列只能是表的最后一列。
(2)不能删除一列。
对于第一个问题,如果你不觉得不爽的话,也没什么关系,并不影响使用,但是对于第二条而言问题就很大了,不支持删除一列还是很麻烦的事情。还要,条条大路通帝都。通过创建临时表的方法,可以很好的解决这个问题。
其实,说简单点儿,如果想删除表A中的一列或者一行,我们首先通过SQL创建一个临时表,然后把表A中期望保留的数据存储到临时表中,然后把表A删除,再通过SQL的create语句创建表A,最后将临时表中的数据再复制回来,算是一种曲线解决问题的方法吧。^_^
还是举两个例子说明最简单明了。
例1:在表coordinate中增加一列自动增长的id列。
[sql] view plain copy print?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, longitude double, latitude double); INSERT INTO provincecoordinate(provinceID, longitude, latitude) SELECT provinceID, longitude, latitude FROM ptemp; DROP TABLE ptemp; COMMIT;
例2:在表china中增加一列自动增长的id列。
[sql] view plain copy print?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, longitude double, latitude double); INSERT INTO china(longitude, latitude) SELECT longitude, latitude FROM ptemp; DROP TABLE ptemp; COMMIT;
阿科
2012年9月22日于北京邮电大学新科研楼302
9540
我们都知道,数据库表中增加/删除一列用sql语句实现很简单:
alter table 表名称 add 列名称 数据类型; // 数据库表中增加一列
alter table 表名称 drop column 列名称 数据类型; // 数据库中删除一列
但是,对于SQLite数据库而言有两个问题:
(1) 可以增加一列,但是该列只能是表的最后一列。
(2)不能删除一列。
对于第一个问题,如果你不觉得不爽的话,也没什么关系,并不影响使用,但是对于第二条而言问题就很大了,不支持删除一列还是很麻烦的事情。还要,条条大路通帝都。通过创建临时表的方法,可以很好的解决这个问题。
其实,说简单点儿,如果想删除表A中的一列或者一行,我们首先通过SQL创建一个临时表,然后把表A中期望保留的数据存储到临时表中,然后把表A删除,再通过SQL的create语句创建表A,最后将临时表中的数据再复制回来,算是一种曲线解决问题的方法吧。^_^
还是举两个例子说明最简单明了。
例1:在表coordinate中增加一列自动增长的id列。
[sql] view plain copy print?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, longitude double, latitude double); INSERT INTO provincecoordinate(provinceID, longitude, latitude) SELECT provinceID, longitude, latitude FROM ptemp; DROP TABLE ptemp; COMMIT;
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, longitude double, latitude double); INSERT INTO provincecoordinate(provinceID, longitude, latitude) SELECT provinceID, longitude, latitude FROM ptemp; DROP TABLE ptemp; COMMIT;
例2:在表china中增加一列自动增长的id列。
[sql] view plain copy print?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, longitude double, latitude double); INSERT INTO china(longitude, latitude) SELECT longitude, latitude FROM ptemp; DROP TABLE ptemp; COMMIT;
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, longitude double, latitude double); INSERT INTO china(longitude, latitude) SELECT longitude, latitude FROM ptemp; DROP TABLE ptemp; COMMIT;
阿科
2012年9月22日于北京邮电大学新科研楼302
9540
相关文章推荐
- SQLite数据库创建临时表、增加列的方法
- SQLite数据库创建临时表、增加列的方法
- SQLite数据库创建临时表、增加列的方法
- SQLite数据库的创建、常用方法增删改查
- 创建临时文件的简单方法
- WORD 或者 Outlook 提示“无法创建工作文件,请检查临时环境变量” 的解决方法
- sql创建临时表或视图增加 自增列
- python创建临时文件夹的方法
- MSSQL创建临时表的两种方法
- NOD32更新时“创建临时文件名时出错”的解决方法
- 解决MySQL因不能创建临时文件而导致无法启动的方法
- 表已经创建再增加约束的方法
- Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
- [沫沫金原创]Oracle创建按天自动分区并增加按列值子分区的实现方法
- 安卓Android通过字段映射创建sqlite数据库,操作数据库,创建表,增、删、改查,通用方法,轻松编程(by寒冬)
- [导入]在SQL Server和MySql中创建临时表的方法
- sql判断临时表是否存在和创建临时表的方法
- Java创建一个临时文件方法
- Word出现"无法创建工作文件,请检查临时环境变量"的解决方法
- Qt操作SQLite数据库——创建、打开、关闭、增加、删除和修改操作