SQLite的PRAGMA命令是一个特殊的命令,可以用在SQLite环境内控制各种环境变量和状态标志。一个PRAGMA值可以被读取,也可以根据需求进行设置。

语法

要查询当前的PRAGMA值,只需要提供该pragma的名字:

PRAGMA pragma_name;

要为PRAGMA设置一个新的值,语法如下:

PRAGMA pragma_name = value;

设置模式,可以是名称或等值的整数,但返回的值始终是一个整数。

auto_vacuum Pragma

auto_vacuum Pragma获取或设置auto-vacuum模式。语法如下:

PRAGMA [database.]auto_vacuum;
PRAGMA [database.]auto_vacuum = mode;

其中,mode可以是以下任何一种:

ragma 值 描述
0 或 NONE 禁用 Auto-vacuum。这是默认模式,意味着数据库文件尺寸大小不会缩小,除非手动使用 VACUUM 命令。
1 或 FULL 启用 Auto-vacuum,是全自动的。在该模式下,允许数据库文件随着数据从数据库移除而缩小。
2 或 INCREMENTAL 启用 Auto-vacuum,但是必须手动激活。在该模式下,引用数据被维持,免费页面只放在免费列表中。这些页面可在任何时候使用 incremental_vacuum pragma 进行覆盖。

cache_size Pragma

cache_size Pragma可获取或暂时设置在内存中页面缓存的最大尺寸。语法如下:

PRAGMA [database.]cache_size;
PRAGMA [database.]cache_size = pages;

pages值表示在缓冲中的页面数。内置页面缓冲的默认大小为2000页,最小尺寸为10页。

case_sensitive_like Pragma

case_sensitive_like Pragma控制内置的LIKE表达式的大小写敏感度。默认情况下,该Pragma为false,这意味着,内置的LIKE操作符忽略字母的大小写。语法如下:

PRAGMA case_sensitive_like = [true|false];

目前无法查询该Pragma的当前状态。

count_changes Pragma

count_changes Pragma获取或设置数据操作语句的返回值,如INSERT、UPDATE和DELETE。语法如下:

PRAGMA count_changes;
PRAGMA count_changes = [true|false];

默认情况下,该Pragma为false,这些语句不返回任何东西。如果设置为true,每个所提供的语句将返回一个单行单列的表,由一个单一的整数值组成,该整数表示操作影响的行。、

database_list Pragma

database_lsit Pragma将用于列出了所有的数据库连接。语法如下:

PRAGMA database_list;

该Pragma将返回一个单行三列的表格,每当打开或附加数据库时,会给出数据库中的序列号,它的名称和相关文件。

encoding Pragma

encoding Pragma控制字符串如何编码及存储在数据库文件中,语法如下:

PRAGMA encoding;
PRAGMA encoding = format;

格式值可以是UTF-8、UTF-16le或UTF-16be之一。

freelist_count Pragma

freelist_count Pragma返回一个整数,表示当前被标记为免费和可用的数据库页数。语法如下:

PRAGMA [database.]freelist_count;

index_info Pragma

index_list Pragma返回关于数据库索引的信息,语法如下:

PRAGMA [database.]index_info( index_name );

结果集将为每个包含在给出列序列的索引、表格内的列索引、列名称的列显示一行。

index_list Pragma

index_list Pragma列出所有与表相关联的索引。语法如下:

PRAGMA [database.]index_list( table_name );

结果集将为每个给出列序列的索引、索引名称、表示索引是否唯一的标识显示一行。

journal_mode Pragma

journal_mode Pragma获取或设置控制日志文件如何存储和处理的日志模式。语法如下:

PRAGMA journal_mode;
PRAGMA journal_mode = mode;
PRAGMA database.journal_mode;
PRAGMA database.journal_mode = mode;

这里支持五种日志模式:

Pragma 值 描述
DELETE 默认模式。在该模式下,在事务结束时,日志文件将被删除。
TRUNCATE 日志文件被阶段为零字节长度。
PERSIST 日志文件被留在原地,但头部被重写,表明日志不再有效。
MEMORY 日志记录保留在内存中,而不是磁盘上。
OFF 不保留任何日志记录。

max_page_count Pragma

max_page_count Pragma为数据库获取或设置最大允许的页数。语法如下:

