SQLite經典教學課程login
SQLite經典教學課程
作者:php.cn  更新時間:2022-04-13 17:05:02

SQLite 語法


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 可以是以下任何一種:

##0 或NONE禁用Auto-vacuum。這是預設模式,表示資料庫檔案尺寸大小不會縮小,除非手動使用 VACUUM 命令。 1 或 FULL啟用 Auto-vacuum,是全自動的。在該模式下,允許資料庫檔案隨著資料從資料庫移除而縮小。 2 或 INCREMENTAL啟用 Auto-vacuum,但必須手動啟動。在該模式下,引用資料被維持,免費頁面只放在免費清單中。這些頁面可在任何時候使用

cache_size Pragma

cache_size Pragma 可取得或暫時設定在記憶體中頁面快取的最大尺寸。語法如下:

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

#pages 值表示在快取中的頁面數。內建頁面快取的預設大小為 2,000 頁,最小尺寸為 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_list 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;

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

index_info Pragma

index_info 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.#ournal_mode =#mode #這裡支援五種日誌模式:

Pragma 值描述
incremental_vacuum pragma 進行覆寫。
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;

預設值為1,073,741,823,這是一個千兆的頁面,也就是如果預設1 KB 的頁面大小,那麼資料庫中成長起來的一個兆位元組。

page_count Pragma

page_count Pragma 傳回目前資料庫中的網頁數量。語法如下:

PRAGMA [database.]page_count;

#資料庫檔案的大小應該是 page_count * page_size。

page_size Pragma

page_size Pragma 取得或設定資料庫頁面的大小。語法如下:

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

預設情況下,允許的尺寸是512、 1024、2048、4096、8192、16384、32768 位元組。改變現有資料庫頁面大小的唯一方法是設定頁面大小,然後立即 VACUUM 該資料庫。

parser_trace Pragma

parser_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_

#schema_version Pragma

schema_
#schema_version Pragma

Pragma 取得或設定儲存在資料庫頭中的架構版本值。語法如下:

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

這是32 位元有符號整數值,用來追蹤架構的變化。每當一個架構改變指令執行(例如 CREATE... 或 DROP...)時,這個值就會增加。

secure_delete Pragma

secure_delete
Pragma 用來控制內容是如何從資料庫中刪除。語法如下:#########PRAGMA secure_delete;###PRAGMA secure_delete = [true|false];###PRAGMA database.secure_delete;###PRAGMA database.secure_delete database.secure_delete;###PRAGMA database.secure_delete database.[| #####

安全刪除標誌的預設值通常是關閉的,但是這是可以透過 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 取得或設定暫存資料庫檔案所使用的儲存模式。語法如下:

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite 支援下列儲存模式:

Pragma 值描述0 或DEFAULT預設使用編譯時的模式。通常是 FILE。 1 或 FILE使用基於檔案的儲存。 2 或 MEMORY
##SQLite 支援下列儲存模式:
###使用基於記憶體的儲存。 ############

temp_store_directory Pragma

temp_store_directory Pragma 取得或設定用於暫時資料庫檔案的位置。語法如下:

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

##user_vers#user_version Pragma

##user_version
##a_version_version Pragma
##user_version
#a_version_version Pragma

##user_version

#a_version。取得或設定儲存在資料庫頭的使用者自訂的版本值。語法如下:

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 時要注意,因為它可能導致整個資料庫損壞。 ##########

PHP中文網