(1) 如何建立自動增長字段?
整型主鍵列(integer primary key),如果向主鍵插入null,那麼null會自動轉換成乙個比插入前此列最大值大1的整數,如果達到最大值,則隨機選擇未使用的值)。
如果想讓生成的主鍵值不是原先刪除過的值,則需要在定義主鍵時新增autoincrement關鍵字。
(2)sqlite支援哪些資料型別?
sqlite使用動態型別。內容可以儲存為integer,real,text,blob,或null。
(7)如何列出資料庫中所有的表/索引
在命令列中輸入「.tables」可獲取所有的表的列表,輸入「.schema」可檢視完整的資料庫模式(schema),包括所有的表和索引。
每個sqlite資料庫都有乙個sqlite_master表,它定義了資料庫的模式。這個表看起來像這個樣子:
create table sqlite_master (
type text,
name text,
tbl_name text,
rootpage integer,
sql text
);對於資料表,type欄位總是「table」,而name列是表的名稱。對於索引,type是「index」,name是索引的名稱,tbl_name是索引所屬的表的名稱。不管是表還是索引,sql欄位是它們的建立語句,對於自動建立的索引(用於實現主鍵或唯一約束),sql欄位為null。
臨時表以及它們的索引和觸發器出現在另乙個特殊的名為sqlite_temp_master表中,這個表和上面的表結構相同,但只有建立臨時表的應用程式能看到。
(11) 如何從存在的表中新增或者刪除列
sqlite支援有限的alter table語句,你可以用來在表的末尾新增列或者更改表的名字。如果要做更複雜的修改,那麼不得不要重新建立表,可以先把資料存到乙個臨時表中,接著刪除表,再建立新錶,最後把資料從臨時表複製到新錶。示例:
begin transaction;(19) 插入太慢——我只能每秒做幾十次插入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;
實際上,sqlite在普通的桌面電腦上可以每秒執行50000或更多的插入語句。但它只能每秒做幾十個事務。事務被磁碟驅動器的轉速限制了。乙個事務正常需要磁碟的兩次完整的迴圈(rotatioins),這對於乙個7200轉每分鐘的磁碟驅動器來說,大約每秒限制在60個事務。
事務速度被磁碟驅動器速度限制是因為在預設情況下,在事務完成前,sqlite實際上會等待,直到資料真正安全地儲存在磁碟表面上。這樣,如果突然斷電或者作業系統崩潰,資料還是安全的。
預設地,每個插入語句本身都有自己的事務,但如果把多個插入語句用begin…commit包圍,那麼所有的插入就被組合到單個事務中。提交所需要的時間被所有的包含的插入語句分攤,所以每個插入語句的時間都會大大減少。
(20)我意外地刪除了一些重要資訊,如何恢復?
如果有資料庫的備份拷貝,那麼從備份可以恢復資訊。如果沒有,那麼恢復就非常困難了。……
(22)sqlite支援外來鍵嗎?
從3.6.19版本,sqlite開始支援外來鍵約束。之前的版本能夠解析外來鍵約束,但不強制實施。
常見問題FAQ
常見問題faq 1 目錄 2 修訂歷史紀錄 3 1 cdo元件使用常見問題 4 2 jmail元件使用常見問題 6 3 其他常見問題 6 問題一 為什麼我引用cdo類時提示出錯?using cdo 找不到型別或命名空間名稱 cdo 是否缺少using指令或程式集引用?答案1 先在你的專案中新增引用,...
常見問題FAQ
常見問題faq 1 目錄2 修訂歷史紀錄3 label控制項常見問題解決4 1.label控制項文字居中4 2.label控制項文字換行4 3.空格4 4.多重雙引號5 datagrid 分頁功能問題解決5 1.datagrid分頁無法實現5 除錯.net出錯5 1.執行時出現 錯誤cs0006 未...
常見問題FAQ
常見問題faq 1目錄2 修訂歷史紀錄 2 1.的使用3 2.調整 格式 3 3.system.text.stringbuilder的方法 3 4.變數的宣告域 3 5.const 的使用3 6.私有方法的名稱 3 7.confirm 的使用3 8.datatable 新增列3 在前台的html 中...