當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  數(shù)據(jù)庫(kù) >  正文

SQLite 中文指南之FAQ第1/6頁(yè)

 2020-10-15 13:34  來(lái)源: 腳本之家   我來(lái)投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)

sqllite使用過(guò)程中碰到的一些問(wèn)題解決,中文版

1. 如何創(chuàng)建自增字段?

2. SQLite 支持哪些數(shù)據(jù)類(lèi)型?

3. 為什么能向 SQLite 數(shù)據(jù)庫(kù)的整型字段中插入字符串?

4. 為什么 SQLite 認(rèn)為表達(dá)式 '0'=='00' 為真?

5. 為什么 SQLite 不允許在同一張表里使用 '0' 和 '0.0' 作為兩個(gè)不同的行的主鍵?

6. 為什么不能在 Linux box 中讀取在 SparcStation 中創(chuàng)建的 SQLite 數(shù)據(jù)庫(kù)?

7. 多個(gè)應(yīng)用程序或者同一個(gè)應(yīng)用程序的多個(gè)例程能同時(shí)存取同一個(gè)數(shù)據(jù)庫(kù)文件嗎?

8. SQLite是線程安全的嗎?

9. 如何列出一個(gè) SQLite 數(shù)據(jù)庫(kù)中的所有的表/索引?

10. SQLite數(shù)據(jù)庫(kù)是否有已知的大小限制?

11. 在 SQLite 中 VARCHAR 的最大長(zhǎng)度是多少?

12. SQLite 是否支持 BLOB 類(lèi)型?

13. 如何從一個(gè)已存在的 SQLite 數(shù)據(jù)表中添加/刪除字段?

14. 我刪除了很多數(shù)據(jù)但是數(shù)據(jù)庫(kù)文件并沒(méi)有減小,是不是 Bug?

15. 是否能將 SQLite 用于商業(yè)用途而不用交版權(quán)費(fèi)用?

16. 我如何使用含有單引號(hào)(')的字符串?

17. SQLITE_SCHEMA 錯(cuò)誤代表什么?

18. 為什么ROUND(9.95,1) 返回 9.9 而不是 10.0? 難道9.95 不該向上進(jìn)位么?

(1) 如何創(chuàng)建自增字段?

簡(jiǎn)單的回答:一個(gè)聲明為 INTEGER PRIMARY KEY 的字段將自動(dòng)增加。

這里是詳細(xì)的答案: 從 SQLite 的 2.3.4 版本開(kāi)始,如果你將一個(gè)表中的一個(gè)字段聲明為 INTEGER PRIMARY KEY,那么無(wú)論你何時(shí)向該表的該字段插入一個(gè) NULL 值,這個(gè) NULL 值將自動(dòng)被更換為比表中該字段所有行的最大值大 1 的整數(shù);如果表為空,那么將被更換為 1。比如,假設(shè)你有這樣的一張數(shù)據(jù)表:

CREATE TABLE t1(

a INTEGER PRIMARY KEY,

b INTEGER

);

在這張數(shù)據(jù)表里,聲明

INSERT INTO t1 valueS(NULL,123);

在邏輯意義上等價(jià)于:

INSERT INTO t1 valueS((SELECT max(a) FROM t1)+1,123);

一個(gè)新的API函數(shù) sqlite3_last_insert_rowid() 返回最近的插入操作的整形鍵

注意這個(gè)整型鍵始終比之前插入表中的最后一個(gè)鍵大1。新鍵相對(duì)于表中的已有鍵來(lái)說(shuō)是唯一的, 但它可能與之前從表中刪除的鍵值重疊。要始終得到在整個(gè)表中唯一的鍵,在INTEGER PRIMARY KEY的聲明之前加關(guān)鍵詞AUTOINCREMENT.這樣被選的鍵將總是比表中已存在的最大鍵大1。若可能的 最大鍵已存在于表中,INSERT操作將失敗并返回一個(gè)SQLITE_FULL錯(cuò)誤碼.

(2) SQLite 支持哪些數(shù)據(jù)類(lèi)型?

參見(jiàn) http://www.sqlite.org/datatype3.html.

(3) 為什么能向 SQLite 數(shù)據(jù)庫(kù)的整型字段中插入字符串?

這是一個(gè)功能,不是一個(gè) bug。你可以在任何字段中放任何信息,而不用管字段聲明為什么類(lèi)型。 你可以往整型字段中插入任意長(zhǎng)度的字符串,或者往布爾字段中插入浮點(diǎn)數(shù),或者往字符字段中 插入日期。在 CREATE TABLE 命令中你指定給這個(gè)字段的數(shù)據(jù)類(lèi)型不會(huì)限制插入這個(gè)字段的數(shù)據(jù)。 所有的字段可以插入任意長(zhǎng)度的字符串。但對(duì)于 INTEGER PRIMARY KEY 字段例外。這種字段只能 存放一個(gè)64位的整數(shù),否則會(huì)出錯(cuò)。

但SQLite會(huì)默認(rèn)你希望使用聲明的字段類(lèi)型。所以,比如你希望在一個(gè)聲明為INTEGER的字段 中插入一個(gè)字符串,SQLite會(huì)試圖將其轉(zhuǎn)換為一個(gè)整數(shù)。如果轉(zhuǎn)換成功,那么整數(shù)將被插入,否 則插入字符串,這種特性有時(shí)被稱(chēng)作type or column affinity.

本文來(lái)自腳本之家,原文鏈接:https://www.jb51.net/article/15820.htm

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
SQLite
中文指南

相關(guān)文章

熱門(mén)排行

信息推薦