OC系统用的是sqlite数据库,下面来总结一些常用的sqlite数据库语言
新建表
CREATE TABLE IF NOT EXISTS 'table_name' ('timeStamp' text,'money' text,'remark' text ,'createTime' date,primary key(timeStamp))
//IF NOT EXISTS,添加这一句表示如果不存在该表才创建,可以防止重复创建
//primary key(timeStamp),添加每条记录的唯一参数,可以添加多个参数名,进行组合匹配,类似于系统自动生成的id的作用。
对已存在的表插入一个参数
ALTER TABLE table_name ADD createTime date
//createTime date就是要插入参数的参数名和类型
对已存在的表删除一个参数
ALTER TABLE table_name DROP COLUMN createTime
//createTime date就是要插入参数的参数名和类型
增加插入一条数据
INSERT INTO table_name(timeStamp,remark)values(1657908293,333,'张三')
修改一条数据
UPDATE table_name SET remark = '王五' WHERE timeStamp = 1657908293
如果我们不清楚记录是否已添加,可以直接对已经存在的记录进行更新或添加
INSERT OR REPLACE INTO table_name VALUES(1657908293,'张三',2021-01-01)
//这种添加方法需要所有的value和创建表的value进行一一对应,并且会根据设置的primary key进行更新或新增,比如timeStamp为primary key,那么如果表里已经有一条timeStamp=1657908293的数据时,在插入一条timeStamp=1657908293的数据,则会更新旧数据,否则则新增一条timeStamp=1657908293的数据。
删除一条数据
DELETE FROM table_nameWHERE timeStamp = 1657908293
删除一张表
DROP TABLE table_name
查询表
SELECT * FROM table_name
查询表的某一列数据
SELECT timeStamp FROM table_name
条件查询
SELECT * FROM table_name WHERE timeStamp = 1657908293
查询结果排序
SELECT * FROM table_name ORDER BY timeStamp ASC //升序
SELECT * FROM table_name ORDER BY timeStamp DESC //降序
统计某一列参数的总和
SELECT SUM(money) totalMoney FROM table_name
//totalMoney为统计出结果的参数名
分别统计出不同条件的总和
SELECT SUM(CASE WHEN money <0 THEN money ELSE 0 END) totalPay,SUM(CASE WHEN money >=0 THEN money ELSE 0 END) totalIncome FROM table_name
//totalPay为所有money值大于0的统计,totalIncome为所有money值小于0的统计
//CASE WHEN money <0 THEN money ELSE 0 END,表示只有当money <0的时候数据才会被统计,否则以0记
月统计
SELECT SUM(CASE WHEN %@ THEN money ELSE 0 END) totalPay,SUM(CASE WHEN %@ THEN money ELSE 0 END) totalIncome ,strftime('%Y年-%m月',createTime) monthDay FROM table_name GROUP BY strftime('%Y-%m',createTime)
//totalPay为每月money值大于0的统计,totalIncome为每月money值小于0的统计,monthDay为月份,日统计,年统计可以用类似的方式
//strftime('%Y年-%m月',createTime),表示对createTime这个参数内容进行格式强转,那么相同月份的时间戳强转后他们的值会相同,也就能把相同月份的数据统计到一起