Я впервые возился с SQLite, работая над некоторыми документами по SQLite. В частности, я использую оболочку командной строки для SQLite и учебник SoupToNuts SQLite для Sourceforge.
В соответствии с документацией SQLite о типе данных в 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 типов данных? Или я что-то пропустил?