如何在sqlite数据库中给某个表增加一列?

如何在sqlite数据库中给某个表增加一列?,第1张

对于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, longitude double, latitude double)  

INSERT INTO provincecoordinate(provinceID, longitude, latitude) SELECT provinceID, longitude, 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, longitude double, latitude double)  

INSERT INTO china(longitude, latitude) SELECT longitude, latitude FROM ptemp  

DROP TABLE ptemp  

COMMIT

ALTER TABLE的SQLite SQLite支持ALTER TABLE的一个有限子集。在ALTER SQLite中允许一个表或一个新列添加到现有表。删除列,或者添加或从表中删除约束。sqlite中是不支持删除有值的列 *** 作的,所以alter table table_name drop column col_name这个语句在sqlite中是无效的,而替代的方法可以如下:

1.根据原表创建一张新表

2.删除原表

3.将新表重名为旧表的名称

示例例子如下

1.创建一张旧表Student,包含id(主码),name, tel

create table student (

id integer primary key,

name text,

tel text

)

2.给旧表插入两个值

insert into student(id,name,tel) values(101,"Jack","110")

insert into student(id,name,tel) values(102,"Rose","119")

结果如图

3.接下来我们删除电话这个列,首先根据student表创建一张新表teacher

create table teacher as select id,name from student

4.然后我们删除student这个表

drop table if exists student

5.将teacher这个表重命名为student

alter table teacher rename to student

结果演示:

select * from student order by name desc(desc降序, asc升序)

ALTER TABLE table-name ADD COLUMN column-name column-type

例如在student表中添加一列名为name,类型为varchar:

alter table student add column name varchar


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

原文地址: http://outofmemory.cn/bake/11899133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存