SQLite学习
文章平均质量分 69
-逗你玩儿-
这个作者很懒,什么都没留下…
展开
-
SQLite学习笔记(2)
(1)虚拟数据库引擎(VBDE),包含:VBDE程序、程序计数器、结果字段的名称和类型、 参数的绑定值、 运行栈和固定数量的编号的内在单元。VBDE虚拟机的的每条指令都由128个中的某一个操作码 和 三个操作数构成。C api 可和VBDE 直接交互。要得到SQL的VBDE程序,可做入下操作; .mode column .header on .width x原创 2012-08-19 13:27:25 · 1371 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中H ) ?
索引: 索引是一种在某种条件下的加速查询的结构。一般的查询都是顺序扫描所有的行。如果表很大,查询很频繁,那么一般的查询就很臃肿。SQLite利用B-tree做索引。索引增加了数据库的大小,在建立索引的情况下,最坏的情况就是表的内容翻倍,索引的维护也比较麻烦。修改表的时候,索引也是要修改的。 索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存原创 2012-09-08 19:01:55 · 1623 阅读 · 1 评论 -
SQLite学习笔记(4)
关于设计与概念(对前面来转载自MRDB前辈的文章)的补充:注意预查询几个比较重要的c API函数:sqlite3_prepare_v2( );sqlite3_step( ) ; sqlite_finalize( )。临时存储器: 查询处理的重要组成部分。RAM或者一个简单的文件,由编译指示命令temp_store来选择,在选择基于文件的存储时,原创 2012-09-12 14:11:35 · 3076 阅读 · 0 评论 -
sqlite3.7.4的第二轮学习
今天开始sqlite3.7.4的第二轮学习。重点:看源码;看数据结构与算法;看C/C++的数组、指针、类封装等等。注意事项:1,源码看的时候要分类,知道某段代码是干什么的,具体怎么回事可以暂时先做个标记再放一放,总体上将代码分开模块来看,清楚原理是首要任务。2,必要的时候,可以对代码编译,但是暂时没有什么意义。3,必要的时候,必须对数据库进行一定的操作,再次回顾语法、功能以及其原创 2012-10-02 16:11:22 · 1208 阅读 · 3 评论 -
SQLite学习笔记(6)
准备查询的优点: 不需要回调接口,编码简单、清晰;关联了提供信息的函数,可以获得列的存储类型、声明类型、模式名称、表名、数据库名;sqlite3_exec( )的接口只是提供列的名称;准备查询提供一种文本外的获取字段、列值的方法,可以以C数据类型获取;准备查询能重新运行,可以重用已经编译的SQL;准备查询支持参数化的SQL语句 检查变化:原创 2012-09-13 15:43:19 · 7663 阅读 · 0 评论 -
SQLite可视化管理工具汇总
分类: 数据库 2012-09-14 17:21 115人阅读 评论(1)收藏 举报搜集了一些SQLite工具,在这里做个总结,有的工具用的多一些,有的只是简单试用,甚至未试用,所以有描述不当的还请回复指正,也欢迎补充完善!【免费且保持更新】1、SQLiteSpy 免费 单文件http://www.yunqa.de/delphi/doku.php/produ转载 2012-09-16 02:20:46 · 1643 阅读 · 0 评论 -
SQLite学习笔记(7)
首先要注意句柄关联。其次,开始看关于查询参数化的内容。查询参数化: API支持在SQL语句中绑定参数,允许在后面为参数提供值,绑定的参数与sqlite3_prepare( ) 一起使用。如果没有绑定参数,那么sqlite3_step()默认使用null作为该参数的值。 准备语句过后,将使用sqlite3_bind_xxx( ) 函数绑定参数值。原创 2012-09-15 12:55:23 · 5925 阅读 · 1 评论 -
SQLite学习笔记(8)
线程: SQLite的很多版本支持多线程。 共享缓存模型: 允许一个进程中的多个连接使用共同的页缓存。用于嵌入式服务器的情况比较多。 Thread →Server→con→Page Cache→database。 共享缓存模式中,线原创 2012-09-15 13:55:46 · 2831 阅读 · 0 评论 -
SQLite学习笔记(9)
扩展 C API实现函数、聚合、排序的基本方法是使用回调函数,并在程序中注册,然后在SQL中使用。函数和聚合使用相同的注册函数和类似的回调函数。用户自定义聚合、函数和排序规则的生命周期是很短的,基于连接注册,不存储在数据库中,需要确保应用程序夹杂了定制扩展并在连接中注册。扩展必须在每一个使用它们的连接上注册。注册函数: 可以使用sqlite3_create_f原创 2012-09-16 16:37:50 · 1655 阅读 · 0 评论 -
学习SQLite的一些代码
遍历整个表,并把查询结果输出:int main(int argc, char **argv){ int rc, i, id, cid; char *name; char *sql; char *zErr; sqlite3 *db; sqlite3_stmt *stmt; sql="select id,name,cid fr原创 2012-09-18 01:57:29 · 946 阅读 · 2 评论 -
Version 3.3.6源代码文件结构
来自博客园:MrDB's的博客,谢谢MrDB's。 链接:http://www.cnblogs.com/hustcat/archive/2009/02/26/1398896.html ——整理:hustcat 2009-2-19文件名称大小转载 2012-09-18 09:30:47 · 1016 阅读 · 1 评论 -
SQLite学习笔记(11)命令行工具
SPANstyle="COLOR: #ff0000">sqlite> .helpSPAN>.backup ?DB?FILE BackupDB (default "main") to FILE.bail ON|OFF Stop after hitting an error. Default OFF.databases原创 2012-09-19 17:28:44 · 1879 阅读 · 0 评论 -
SQLite源码学习笔记乱弹,主要是前12000行左右。
笔记会记的很乱,在研究完或者中期的时候将会根据情况整理。sqlitelimit.h文件嵌在sqliteINT.h中。指明了在表中对于blob和text字节的限制;指明了表、索引、视图、update、group by、select等的限制,最高能超过32676条记录或字段,SQL语句长度、缓存大小、可以附加数据库的多少、数据库文件的最大页数等等。函数assert(),其实是个测试函数。在定义原创 2012-10-10 11:01:03 · 1701 阅读 · 0 评论 -
SQLite学习笔记(5)
核心C API: 查询封装: 连接与断开连接: 其实就是打开数据库。可以使用函数sqlite3_open_v2( )、 sqlite3_open( ) 、sqlite3_ open16( )。其中sqlite3_open_v2( )函数功能最强大,也是最新的函数,尽量使用这个函数。 打开数据库函数声原创 2012-09-12 21:29:40 · 9098 阅读 · 0 评论 -
SQLite的设计与概念
1、 API由两部分组成: 核心API(core API) 和扩展API(extension API)核心API的函数实现基本的数据库操作:连接数据库,处理SQL,遍历结果集。它也包括一些实用函数,比如字符串转换,操作控制,调试和错误处理。扩展API通过创建你自定义的SQL函数去扩展SQLite。1.1、SQLite Version 3的一些新特点:(1)SQLite的API全转载 2012-08-23 22:44:38 · 856 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中I )
事务: 事务定义了一株sql命令的边界,这组命令或者作为一个整体被全部执行,或者都不执行,称为原子性原则。 事务的本质就是都执行,或者都不执行,而且是同时性的。 最具有说服力的是银行转账过程。(详情请百度orgoogle)。 事务的范围: 事务的三个控制命令:begin 、 comm原创 2012-09-08 23:41:55 · 2728 阅读 · 0 评论 -
SQLite学习笔记(1)
SQLite介绍: SQLite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。嵌入式数据原创 2012-08-16 18:44:06 · 1739 阅读 · 1 评论 -
SQLite语法学习
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server---创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_转载 2012-08-22 22:09:55 · 4853 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中A)
接下来,将用一个详细的例子完成学习(建议学习者着重事先看下关系模型):主表是foods表, 创建临时表的时候,语法是:create temp/temporary table table_name ( column_definitions [, constraints ] ) ; 接下来,输入的echo on、mode col原创 2012-09-02 22:02:29 · 695 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中B)
关系操作:基本:限制、投影、笛卡尔积、联合、差、重命名;附加:交叉、自然连接、赋值;扩展:广义投影、左外连接、右外连接、全外连接。但是,右外连接和全外连接是在SQLite中不支持的,却可以通过其他的操作来组合而成。复杂的select操作:(利用数字加括弧表示出了管道过程,SQLite中select处理过程)。select distinct(6) column_name (5)原创 2012-09-03 22:39:03 · 1238 阅读 · 0 评论 -
SQLite学习笔记(3)
SQLite的体系结构介绍: SQLite是由接口(Interface)、编译器(Compiler)、虚拟机(Virtual Machine )和后端程序(Back End)组成。 还有另两种对体系结构的图示比较简单: 接口(Interface) : 由SQLite c API原创 2012-08-23 10:40:43 · 1782 阅读 · 1 评论 -
学习使用SQLite(版本3.7.4)(中C)
上节注意:SQLite的C API允许创建自定义的聚合和函数。GROUP BY的使用:聚合主要是分组,既能计算整个结果集的组合值,也能把结果集分成多个组,对每个组单独应用聚合,并计算每个组的聚合值。如果是要计算每个type_id 组的数目:这种办法可以获得一次性的结果,但是如果要获得单次的结果,可以这样写:select count(*) from foods原创 2012-09-04 23:01:22 · 737 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(上A)
在SQLite官方网站下载程序和DLL等文件,其实文件中有个sqlite3.exe文件可以直接运行;也可以将下载的源程序使用合适的编译器,如VC++编译出DLL文件和sqlite3.exe。打开“开始”按钮,程序——附件——运行,输入“cmd”,或者(win+R),键入cmd;—————————————————————————————————————————————————————————原创 2012-08-22 20:55:40 · 1437 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中D)
名称和别名: f是foods的别名,t是foods_types的别名。别名使得表和自我连接变得可能。 这里,是想找出season为4的食品在其他哪些season中提过 。(具体见《SQLite权威指南(中文第二版)》页85); 子查询: 其实在foods中,真正的表格的形式应该是这样的: 记得在from子句里使用子原创 2012-09-05 22:41:36 · 1774 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中E)
针对两个关系A、B ,union关键字将两者连接成为一个只包含A和B中非重复字段的单一关系。SQL中,union联合两个select结果,默认消除重复数据(利用union all保留全部数据):select f.* , top_foods.count from foods f inner join (select food_id ,count(food_id) as原创 2012-09-07 11:04:21 · 1634 阅读 · 1 评论 -
学习使用SQLite(版本3.7.4)(中F)
高级SQL: 插入记录:insert into table_name(column_name) values (value_list) ; 其中,column_name是用逗号隔开的字段,value_name是用逗号隔开的即将插入的数据。 比如: 这里,注意id是主键,插入的时候,只管原创 2012-09-07 21:44:10 · 1053 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(上B)
假设现在磁盘中已经有 test.db 的数据库文件,且这个数据库中不含任何数据。那么对这个数据库进行这样的操作:可以看见,第3和第4次并没有输入id的值,其是自动增长的,因为有primary key。可以通过输入select last_insert_rowid( );查看最后插入的自动增量值。然后创建索引和视图:其实,退出的时候,在windows系统下可用快捷键c原创 2012-08-31 00:10:46 · 888 阅读 · 0 评论 -
学习使用SQLite(版本3.7.4)(中J)
事务的类型: 事务三种不同的类型,以不同的锁状态启动事务。 在begin命令中指定事务类型:begin [ deferred | immediate | exclusive ] transaction ; deferred必须到使用是才能获取锁。默认从未锁定状态开始。以deferred开始的事务,是原创 2012-09-09 10:24:38 · 1986 阅读 · 1 评论 -
学习使用SQLite(版本3.7.4)(中G )
域完整性: 真正的域完整性的定义就是字段的值遵从规定。列的域包含类型和范围。域完整性有两个组成部分:类型检查和范围检查。 默认值( 实例): not null约束: 保证insert语句不会向字段中插入null值。它要求必须为该字段提供值。一种应对的方法就是,在插入的时候别写null,一原创 2012-09-08 11:24:07 · 974 阅读 · 0 评论 -
SQLite学习笔记(10)资料搜集
MrDB的博客园SQLite入门与分析(一)---简介 SQLite入门与分析(二)---设计与概念 SQLite入门与分析(二)---设计与概念(续) SQLite入门与分析(三)---内核概述(1) SQLite入门与分析(三)---内核概述(2) SQLite入门与分析(四)---Page Cache之事务处理(1)原创 2012-09-19 10:20:13 · 1713 阅读 · 2 评论