2010-03-13 94 views
2

我熟悉type affinity在SQLite中的工作原理:您可以將列類型聲明爲任何你想要的,所有重要的是類型名稱是否包含「INT」,「CHAR」,「FLOA」等等。但是,有什麼類型的名稱使用的常用慣例?在SQLite中聲明數據類型

例如,如果您有一個整數列,最好是區分TINYINT,SMALLINT,MEDIUMINT和BIGINT,還是僅將所有內容都聲明爲INTEGER?

到目前爲止,我一直在使用下列內容:

  • INTEGER
  • REAL
  • CHAR(N) - 用於固定
  • VARCHAR(n)的一個已知的字符串 - - 用於與已知的最大寬度
  • 文本串 - 對於所有其它串
  • BLOB
  • BOOLEAN
  • DATE - 字符串 「YYYY-MM-DD」 格式
  • 時間 - 字符串 「HH:MM:SS」 格式
  • TIMESTAMP - 字符串「YYYY-MM-DD HH:MM :SS」格式

(注意最後三個違背型親和力。)

回答

1

我會建議不要使用自定義類型。我在3.5.6版中發現,尚未定義的類型有時會導致INSERT命令被拒絕。可能是1000箇中的1個。我不知道這是從那以後解決的。

在任何情況下,鍵入列TINYINT或SMALLINT都沒有大小優勢。唯一的好處是在SQLite之外,可以用其他程序解析列類型,或者滿足個人對整潔的需求。所以我強烈建議使用由SQLite定義的基類型並堅持這些類型。

0

由於SQLite是無類型,使用任何類型更容易給你看的架構是什麼樣子。或者你可以將這些類型與你的代碼庫相匹配。

0

我要和凱文一起去這個。簡而言之,將自己擊倒。如果它適合你的模式,那麼就構成全新的數學領域。使用您的ORM的類名稱。或者爲前女友命名每種類型(除了PRIMARY KEY INTEGER)。最後,SQLite更多地介紹如何訪問和使用數據。