SQLite 中文指南之FAQ第5/6頁
更新時間:2008年09月12日 18:09:17 作者:
sqllite使用過程中碰到的一些問題解決,中文版
SELECT name FROM
(SELECT * FROM sqlite_master UNION ALL
SELECT * FROM sqlite_temp_master)
WHERE type='table'
ORDER BY name
(10) SQLite數據庫是否有已知的大小限制?
數據庫大小被限制在 2TB(241 bytes). 這是理論限制。事實上,你應該把 SQLite數據庫的大小限制在100GB以下,以免出現運行性能上的問題。如果你需要儲存100GB或更多數據在一個數據庫中, 考慮使用為此而設計的企業(yè)版數據庫吧。
一個數據庫的理論行數限制是 264-1,顯然你會在達到行數限制之前先超過文件大小的限制。目前一行可以存放 230 bytes 數據。而基本的文件格式可以支持行大小到約 262 bytes.
可能還會有對于表、索引的數目或表和索引中的字段數的限制,但沒人知道是多少。事實上,每當新數據庫打開時,SQLite需要讀取和 分析所有表和索引聲明的初始SQL,所以,為了調用 sqlite3_open() 時獲得最佳性能,最好減少聲明的表的數目。同樣的,即使 對于表中字段數沒有限制,多于100個也顯得太多了。 只有表開頭的31個字段會得到優(yōu)化。你可以在一個索引中放入任意多的字段但超過30字段的索引將不用于優(yōu)化查詢。
表,索引,視圖,觸發(fā)器和字段名稱可以任意長,但SQL 函數名 (由 sqlite3_create_function() API創(chuàng)建的)不得超過255個字符。
(11) 在 SQLite 中 VARCHAR 的最大長度是多少?
SQLite不強制VARCHAR的長度。你可以聲明一個VARCHAR(10),SQLite一樣可以讓你存放500個字符在里面。 并且它們會始終完整無缺——決不會被截斷。
(12) SQLite 是否支持 BLOB 類型?
SQLite 3.0 版支持在任何字段存放 BLOB 數據,不管字段聲明為什么類型。
(13) 如何從一個已存在的 SQLite 數據表中添加/刪除字段?
SQLite有有限的ALTER TABLE支持,可以用于添加字段到表的末尾 或更改表名。如果你要對表的結構作更復雜的修改,你需要重新創(chuàng)建表。你可以在一個臨時表中備份數據,撤銷舊表,重建新表后再恢復數據。
例如,假設你有一個名為 "t1" 的表,有名為 "a", "b", 和 "c" 三個字段,你要刪除字段 "c" ??砂慈缦虏襟E操作:
BEGIN TRANSACTION;
CREATE TEMPORARY TABLE t1_backup(a,b);
INSERT INTO t1_backup SELECT a,b FROM t1;
DROP TABLE t1;
CREATE TABLE t1(a,b);
INSERT INTO t1 SELECT a,b FROM t1_backup;
DROP TABLE t1_backup;
COMMIT;