要使SQLite中的表名称有效的字符组合是什么?所有字母数字组合(AZ,az和0-9)是否构成有效名称?
Ex. CREATE TABLE 123abc(...);
字母数字与破折号“-”和点号“。”的组合也有效吗?
Ex. CREATE TABLE 123abc.txt(...);
Ex. CREATE TABLE 123abc-ABC.txt(...);
谢谢。
Answers:
我没有找到参考,但是在不使用方括号的情况下有效的表名应该是任何不以数字开头的字母数字组合:
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> 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
通常,您应该坚持字母。
sqliteens用户邮件列表上的Per Clemens:
允许所有内容,但以“ sqlite_”开头的名称除外。
CREATE TABLE "TABLE"("#!@""'☺\", "");
您可以使用关键字(“ TABLE”),特殊字符(“”#!@“”'☺\“)甚至空字符串(”“)。
根据CREATE TABLE上的SQLite文档,唯一禁止使用的名称以sqlite_
下列开头:
以“ sqlite_”开头的表名保留供内部使用。尝试创建名称以“ sqlite_”开头的表是错误的。