我第一次通过一些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