如何在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

SQLite的autoincrement是一个关键字,用于表中的字段值自动递增。可以在创建表时在特定的列名称上使用autoincrement关键字实现该字段值的自动增加。

关键字autoincrement只能用于整型(integer)字段。

autoincrement关键字的基本用法如下:

CREATE TABLE table_name(

column1 INTEGER AUTOINCREMENT,

column2 datatype,

column3 datatype,

.....

columnN datatype,

)

假设要创建的company表如下所示:

sqlite>CREATE TABLE COMPANY(

ID INTEGER PRIMARY KEY  AUTOINCREMENT,

NAME  TEXT NOT NULL,

AGE INT  NOT NULL,

ADDRESS CHAR(50),

SALARY  REAL

)

现在,向company表插入以下记录:

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( 'Paul', 32, 'California', 20000.00 )

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ('Allen', 25, 'Texas', 15000.00 )

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ('Teddy', 23, 'Norway', 20000.00 )

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( 'Mark', 25, 'Rich-Mond ', 65000.00 )

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( 'David', 27, 'Texas', 85000.00 )

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( 'Kim', 22, 'South-Hall', 45000.00 )

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)

VALUES ( 'James', 24, 'Houston', 10000.00 )

这将向 COMPANY 表插入 7 个元组,此时 COMPANY 表的记录如下:

ID NAME AGE  ADDRESS  SALARY

---------- ---------- ---------- ---------- ----------

1  Paul 32 California 20000.0

2  Allen  25 Texas  15000.0

3  Teddy  23 Norway 20000.0

4  Mark 25 Rich-Mond  65000.0

5  David  27 Texas  85000.0

6  Kim  22 South-Hall 45000.0

7  James  24 Houston  10000.0


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存