鍍金池/ 教程/ 數(shù)據(jù)庫/ SQLite PRAGMA
SQLite Having 子句
SQLite 運算符
SQLite 注入
SQLite Delete 語句
SQLite – Python
SQLite 數(shù)據(jù)類型
SQLite 簡介
SQLite 創(chuàng)建數(shù)據(jù)庫
SQLite Vacuum
SQLite Group By
SQLite 日期 & 時間
SQLite AND/OR 運算符
SQLite 刪除表
SQLite Distinct
SQLite Alter 命令
SQLite PRAGMA
SQLite 約束
SQLite 創(chuàng)建表
SQLite Like 子句
SQLite Limit 子句
SQLite Autoincrement
SQLite 子查詢
SQLite – C/C++
SQLite – PHP
SQLite 命令
SQLite Order By
SQLite Select 語句
SQLite Unions 子句
SQLite – Perl
SQLite – Java
SQLite 別名
SQLite 常用函數(shù)
SQLite Explain(解釋)
SQLite NULL 值
SQLite Glob 子句
SQLite 表達式
SQLite 視圖
SQLite Where 子句
SQLite Truncate Table
SQLite 索引
SQLite Insert 語句
SQLite 安裝
SQLite Indexed By
SQLite 分離數(shù)據(jù)庫
SQLite 觸發(fā)器
SQLite 語法
SQLite Joins
SQLite Update 語句
SQLite 附加數(shù)據(jù)庫
SQLite 事務

SQLite PRAGMA

SQLite 的 PRAGMA 命令是一個特殊的命令,可以用在 SQLite 環(huán)境內(nèi)控制各種環(huán)境變量和狀態(tài)標志。一個 PRAGMA 值可以被讀取,也可以根據(jù)需求進行設置。

語法

要查詢當前的 PRAGMA 值,只需要提供該 pragma 的名字:

    PRAGMA pragma_name;

要為 PRAGMA 設置一個新的值,語法如下:

    PRAGMA pragma_name = value;

設置模式,可以是名稱或等值的整數(shù),但返回的值將始終是一個整數(shù)。

auto_vacuum Pragma

auto_vacuum Pragma 獲取或設置 auto-vacuum 模式。語法如下:

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

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

Pragma 值描述
0 或 NONE禁用 Auto-vacuum。這是默認模式,意味著數(shù)據(jù)庫文件尺寸大小不會縮小,除非手動使用 VACUUM 命令。
1 或 FULL啟用 Auto-vacuum,是全自動的。在該模式下,允許數(shù)據(jù)庫文件隨著數(shù)據(jù)從數(shù)據(jù)庫移除而縮小。
2 或 INCREMENTAL啟用 Auto-vacuum,但是必須手動激活。在該模式下,引用數(shù)據(jù)被維持,免費頁面只放在免費列表中。這些頁面可在任何時候使用 incremental_vacuum pragma 進行覆蓋。

cache_size Pragma

cache_size Pragma 可獲取或暫時設置在內(nèi)存中頁面緩存的最大尺寸。語法如下:

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

pages 值表示在緩存中的頁面數(shù)。內(nèi)置頁面緩存的默認大小為 2,000 頁,最小尺寸為 10 頁。

case_sensitive_like Pragma

case_sensitive_like Pragma 控制內(nèi)置的 LIKE 表達式的大小寫敏感度。默認情況下,該 Pragma 為 false,這意味著,內(nèi)置的 LIKE 操作符忽略字母的大小寫。語法如下:

    PRAGMA case_sensitive_like = [true|false];

目前沒有辦法查詢該 Pragma 的當前狀態(tài)。

count_changes Pragma

count_changes Pragma 獲取或設置數(shù)據(jù)操作語句的返回值,如 INSERT、UPDATE 和 DELETE。語法如下:

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

默認情況下,該 Pragma 為 false,這些語句不返回任何東西。如果設置為 true,每個所提到的語句將返回一個單行單列的表,由一個單一的整數(shù)值組成,該整數(shù)表示操作影響的行。

database_list Pragma

database_list Pragma 將用于列出了所有的數(shù)據(jù)庫連接。語法如下:

    PRAGMA database_list;

該 Pragma 將返回一個單行三列的表格,每當打開或附加數(shù)據(jù)庫時,會給出數(shù)據(jù)庫中的序列號,它的名稱和相關的文件。

encoding Pragma

encoding Pragma 控制字符串如何編碼及存儲在數(shù)據(jù)庫文件中。語法如下:

    PRAGMA encoding;
    PRAGMA encoding = format;

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

freelist_count Pragma

freelist_count Pragma 返回一個整數(shù),表示當前被標記為免費和可用的數(shù)據(jù)庫頁數(shù)。語法如下:

    PRAGMA [database.]freelist_count;

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

index_info Pragma

index_info Pragma 返回關于數(shù)據(jù)庫索引的信息。語法如下:

    PRAGMA [database.]index_info( index_name );

結(jié)果集將為每個包含在給出列序列的索引、表格內(nèi)的列索引、列名稱的列顯示一行。

index_list Pragma

