我第一次通過一些SQLite文檔搞亂了SQLite。特別是,我在Sourceforge上使用Command Line Shell For SQLite和SoupToNuts SQLite Tutorial。當我在sqlite命令行shell中使用varchar(10)時會發生什麼?
根據SQLite datatype documentation,SQLite中只有5個數據類型。然而,在上述兩個教程文件,我看到那裏的作者使用諸如
create table tbl1(one varchar(10), two smallint);
create table t1 (t1key INTEGER PRIMARY KEY,data TEXT,num double,timeEnter DATE);
包含不由SQLite的上市數據類型的命令,但這些命令的工作就好了。
此外,當我跑使用.dump看到SQL語句,這些數據類型的規格被保留:
sqlite> CREATE TABLE Vulnerabilities (
...> VulnerabilityID unsigned smallint primary key,
...> VulnerabilityName varchar(10),
...> VulnerabilityDescription longtext);
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE Vulnerabilities (
VulnerabilityID unsigned smallint primary key,
VulnerabilityName varchar(10),
VulnerabilityDescription longtext);
COMMIT;
sqlite>
那麼,是什麼原因呢? SQLite是否保留對SQL中指定的任何數據類型的引用,並將其在幕後轉換爲其5種數據類型之一?還是有什麼我失蹤?
仍然使用更加粒度的數據類型會是一件好事嗎? – romandas 2010-04-22 22:33:52
除非您同時使用您的數據定義語句(DDL)和其他RDBMS,否則我沒有看到任何理由這樣做。 – bernie 2010-04-22 22:44:56
我在想如果我想將它移植到MySQL或SQL Express之類的東西上。 – romandas 2010-04-22 22:48:08