PRAGMA [database.]max_page_count;
PRAGMA [database.]max_page_count = max_page;

默认值是1073741823,这是一个千兆的页面,即如果默认1kb的页面大小,那么数据库增长起来的一个兆字节。

page_count Pragma

page_count Pragma返回当前数据库中的网页数量。语法如下:

PRAGMA [database.]page_count;

数据库的大小应该是page_couont*page_size.

page_size Pragma

page_size Pragma 获取或设置数据库页面的大小。语法如下 :

PRAGMA [database.]page_size;
PRAGMA [database.]page_size = bytes;

默认情况下,允许的尺寸是512、1024、2048、8192、16384、62768字节。改变现有数据库页面大小的唯一方法就是设置页面大小,然后立即VACUUM该数据库。

parser_trace Pragma

parse_trace Pragma随着它解析SQL命令来控制打印的调试状态,语法如下:

PRAGMA parser_trace = [true|false];

默认情况下,它被设置为false,但设置为true时则启用,此时SQL解析器会随着它解析SQL命令来打印出它的状态。

recursive_triggers Pragma

recursive_triggers Pragma 获取或设置递归触发器功能。如果未启用递归触发器,一个触发动作将不会触发另一个触发。语法如下:

PRAGMA recursive_triggers;
PRAGMA recursive_triggers = [true|false];

schema_version Pragma

schema_version Pragma 获取或设置存储在数据库头中的架构版本值。语法如下:

PRAGMA [database.]schema_version;
PRAGMA [database.]schema_version = number;

这是一个32位有符号整数值,用来跟踪架构的变化。每当一个架构改变命令执行时,这个值会递增。

secure_delete Pragma

secure_delete Pragma 用来控制内容是如何从数据库中删除。语法如下:

PRAGMA secure_delete;
PRAGMA secure_delete = [true|false];
PRAGMA database.secure_delete;
PRAGMA database.secure_delete = [true|false];

安全删除标志的默认值通常是关闭的,但是这是可以通过SQLITE_SECURE_DELETE构建选项来改变的。

sql_trace Pragma

sql_trace Pragma 用于把SQL跟踪结果转储到屏幕上。语法如下:

PRAGMA sql_trace;
PRAGMA sql_trace = [true|false];

SQLite 必须通过SQLITE_DEBUG指令来编译要引用的该Pragma。

synchronous Pragma

synchronous Pragma 获取或设置当前磁盘的同步模式,该模式控制积极的SQLite如何将数据写入物理存储。语法如下:

PRAGMA [database.]synchronous;
PRAGMA [database.]synchronous = mode;

SQLite支持下列同步模式:

Pragma 值 描述
0 或 OFF 不进行同步。
1 或 NORMAL 在关键的磁盘操作的每个序列后同步。
2 或 FULL 在每个关键的磁盘操作后同步。

temp_store Pragma

temp_store Pragma 获取或设置临时数据库文件所使用的存储模式。语法如下:

RAGMA temp_store;
PRAGMA temp_store = mode;

SQLite 支持下列存储模式:

Pragma 值 描述
0 或 DEFAULT 默认使用编译时的模式。通常是 FILE。
1 或 FILE 使用基于文件的存储。
2 或 MEMORY 使用基于内存的存储。

temp_store_directory Pragma

temp_store_directory Pragma获取或设置用于临时数据库文件的位置。语法如下:

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

user_version Pragma 获取或设置存储在数据库头的用户自定义的版本值。语法如下:

PRAGMA [database.]user_version;
PRAGMA [database.]user_version = number;

这是一个32位的有符号整数值,可以由开发人员设置,用于版本跟踪。

writable_schema Pragma

writable_schema Pragma 获取或设置是否能够修改系统表。语法如下:

PRAGMA writable_schema;
PRAGMA writable_schema = [true|false];

如果设置了该Pragma,则表以sqlite_开始,可以创建和修改,包括sqlite_master表。使用该Pragma时要注意,因为它可能导致整个数据库损坏。

参考:

https://www.yuque.com/docs/share/65904e80-5a1b-4251-a5c7-87f2e27d7f9b

