SQLite - PRAGMA

SQLite - PRAGMA 首页 / SQLite入门教程 / SQLite - PRAGMA

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

要查询当前的PRAGMA值,只需提供编译指示的名称。

PRAGMA pragma_name;

要为PRAGMA设置新值,请使用以下语法。

PRAGMA pragma_name=value;

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

auto_vacuum 语法

auto_vacuum 编译指示获取或设置自动模式,以下是简单的语法。

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

其中 mode 可以是以下任意一种-

Sr.No. Pragma Value & 描述
1

0或NONE

这是默认模式,这意味着除非使用VACUUM命令手动清理数据库文件,否则文件大小永远不会缩小。

2

1或FULL

启用了自动模式,当从数据库中删除数据时,它允许数据库文件缩小。

3

2或INCREMENTAL

在这种模式下,将保留参考数据,但是将空闲页面简单地放在空闲列表中。

cache_size 语法

cache_size 编译指示可以获取或临时设置内存中页面缓存的最大大小,以下是简单的语法。

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

pages 值表示缓存中的页面数。内置页面缓存的默认大小为2,000页,最小大小为10页。

case_sensitive_like 语法

case_sensitive_like 控制内置LIKE表达式的区分大小写,默认为false,这意味着内置的LIKE运算符将忽略字母大小写。以下是简单的语法。

PRAGMA case_sensitive_like=[true|false];

count_changes 语法

count_changes 获取或设置数据操作语句(如INSERT,UPDATE和DELETE)的返回值。以下是简单的语法。

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

默认情况下,此编译指示为false,并且这些语句不返回任何内容,如果设置为true,则每个提到的语句将返回一个单列单行表,该表由单个整数值组成,该整数值指示该操作所影响的行。

database_list 语法

database_list 将用于列出所有附加数据库。以下是简单的语法。

PRAGMA database_list;

该编译指示将返回一个三列的表,每个打开或连接的数据库都有一行,给出数据库序列号,其名称和关联的文件。

Encoding 语法

encoding 控制如何对字符串进行编码和将其存储在数据库文件中。以下是简单的语法。

PRAGMA encoding;
PRAGMA encoding=format;

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

freelist_count 语法

freelist_count 返回一个整数,该整数指示当前有多少个数据库页面被标签为空闲和可用,以下是简单的语法。

PRAGMA [database.]freelist_count;

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

index_info 语法

index_info 编译指示返回有关数据库索引的信息。以下是简单的语法。

PRAGMA [database.]index_info( index_name );

输出集将为索引中包含的每一列包含一行,以给出列顺序,表中的列索引和列名。

index_list 语法

index_list 杂注列出与表关联的所有索引。以下是简单的语法。

PRAGMA [database.]index_list( table_name );

输出集将为每个索引包含一行,提供索引序列,索引名称和指示索引是否唯一的标志。

journal_mode 语法

journal_mode 编译指示获取或设置日记模式,该模式控制日记文件的存储和处理方式。以下是简单的语法。

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

下表列出了五种受支持的日记模式。

Sr.No. Pragma Value & 描述
1

DELETE

这是默认模式。在执行结束后,日记文件被删除。

2

TRUNCATE

日志文件被清空。

3

PERSIST

日记文件保留,但是标题被覆盖以指示日记不再有效。

4

MEMORY

日记记录保存在内存中,而不是磁盘上。

5

OFF

不保留日记记录。

max_page_count 语法

max_page_count 获取或设置数据库允许的最大页数。以下是简单的语法。

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

默认值为1,073,741,823,即一千兆页,这意味着,如果默认为1 KB页面大小,则允许数据库增长到一TB。

page_count 语法

page_count  返回数据库中当前的页数。以下是简单的语法-

PRAGMA [database.]page_count;

数据库文件的大小应为page_count * page_size

page_size 语法

page_size 获取或设置数据库页面的大小。以下是简单的语法。

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

默认情况下,允许的大小为512、1024、2048、4096、8192、16384和32768字节。更改现有数据库上页面大小的唯一方法是设置页面大小,然后立即对数据库进行VACUUM。

parser_trace 语法

parser_trace 控制在分析SQL命令时打印调试状态。以下是简单的语法。

PRAGMA parser_trace=[true|false];

默认情况下,它设置为false,但是当通过将其设置为true启用时,SQL解析器将在解析SQL命令时打印其状态。

recursive_triggers 语法

recursive_triggers 获取或设置递归触发器功能,如果未启用递归触发器,则触发器操作将不会触发另一个触发器。以下是简单的语法。

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

schema_version 语法

schema_version 获取或设置存储在数据库头中的架构版本值。以下是简单的语法。

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

这是一个32位带符号整数值,用于跟踪架构更改。每当执行更改模式的命令(如CREATE ...或DROP ...)时,该值都会增加。

Secure_delete 语法

secure_delete 用于控制如何从数据库中删除内容。以下是简单的语法。

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

安全删除标志的默认值通常为off,但是可以使用SQLITE_SECURE_DELETE构建选项更改该默认值。

sql_trace 语法

sql_trace 用于将SQL跟踪输出转储到屏幕上。以下是简单的语法。

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

必须使用SQLITE_DEBUG指令编译SQLite,才能包含此编译指示。

Synchronous 语法 

synchronous 获取或设置当前磁盘同步模式,该模式控制SQLite将数据完全写入物理存储的积极程度。以下是简单的语法。

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

SQLite支持下表中列出的以下同步模式。

Sr.No. Pragma Value & 描述
1

0 或 OFF

完全没有同步

2

1 或 NORMAL

在每个关键磁盘操作序列之后进行同步

3

2 或 FULL

每次关键磁盘操作后同步

temp_store 语法

temp_store 获取或设置临时数据库文件使用的存储模式。以下是简单的语法。

PRAGMA temp_store;
PRAGMA temp_store=mode;

SQLite支持以下存储模式。

Sr.No. Pragma Value & 描述
1

0或 DEFAULT

使用编译时默认值。通常是FILE。

2

1或FILE

使用基于文件的存储。

3

2或MEMORY

使用基于内存的存储。

temp_store_directory 语法

temp_store_directory 获取或设置用于临时数据库文件的位置。以下是简单的语法。

PRAGMA temp_store_directory;
PRAGMA temp_store_directory='directory_path';

user_version 语法

user_version 获取或设置存储在数据库头中的用户定义的版本值。以下是简单的语法。

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

这是一个32位带符号整数值,开发人员可以出于版本跟踪目的设置该值。

writable_schema 语法

writable_schema 获取或设置修改系统表的功能。以下是简单的语法。

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

10x程序员工作法 -〔郑晔〕

NLP实战高手课 -〔王然〕

Flink核心技术与实战 -〔张利兵〕

手机摄影 -〔@随你们去〕

Spark核心原理与实战 -〔王磊〕

如何落地业务建模 -〔徐昊〕

全链路压测实战30讲 -〔高楼〕

Kubernetes入门实战课 -〔罗剑锋〕

好记忆不如烂笔头。留下您的足迹吧 :)