创建表
CREATE TABLE IF NOT EXISTS 'localuser' (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id TEXT NOT NULL,location TEXT)
改变表名
ALTER TABLE '旧表名' RENAME TO '新表名'
删除表
DROP TABLE '表名'
增加一列
ALTER TABLE '表名' ADD COLUMN '列名' '数据类型'
ALTER TABLE case_table ADD COLUMN user_id TEXT NOT NULL DEFAULT '000'
SQLite添加列的限制
(1)添加的列不能定义为主键。
(2)添加的列为日期时间类型,不能使用CURRENT_TIME、CURRENT_DATE、CURRENT_TIMESTAMP作为默认值。
(3)添加列如果设置为NOT NULL,则必须设置默认值。
(4)添加列设置为外键,必须设置默认值为NULL。
(5)每次只能添加一列。
修改列字段属性(Sqlite不能直接修改列属性)
在SQLite中修改列是不被支持的,所以想要修改列的类型,或者说由NOT NULL = true
到 NOT NULL = false
,是不能直接操作的,可以用下列方法来更改
//先将表重命名
ALTER TABLE case_table RENAME TO case_table_old
//重新创建表
CREATE TABLE IF NOT EXISTS case_table (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id TEXT NOT NULL,location TEXT)
//将旧表的内容插入到新表中
INSERT INTO case_table SELECT * FROM case_table_old
//删除旧表
DROP TABLE case_table_old
插入数据
INSERT INTO '表' ('列A','列B')
VALUES('值A','值B')
从其他表插入数据(复制表)
INSERT INTO '表1' ('列A','列B')
select '列A','列B'
from '表2'
INSERT INTO "Student" ("Id", "Name") SELECT "Id", "Title" FROM "_Student_old";
如果列是一一对应就可以insert into Student select * from _Student_old;
从一个表把数据导入另外一个表是根据列的索引顺序,而不是根据列名[添加链接描述](https://www.jianshu.com/p/4c01f6dbd437)
按xxx降序,限制100条数据
SELECT * from case_table ORDER BY time DESC LIMIT 100
按条件查询,用id降序,限制20,每次偏移量5
SELECT * from case_table where time
between startDate and endDate
and user_id = 123 ORDER BY id DESC LIMIT 20 offset 5
参考:https://blog.youkuaiyun.com/zzyawei/article/details/78593954
https://www.cnblogs.com/ioter/articles/3733376.html
查询指定行数
https://blog.youkuaiyun.com/chenrunhua/article/details/50537683
查询指定条数的数据(limit用法)