SQLite PRAGMA相关推荐

  1. SQLite入门到精通之十二:进阶3:特殊指令:PRAGMA|Join|Unions|Alter

    SQLite PRAGMA SQLite 的 PRAGMA 命令是一个特殊的命令,可以用在 SQLite 环境内控制各种环境变量和状态标志.一个 PRAGMA 值可以被读取,也可以根据需求进行设置. ...

  2. SQLite 使用教程2 语法

    http://www.runoob.com/sqlite/sqlite-syntax.html SQLite 语法 SQLite 是遵循一套独特的称为语法的规则和准则.本教程列出了所有基本的 SQLi ...

  3. SQLite 语法(http://www.w3cschool.cc/sqlite/sqlite-syntax.html)

    SQLite 语法 SQLite 是遵循一套独特的称为语法的规则和准则.本教程列出了所有基本的 SQLite 语法,向您提供了一个 SQLite 快速入门. 大小写敏感性 有个重要的点值得注意,SQL ...

  4. SQLite 入门教程(三)好多约束 Constraints

    一.约束 Constraints 在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应该翻译成约束更贴切一点. 那么什么是约束呢? 我们在数据库中存储数据的 ...

  5. android sqlite 多对多,SQLite多对多的关系?

    假设库已启用外键约束编译,它仍然必须由应用程序在运行时使用PRAGMA foreign_keys命令启用.例如: sqlite> PRAGMA foreign_keys = ON; 外键约束默认 ...

  6. SQLite学习总结(3)——SQLite命令及语法

    SQLite 命令 本章将向您讲解 SQLite 编程人员所使用的简单却有用的命令.这些命令被称为 SQLite 的点命令,这些命令的不同之处在于它们不以分号 ; 结束. 让我们在命令提示符下键入一个 ...

  7. SQLite数据库损坏修复

    The database disk image is malformed https://www.sqlite.org/2018/sqlite-tools-win32-x86-3240000.zip ...

  8. SQLite学习笔记(十二)虚拟机指令

    上篇文章简单讨论了虚拟机的原理,这篇文章我们详细讨论下指令,具体从几种典型的SQL语句来看看每种SQL对应的指令流,以及每个指令的含义.通过explain语句,可以看到语句对应的指令流:通过pragm ...

  9. SQLite WAL 机制探索

    什么是WAL机制 SQLite 的 WAL(Write-Ahead Logging)机制是一种高效的事务日志机制,用于将修改操作写入一个独立的 .sqlite-wal 文件中,而不是直接写入主数据库文 ...

最新文章

  1. ThinkPHP3.2URL重写隐藏应用的入口文件index.php
  2. Matlab的部分文件操作
  3. 使用摄像头运行ORB SLAM2---使用视频运行ORB-SLAM2
  4. 桐花万里python路-高级篇-并发编程-03-线程
  5. 北京招聘 | 澜舟科技招聘NLP工程师、NLP研究员、产品项目经理
  6. 每天一个linux命令(56):netstat命令
  7. cocos2d-x游戏开发(九)重要的基类CCNode
  8. ffmpeg: error while loading shared libraries: libavdevice.so.52
  9. html中函数传递多个值,JavaScript 实战开发经验!函数多参数传参技巧
  10. Java 多线程 南北多人过桥
  11. C++模板函数/类示例
  12. xpath中normalize-space的实际应用
  13. MFS 高可用存储分布式文件系统
  14. 小程序商城框架源码 小程序源码带前端+后台+数据库
  15. 北京房价预测——线性回归
  16. 吴伯凡-认知方法论-真真切切的感觉
  17. 两台计算机之间的远程连接
  18. 云计算发展趋势分析(一)之OpenStack vs. K8S
  19. Springboot集成springFox-Swagger3并通过Yapi做接口管理
  20. 棋盘放芝麻:有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,棋盘上放的所有芝麻的重量(代码)

热门文章

  1. MUI开发APP文本框获得焦点并弹出软键盘
  2. SuspendThread和ResumeThread函数
  3. 语言的韵律(Prosody)
  4. 阿里巴巴校园招聘内推C++研发岗位电话面试
  5. 天空卫士监控行为显示叉_提示信息 判断题,请判断对错!  快捷键设置  元贝驾考 暂 停上一题下一题...
  6. 图片预览,图片显示以及图片删除
  7. 有效数字的保留规则python_关于小数有效数字保留的方法
  8. word写论文的一些格式
  9. (决策树,朴素贝叶斯,人工神经网络)实现鸢尾花数据集分类
  10. 基于Vue的前端权限管理