我在 SQLite 中发现了这种意外行为。SQLite 似乎接受 SQL 连接语法中的任意关键字。如果我不小心输入了自然连接而不是自然连接,则会产生笛卡尔积。这是预期的行为、功能还是错误?
select count(*) from pri; -- 22
select count(*) from sec; -- 57458
select count(*) from pri natural join sec; -- 57458
select count(*) from pri nautral join sec; -- 1264076
select count(*) from pri advanced natural join sec; -- 57458
select count(*) from pri imaginary join sec; -- 1264076
在 Debian 6.0 上使用 SQLite 3.7.3 进行测试,在 Windows 7 上使用 SQLite 3.7.5 进行测试。
补充:SQLite 是一款出色的数据库软件,我推荐它用于中小型项目。这是我对 SQLite 与 PostgreSQL 的简要比较。