SQLite 中表名的字符组合有效吗?所有字母数字的组合(A-Z,A-Z 和0-9)是否构成有效的名称?
Ex. CREATE TABLE 123abc(...);
如果把字母数字和破折号“-”和句号“ .”组合在一起,也是有效的吗?
Ex. CREATE TABLE 123abc.txt(...); Ex. CREATE TABLE 123abc-ABC.txt(...);
谢谢你。
所有这些都是允许的,但是您可能必须在 ""中引用它们。
""
sqlite> CREATE TABLE "123abc"(col); sqlite> CREATE TABLE "123abc.txt"(col); sqlite> CREATE TABLE "123abc-ABC.txt"(col); sqlite> select tbl_name from sqlite_master; 123abc 123abc.txt 123abc-ABC.txt
不过,一般来说,你应该坚持使用字母表。
我还没有找到它的引用,但是如果表名有效而不使用括号,那么它应该是任何不以数字开头的字母数字组合:
abc123 - valid 123abc - not valid abc_123 - valid _123abc - valid abc-abc - not valid (looks like an expression) abc.abc - not valid (looks like a database.table notation)
对于括号,您应该能够使用几乎任何东西作为表名:
[This should-be a_valid.table+name!?]
在 SQLite 关于 CREATETABLE 的文档中,只有那些以 sqlite_开头的名称被禁止:
sqlite_
以“ sqlite _”开头的表名称保留给内部使用。试图创建名称以“ sqlite _”开头的表是错误的。
每个 sqlite 用户邮件列表上的 Clemens:
除了以“ sqlite _”开头的名称之外,其他内容都是允许的。
CREATE TABLE "TABLE"("#!@""'☺\", "");
您可以使用关键字(“ TABLE”)、特殊字符(“ # !@”“’”) ,甚至空字符串(“”)。
如果在名称中使用句点,则 SQL 查询将出现问题。所以我会说,避免这些。