CREATE TABLE emperors( id integer primary key autoincrement, name text,dynasty text,start_year text)
SQLite最大的特点在于其数据类型为无数据类型(typelessness)。这意味着可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite并不做任何检查。开发人员要靠自己的程序来控制输入与读出数据的类型。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。虽然,SQLite允许忽略数据类型,但是,仍然建议在Create Table语句中指定数据类型,因为数据类型有利于增强程序的可读性。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的。
对于SQLite数据库而言有两个问题:
(1) 可以增加一列,但是该列只能是表的最后一列。
(2)不能删除一列。
如果想删除表A中的一列或者一行,首先通过SQL创建一个临时表,然后把表A中期望保留的数据存储到临时表中,然后把表A删除,再通过SQL的create语句创建表A,最后将临时表中的数据再复制回来
例1:在表coordinate中增加一列自动增长的id列。
BEGIN TRANSACTIONCREATE 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 TRANSACTIONCREATE 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)