SQLite数据库创建临时表、增加列的方法
2015-01-11 10:08
225 查看
这两天帮朋友做一个关于地热数据处理的小软件再次用到了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
plaincopyprint?
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
plaincopyprint?
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;
我们都知道,数据库表中增加/删除一列用sql语句实现很简单:
alter table 表名称 add 列名称 数据类型; // 数据库表中增加一列
alter table 表名称 drop column 列名称 数据类型; // 数据库中删除一列
但是,对于SQLite数据库而言有两个问题:
(1) 可以增加一列,但是该列只能是表的最后一列。
(2)不能删除一列。
对于第一个问题,如果你不觉得不爽的话,也没什么关系,并不影响使用,但是对于第二条而言问题就很大了,不支持删除一列还是很麻烦的事情。还要,条条大路通帝都。通过创建临时表的方法,可以很好的解决这个问题。
其实,说简单点儿,如果想删除表A中的一列或者一行,我们首先通过SQL创建一个临时表,然后把表A中期望保留的数据存储到临时表中,然后把表A删除,再通过SQL的create语句创建表A,最后将临时表中的数据再复制回来,算是一种曲线解决问题的方法吧。^_^
还是举两个例子说明最简单明了。
例1:在表coordinate中增加一列自动增长的id列。
[sql]view
plaincopyprint?
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
plaincopyprint?
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;
相关文章推荐
- SQLite数据库创建临时表、增加列的方法
- SQLite数据库创建临时表、增加列的方法
- SQLite数据库创建临时表、增加列的方法
- WORD 或者 Outlook 提示“无法创建工作文件,请检查临时环境变量” 的解决方法
- [导入]在SQL Server和MySql中创建临时表的方法
- 表已经创建再增加约束的方法
- python创建临时文件夹的方法
- Windows7系统创建无线临时(计算机到计算机)网络的方法(图文教程)
- 在SQL库中创建表或临时表的一种方法
- Mysql创建临时表的方法
- NOD32更新时“创建临时文件名时出错”的解决方法
- mootools1.5.1使用笔记:类的创建,继承,为现有类增加新方法
- Word 无法创建工作文件 请检查临时环境变量 解决方法
- sql创建临时表或视图增加 自增列
- sql创建临时表或视图增加 自增列
- 表已经创建再增加约束的方法
- 在存储过程中利用游标创建临时表的方法
- sql判断临时表是否存在和创建临时表的方法
- 创建临时文件的简单方法 .
- C#创建临时文件的方法