在Java中的SQL命令中,我写"INTEGER"和"int"有什么区别吗?[SQLite]

7
当我在Java代码中执行SQL命令,例如创建表时,是否需要关注以下写法:

db.execSQL("create table mytable ("
                    + "scores int, "
                    + ");");
        }

或者这样:
db.execSQL("create table mytable ("
                        + "scores INTEGER,"
                        + ");");
            }

或者说它们是同一件事情,只是语法不同吗?

3
哪个SQLite版本? - Developer Marius Žilėnas
3
相关链接:(SQLite 版本很重要!)https://dev59.com/dmIj5IYBdhLWcg3waEf9#20289487 - Thilo
5
它们都会生成一个具有整数亲和性的列。实际上,任何包含"int"字符串的内容都可以,包括在SQL中通常不用作列类型的东西,比如"printer"或"tintedwindows"(不是玩笑)。 - Karakuri
3
为了让事情更加混乱,列类型“浮点数”具有整数亲和性,因为“point”中的“int”优先于“float”。 - dan04
1个回答

6
Sqlite3文档 指出,如果使用INT,那么该列的“结果亲和性”为INTEGER。在CREATE TABLE语句或CAST表达式中,类型名称INT、INTEGER、TINYINT、SMALLINT、MEDIUMINT、BIGINT、UNSIGNED BIG INT、INT2、INT8,会为该列提供 INTEGER 亲和性。

对于Sqlite2,请参见此答案


这个答案比我的更详细,虽然它给出了我在下面评论中提供的相同链接。我会接受它。 - ERJAN
1
请注意,作为ROWID的别名的列(即,在未声明为“WITHOUT ROWID”的表中的INTEGER PRIMARY KEY必须包含整数,而不仅仅是具有整数亲和性。这种特殊情况仅适用于类型名称完全为INTEGER的情况;INT PRIMARY KEY只是一个带有唯一约束的普通整数亲和力列。 - dan04

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接