SQLite

SQLite,是一个轻型的关系型数据库,它的设计目标是支持,嵌入式,它占用的资源非常低,在嵌入式设备中,他可能只需要几百K的内存,它能够支持WIndows/LINUX/等等主流的操作系统,目前版本是SQLite3

主键:唯一标示一条记录的字段(它会随着数据自动增加)
外键:在本表中存在其他表中的主键字段
关系型数据库:就是根据主键和外键关联起来的
多个表之间的联系

数据类型

存储值类型.png

Boolean数据类型

SQLite没有单独的Boolean存储类。相反,布尔值被存储为整数0(false)和1(true)。

Date与Time数据类型

  存储值                    格式        
  TEXT-> 格式为“YYYY-MM-DD HH:MM:SS.SSS" 的日期                                                                                                   
  REAL -> 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数   
  INTEGER->从 1970-01-01 00:00:00 UTC 算起的秒数。        

常用指令

插入INSERT

INSERT INTO table_name VALUES (8, 'Paul', 24, 'Houston', 20000.00 )

SQLite Update

用于修改表中已有的记录。

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];

SQLIte Delete

SQLite 的 DELETE 查询用于删除表中已有的记录

DELETE FROM table_name WHERE [condition];

查询手册

SQLite LIKE 子句

  • 百分号(%)
  • 下划线(
    百分号(%)代表零个、一个或多个数字或字符。下划线(
    )代表一个单一的数字或字符。这些符号可以被组合使用。
LIke.png

SQLite GLOB 子句

SQLite的GLOB运算符是用来匹配通配符指定模式的文本值。

注意GLOB是大小写敏感的

  • 星号(*)代表零个,一个或者多个数字或字符
  • 问号(?) 代表一个单一的数字或字符
GLOB.png

SQLite limit 子句

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows]   

选取所对应的表单的个行数

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows] OFFSET [row num] 

选取到指定的个数并返回

Example:

SELECT * FROM table_name LIMIT 3 OFFSET 2

选出对应的三个记录

SQLite Order By

SQLite 的 ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。

ORDER BY 子句的基本语法如下:

SELECT * FROM table_name where 条件 ORDER BY 【键值,键值,…】【 DESC(降序),ASC(升序)】

SELECT * FROM table_name ORDER BY key DESC

从表中选取对应的key以降序排列

SQlite Group By

SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。

SELECT column-list FROM table_name WHERE [ conditions ]
GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN

Example:

SELECT NAME, SUM(SALARY) FROM table_name GROUP BY NAME;

C/C++接口

API&描述

  • sqlite3_open(const char *filename, sqlite3 **ppDb) 该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。 如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。 如果文件名 filename 不为 NULL,那么 sqlite3open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3open() 将创建一个新的命名为该名称的数据库文件并打开
  1.  sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)                                                                                                         该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成                                                                                                      在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误                                                                                                        sqlite3exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。
    
  • sqlite3_close(sqlite3*) 该例程关闭之前调用 sqlite3open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成 如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息

连接数据库

int main(int argc, char* argv[]) {
sqlite3 *db;
char *zErrMsg = 0; int rc;
//打开数据库
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %sn", sqlite3_errmsg(db)); exit(0);
}else{
fprintf(stderr, "Opened database successfullyn");
}
sqlite3_close(db);
}

SQLite

重新命名数据库的表

ALTER TABLE database_name.table_name RENAME TO new_table_name;

添加一个新的字段

ALTER TABLE table_name ADD COLUMN SEX char(1);

数据还需要多加练习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容