- SQLite 教程
- SQLite - 主页
- SQLite - 概述
- SQLite - 安装
- SQLite - 命令
- SQLite - 语法
- SQLite - 数据类型
- SQLite - 创建数据库
- SQLite - 附加数据库
- SQLite - 分离数据库
- SQLite - 创建表
- SQLite - 删除表
- SQLite - 插入查询
- SQLite - 选择查询
- SQLite - 运算符
- SQLite - 表达式
- SQLite - WHERE 子句
- SQLite - AND & OR 子句
- SQLite - 更新查询
- SQLite - 删除查询
- SQLite - LIKE 子句
- SQLite - GLOB 子句
- SQLite - LIMIT 子句
- SQLite - ORDER By 子句
- SQLite - GROUP By 子句
- SQLite - HAVING 子句
- SQLite - DISTINCT 关键字
- 高级SQLite
- SQLite-PRAGMA
- SQLite - 约束
- SQLite - 连接
- SQLite - UNIONS 子句
- SQLite - NULL 值
- SQLite - ALIAS 语法
- SQLite - 触发器
- SQLite - 索引
- SQLite - 按子句索引
- SQLite - ALTER 命令
- SQLite - TRUNCATE 命令
- SQLite - 视图
- SQLite - 事务
- SQLite - 子查询
- SQLite - 自动增量
- SQLite - 注入
- SQLite - 解释
- SQLite - 真空
- SQLite - 日期和时间
- SQLite - 有用的函数
- SQLite 有用资源
- SQLite - 快速指南
- SQLite - 有用的资源
- SQLite - 讨论
SQLite-PRAGMA
SQLite PRAGMA命令是一个特殊命令,用于控制 SQLite 环境中的各种环境变量和状态标志。PRAGMA值可以被读取,也可以根据需要进行设置。
句法
要查询当前的 PRAGMA 值,只需提供 pragma 的名称。
PRAGMA pragma_name;
要为 PRAGMA 设置新值,请使用以下语法。
PRAGMA pragma_name = value;
设置模式可以是名称或等效的整数,但返回值将始终是整数。
auto_vacuum 编译指示
auto_vacuum pragma 获取或设置自动真空模式。以下是简单的语法。
PRAGMA [database.]auto_vacuum; PRAGMA [database.]auto_vacuum = mode;
其中模式可以是以下任何一种 -
先生。 | 杂注值和描述 |
---|---|
1 | 0 或无 自动真空功能被禁用。这是默认模式,这意味着数据库文件的大小永远不会缩小,除非使用 VACUUM 命令手动清理数据库文件。 |
2 | 1 或已满 自动清理已启用并且是全自动的,这允许数据库文件在数据从数据库中删除时缩小。 |
3 | 2 或增量 自动真空已启用,但必须手动激活。在这种模式下,引用数据被保留,但空闲页面只是简单地放入空闲列表中。这些页面可以随时使用incremental_vacuum pragma恢复。 |
缓存大小编译指示
cache_size pragma 可以获取或临时设置内存中页面缓存的最大大小。以下是简单的语法。
PRAGMA [database.]cache_size; PRAGMA [database.]cache_size = pages;
页值表示缓存中的页数。内置页面缓存的默认大小为 2,000 页,最小大小为 10 页。
case_sensitive_like 编译指示
case_sensitive_like编译指示控制内置 LIKE 表达式的大小写敏感性。默认情况下,此编译指示为 false,这意味着内置 LIKE 运算符会忽略字母大小写。以下是简单的语法。
PRAGMA case_sensitive_like = [true|false];
无法查询该编译指示的当前状态。
count_changes 编译指示
count_changes pragma 获取或设置数据操作语句(例如 INSERT、UPDATE 和 DELETE)的返回值。以下是简单的语法。
PRAGMA count_changes; PRAGMA count_changes = [true|false];
默认情况下,该编译指示为 false,并且这些语句不返回任何内容。如果设置为 true,则上述每个语句都将返回一个单列单行表,其中包含单个整数值,指示操作影响的行。
数据库列表编译指示
database_list pragma 将用于列出所有附加的数据库。以下是简单的语法。
PRAGMA database_list;
该编译指示将返回一个三列表,每个打开或附加的数据库一行,给出数据库序列号、其名称和关联的文件。
编码指令
编码编译指示控制字符串在数据库文件中的编码和存储方式。以下是简单的语法。
PRAGMA encoding; PRAGMA encoding = format;
格式值可以是UTF-8、UTF-16le或UTF-16be之一。
freelist_count 编译指示
freelist_count pragma 返回一个整数,指示当前有多少数据库页面标记为空闲且可用。以下是简单的语法。
PRAGMA [database.]freelist_count;
格式值可以是UTF-8、UTF-16le或UTF-16be之一。
index_info 编译指示
index_info pragma 返回有关数据库索引的信息。以下是简单的语法。
PRAGMA [database.]index_info( index_name );
结果集将为索引中包含的每一列包含一行,给出列序列、表内的列索引和列名称。
index_list 编译指示
index_list pragma 列出与表关联的所有索引。以下是简单的语法。
PRAGMA [database.]index_list( table_name );
结果集将包含每个索引的一行,给出索引序列、索引名称和指示索引是否唯一的标志。
日志模式编译指示
Journal_mode pragma 获取或设置日志模式,该模式控制日志文件的存储和处理方式。以下是简单的语法。
PRAGMA journal_mode; PRAGMA journal_mode = mode; PRAGMA database.journal_mode; PRAGMA database.journal_mode = mode;
下表列出了支持五种日志模式。
先生。 | 杂注值和描述 |
---|---|
1 | 删除 这是默认模式。交易结束时,日志文件将被删除。 |
2 | 截短 日志文件被截断为零字节长度。 |
3 | 坚持 日志文件保留在原处,但标题被覆盖以表明日志不再有效。 |
4 | 记忆 日志记录保存在内存中,而不是磁盘上。 |
5 | 离开 不保留日记记录。 |
max_page_count 指令
max_page_count pragma 获取或设置数据库允许的最大页数。以下是简单的语法。
PRAGMA [database.]max_page_count; PRAGMA [database.]max_page_count = max_page;
默认值是 1,073,741,823,即 1 GB 页,这意味着如果默认页大小为 1 KB,则数据库可以增长到 1 TB。
page_count 编译指示
page_count pragma 返回数据库中当前的页数。以下是简单的语法 -
PRAGMA [database.]page_count;
数据库文件的大小应为 page_count * page_size。
page_size 编译指示
page_size pragma 获取或设置数据库页的大小。以下是简单的语法。
PRAGMA [database.]page_size; PRAGMA [database.]page_size = bytes;
默认情况下,允许的大小为 512、1024、2048、4096、8192、16384 和 32768 字节。更改现有数据库页面大小的唯一方法是设置页面大小,然后立即 VACUUM 数据库。
parser_trace 编译指示
parser_trace pragma 控制在解析 SQL 命令时打印调试状态。以下是简单的语法。
PRAGMA parser_trace = [true|false];
默认情况下,它设置为 false,但通过将其设置为 true 启用时,SQL 解析器将在解析 SQL 命令时打印其状态。
recursive_triggers 编译指示
recursive_triggers pragma 获取或设置递归触发器功能。如果未启用递归触发器,则触发器操作将不会触发另一个触发器。以下是简单的语法。
PRAGMA recursive_triggers; PRAGMA recursive_triggers = [true|false];
schema_version 编译指示
schema_version pragma 获取或设置存储在数据库标头中的架构版本值。以下是简单的语法。
PRAGMA [database.]schema_version; PRAGMA [database.]schema_version = number;
这是一个 32 位有符号整数值,用于跟踪架构更改。每当执行模式更改命令(例如 CREATE... 或 DROP...)时,该值都会递增。
secure_delete 编译指示
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 编译指示
sql_trace pragma 用于将 SQL 跟踪结果转储到屏幕上。以下是简单的语法。
PRAGMA sql_trace; PRAGMA sql_trace = [true|false];
SQLite 必须使用 SQLITE_DEBUG 指令进行编译才能包含此编译指示。
同步指令
同步编译指示获取或设置当前磁盘同步模式,该模式控制 SQLite 将数据一直写入物理存储的积极程度。以下是简单的语法。
PRAGMA [database.]synchronous; PRAGMA [database.]synchronous = mode;
SQLite 支持以下同步模式,如表中所列。
先生。 | 杂注值和描述 |
---|---|
1 | 0 或关闭 根本没有同步 |
2 | 1 或正常 在每个关键磁盘操作序列之后进行同步 |
3 | 2 或已满 每次关键磁盘操作后同步 |
temp_store 编译指示
temp_store pragma 获取或设置临时数据库文件使用的存储模式。以下是简单的语法。
PRAGMA temp_store; PRAGMA temp_store = mode;
SQLite支持以下存储模式。
先生。 | 杂注值和描述 |
---|---|
1 | 0 或默认值 使用编译时默认值。通常是文件。 |
2 | 1 或文件 使用基于文件的存储。 |
3 | 2 或内存 使用基于内存的存储。 |
temp_store_directory 编译指示
temp_store_directory pragma 获取或设置用于临时数据库文件的位置。以下是简单的语法。
PRAGMA temp_store_directory; PRAGMA temp_store_directory = 'directory_path';
user_version 编译指示
user_version pragma 获取或设置存储在数据库标头中的用户定义版本值。以下是简单的语法。
PRAGMA [database.]user_version; PRAGMA [database.]user_version = number;
这是一个 32 位有符号整数值,可以由开发人员设置用于版本跟踪目的。
writable_schema 编译指示
writable_schema pragma 获取或设置修改系统表的能力。以下是简单的语法。
PRAGMA writable_schema; PRAGMA writable_schema = [true|false];
如果设置了该编译指示,则可以创建和修改以 sqlite_ 开头的表,包括 sqlite_master 表。使用 pragma 时要小心,因为它可能导致数据库完全损坏。