index_list Pragma 列出所有與表相關聯(lián)的索引。語法如下:

    PRAGMA [database.]index_list( table_name );

結(jié)果集將為每個給出列序列的索引、索引名稱、表示索引是否唯一的標識顯示一行。

journal_mode Pragma

journal_mode Pragma 獲取或設置控制日志文件如何存儲和處理的日志模式。語法如下::

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

這里支持五種日志模式:

Pragma 值描述
DELETE默認模式。在該模式下,在事務結(jié)束時,日志文件將被刪除。
TRUNCATE日志文件被階段為零字節(jié)長度。
PERSIST日志文件被留在原地,但頭部被重寫,表明日志不再有效。
MEMORY日志記錄保留在內(nèi)存中,而不是磁盤上。
OFF不保留任何日志記錄。

max_page_count Pragma

max_page_count Pragma 為數(shù)據(jù)庫獲取或設置允許的最大頁數(shù)。語法如下:

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

默認值是 1,073,741,823,這是一個千兆的頁面,即如果默認 1 KB 的頁面大小,那么數(shù)據(jù)庫中增長起來的一個兆字節(jié)。

page_count Pragma

page_count Pragma 返回當前數(shù)據(jù)庫中的網(wǎng)頁數(shù)量。語法如下:

    PRAGMA [database.]page_count;

數(shù)據(jù)庫文件的大小應該是 page_count * page_size。

page_size Pragma

page_size Pragma 獲取或設置數(shù)據(jù)庫頁面的大小。語法如下:

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

默認情況下,允許的尺寸是 512、1024、2048、4096、8192、16384、32768 字節(jié)。改變現(xiàn)有數(shù)據(jù)庫頁面大小的唯一方法就是設置頁面大小,然后立即 VACUUM 該數(shù)據(jù)庫。

parser_trace Pragma

parser_trace Pragma 隨著它解析 SQL 命令來控制打印的調(diào)試狀態(tài),語法如下:

    PRAGMA parser_trace = [true|false];

默認情況下,它被設置為 false,但設置為 true 時則啟用,此時 SQL 解析器會隨著它解析 SQL 命令來打印出它的狀態(tài)。

recursive_triggers Pragma

recursive_triggers Pragma 獲取或設置遞歸觸發(fā)器功能。如果未啟用遞歸觸發(fā)器,一個觸發(fā)動作將不會觸發(fā)另一個觸發(fā)。語法如下:

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

schema_version Pragma

schema_version Pragma 獲取或設置存儲在數(shù)據(jù)庫頭中的的架構(gòu)版本值。語法如下:

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

這是一個 32 位有符號整數(shù)值,用來跟蹤架構(gòu)的變化。每當一個架構(gòu)改變命令執(zhí)行(比如 CREATE... 或 DROP...)時,這個值會遞增。

secure_delete Pragma

secure_delete Pragma 用來控制內(nèi)容是如何從數(shù)據(jù)庫中刪除。語法如下:

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

安全刪除標志的默認值通常是關閉的,但是這是可以通過 SQLITE_SECURE_DELETE 構(gòu)建選項來改變的。

sql_trace Pragma

sql_trace Pragma 用于把 SQL 跟蹤結(jié)果轉(zhuǎn)儲到屏幕上。語法如下:

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

SQLite 必須通過 SQLITE_DEBUG 指令來編譯要引用的該 Pragma。

synchronous Pragma

synchronous Pragma 獲取或設置當前磁盤的同步模式,該模式控制積極的 SQLite 如何將數(shù)據(jù)寫入物理存儲。語法如下:

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

SQLite 支持下列同步模式:

Pragma 值描述
0 或 OFF不進行同步。
1 或 NORMAL在關鍵的磁盤操作的每個序列后同步。
2 或 FULL在每個關鍵的磁盤操作后同步。

temp_store Pragma

temp_store Pragma 獲取或設置臨時數(shù)據(jù)庫文件所使用的存儲模式。語法如下:

    PRAGMA temp_store;
    PRAGMA temp_store = mode;

SQLite 支持下列存儲模式:

Pragma 值描述
0 或 DEFAULT默認使用編譯時的模式。通常是 FILE。
1 或 FILE使用基于文件的存儲。
2 或 MEMORY使用基于內(nèi)存的存儲。

temp_store_directory Pragma

temp_store_directory Pragma 獲取或設置用于臨時數(shù)據(jù)庫文件的位置。語法如下:

    PRAGMA temp_store_directory;
    PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

user_version Pragma 獲取或設置存儲在數(shù)據(jù)庫頭的用戶自定義的版本值。語法如下:

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

這是一個 32 位的有符號整數(shù)值,可以由開發(fā)人員設置,用于版本跟蹤的目的。

writable_schema Pragma

writable_schema Pragma 獲取或設置是否能夠修改系統(tǒng)表。語法如下:

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

如果設置了該 Pragma,則表以 sqlite_ 開始,可以創(chuàng)建和修改,包括 sqlite_master 表。使用該 Pragma 時要注意,因為它可能導致整個數(shù)據(jù)庫損壞。

上一篇:SQLite 安裝下一篇:SQLite 別名