SQLite中有效的表名是什么?

时间:2010-09-12 08:57:47

标签: sql sqlite

SQLite中表名的字符组合有效是什么?字母数字(A-Z,a-z和0-9)的所有组合是否构成有效名称?

Ex. CREATE TABLE 123abc(...);

字母数字与破折号“ - ”和句号“。”的组合怎么样也有效?

Ex. CREATE TABLE 123abc.txt(...);
Ex. CREATE TABLE 123abc-ABC.txt(...);

谢谢。

4 个答案:

答案 0 :(得分:86)

我没有找到它的参考,但是没有在它们周围使用括号有效的表名应该是不以数字开头的任何字母数字组合:

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!?]

答案 1 :(得分:28)

所有这些都是允许的,但您可能需要在""中引用它们。

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

但一般来说,你应该坚持使用字母表。

答案 2 :(得分:5)

来自SQLite documentation on CREATE TABLE,禁止使用的唯一名称是以sqlite_开头的名称:

  

以“sqlite_”开头的表名保留供内部使用。尝试创建名称以“sqlite _”开头的表是错误的。

答案 3 :(得分:3)

sqlite-users邮件列表中的Per Clemens:

除了以" sqlite _"。

开头的名字外,一切都是允许的
CREATE TABLE "TABLE"("#!@""'☺\", "");

您可以使用关键字(" TABLE"),特殊字符(""#!@""'☺\" ),甚至是空字符串("")。