![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQLite
无限coding
这个作者很懒,什么都没留下…
展开
-
SQLite学习笔记(7)-源代码整理
文件名称大小分属备注Btmutex.c9047Btree实现btree的mutexesBtree.c335610Btreebtree的主要实现Btree.h9955Btreebtree的头文件btreeInt.h32429Btree用btree实现了一个外部数据库Os.c11原创 2015-08-23 11:42:27 · 1623 阅读 · 0 评论 -
SQLite学习笔记(5)-资料整理
SQLite学习过程中所使用的一些资料SQLite官方社区SQLite维基百科SQLite菜鸟教程SQLite学习手册SQLite源码剖析SQLite剖析系列SQLite入门与分析原创 2015-08-23 11:31:38 · 736 阅读 · 0 评论 -
SQLite学习笔记(4)-数据库基本操作
创建数据库SQLite中创建数据库的命令如下:$sqlite3 DatabaseName.db该命令会创建名为Database的数据库,若该数据库已存在,则打开它。一般情况下,数据库名称应该是唯一的。实例D:\SQLite>sqlite3 tmp.dbSQLite version 3.8.11.1 2015-07-29 20:00:57Enter ".help"原创 2015-08-20 14:53:02 · 991 阅读 · 0 评论 -
SQLite学习笔记(16)-B-tree(2)
2.5.2 B-tree结构形式 SQLite利用B-tree来组织数据库。一个数据库中含有许多B-tree,每个表和索引都有一个B-tree,其中表利用b+tree来实现,而索引是利用b-tree来实现的。2.5.2.1 B-treeB-tree是一种多路搜索树,一颗M阶的b-tree,或为空树,或者:1. 定义任意非叶子结点最多只有M个儿子;且M>2;2.原创 2015-09-04 16:28:14 · 1142 阅读 · 0 评论 -
SQLite学习笔记(15)-B-tree(1)
B-TreeB-tree的主要功能就是索引,它维护着各个页面之间的复杂的关系,便于快速找到所需数据。B-Tree使得VDBE可以在O(logN)下查询,插入和删除数据,以及O(1)下双向遍历结果集。B-Tree不会直接读写磁盘,它仅仅维护着页面 (pages)之间的关系。当B-TREE需要页面或者修改页面时,它就会调用Pager。当修改页面时,pager保证原始页面首先写入日志文件,当它完原创 2015-09-04 16:21:34 · 3439 阅读 · 0 评论 -
SQLite学习笔记(14)-虚拟机
虚拟机(Virtual Machine)VDBE是SQLite的核心,它的上层模块和下层模块都是本质上都是为它服务的。它的实现位于vbde.c, vdbe.h, vdbeapi.c, vdbeInt.h, 和vdbemem.c等几个文件中。它通过底层的基础设施B-Tree执行由编译器(Compiler)生成的字节代码,这种字节代码程序语言 (bytecode programming laugu原创 2015-09-04 16:15:33 · 742 阅读 · 0 评论 -
SQLite学习笔记(17)-B-tree(3)
2.5.3 页面重用及回收(PageReuse and Vacuum )SQLite利用一个freelist进行页面回收。当一个页面的所有记录都被删除时,就被插入到该列表。当运行VACUUM命令时,会清除freelist,所以数据库会缩小,本质上它是在新的文件重新建立数据库,而所有使用的页在都被拷贝过去,而freelist却不会,结果就是一个新的,变小的数据库。当数据库的autovacuum开原创 2015-09-04 16:31:22 · 1282 阅读 · 0 评论 -
SQLite学习笔记(2)-SQLite语法
SQLite的基本语法转载 2015-08-19 21:46:47 · 914 阅读 · 0 评论 -
SQLite学习笔记(3)-SQLite数据类型
SQLite 数据类型SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。您可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。SQLite 存储类每个存储在 SQLite 数据库中的值都具有以转载 2015-08-19 21:50:53 · 642 阅读 · 0 评论 -
SQLite学习笔记(13)-事务(2)
2.3.5 锁和崩溃恢复SQLite的锁是基于标准文件锁实现的。SQLite在数据库文件上持有三种不同的文件锁:a reserved byte, a pending byte, and a shared region(图2.5)。图2.5 锁的机制它们都是从pending byte开始。如图2.4所示,为了从UNLOCKED移动到SHARED,一个连接在pendingbyte会原创 2015-08-27 11:58:43 · 489 阅读 · 0 评论 -
SQLite学习笔记(12)-事务(1)
2.3 事务(Transaction) 在SQLite的query执行过程中,事务以及锁操作总是必不可少的。Query总是在事务之中执行,而事务中总是少不了锁操作,但对锁的操作不当的话就可能引起问题。 2.3.1 事务的周期 程序与事务之间有两件事值得注意: (1) 哪些对象在事务下运行——这直接与API有关。 (2) 事务的生命周期,即什么时候开始,什么时候结束以及它在什么时转载 2015-08-26 20:37:28 · 604 阅读 · 0 评论 -
Sqlite学习笔记(11)-API(2)
2.2.3 执行Prepared Query 前面提到,预处理查询(Prepared Query)是SQLite执行所有SQL命令的方式,包括以下三个过程: (1)Preparation 分析器(parser),分词器(tokenizer)和代码生成器(code generator)把SQL Statement编译成VDBE字节码,编译器会创建一个statement句柄(sqlite3_stm原创 2015-08-25 17:16:31 · 764 阅读 · 0 评论 -
Sqlite学习笔记(10)-API(1)
API API由两部分组成: 核心API(core API) 和扩展API(extension API) 核心API的函数实现基本的数据库操作:连接数据库,处理SQL,遍历结果集。它也包括一些实用函数,比如字符串转换,操作控制,调试和错误处理。 扩展API通过创建你自定义的SQL函数去扩展SQLite。 2.2.1 主要的数据结构 SQLite由很多部分组成-parser, tokeniz原创 2015-08-25 17:14:17 · 519 阅读 · 0 评论 -
SQLite学习笔记(1)-安装及其点命令
SQLite安装在Windows上安装SQLite访问点击进行下载,从Windows区进行下载下载 sqlite-shell-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件从D盘下创建文件夹D:\SQLite,并将下载的二个压缩文件解压在此,将得到sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件原创 2015-08-18 13:37:28 · 9797 阅读 · 0 评论 -
SQLite学习笔记(9)-SQLite的简单使用
SQLite的简单使用3.1 建立数据库C:\sqlite> sqlite3.exe dbname.dbsqlite3.exe后面跟数据库文件名3.2 创建数据表sqlite> create table users(userid varchar(20) PRIMARY KEY, ...> age int, ...> birthday datetime);转载 2015-08-24 16:31:28 · 702 阅读 · 0 评论 -
SQLite学习笔记(8)-SQLite编译
Windows平台的编译-利用VS2010(1)编译生成lib文件a) 下载SQLite3.8.11.1的源代码http://www.sqlite.org/sqlite-amalgamation-3081101.zip,解压sqlite-amalgamation-3081101.zip到其目录。b) 打开VS2010,新建一个VC++类型的项目,选择Win32项原创 2015-08-23 21:52:53 · 699 阅读 · 0 评论 -
SQLite学习笔记(6)-SQLite架构
SQLite采用了模块的设计,它由三个子系统,包括8个独立的模块构成。 图2.1 SQLite架构图接口(Interface) 接口由SQLite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。编译器(Compiler) 在编译器中,分词器(Tokenizer)和分析器(Parser)对SQL进行语法检查,然后把它转化为底层能更原创 2015-08-23 11:39:49 · 993 阅读 · 0 评论