iOS 数据库存储 sqlite

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这个参数内容进行格式强转,那么相同月份的时间戳强转后他们的值会相同,也就能把相同月份的数据统计到一起

你可能感兴趣的:(iOS 数据库存储 sqlite)