SQLite中有效的表名是什么?

Dav*_*vid 67 sql sqlite

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

Ex. CREATE TABLE 123abc(...);
Run Code Online (Sandbox Code Playgroud)

那些字母数字与破折号" - "和句号"."的组合怎么样也有效?

Ex. CREATE TABLE 123abc.txt(...);
Ex. CREATE TABLE 123abc-ABC.txt(...);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Guf*_*ffa 88

我没有找到它的引用,但有效而不使用括号的表名应该是不以数字开头的任何字母数字组合:

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)
Run Code Online (Sandbox Code Playgroud)

使用括号,您应该可以使用几乎任何东西作为表名:

[This should-be a_valid.table+name!?]
Run Code Online (Sandbox Code Playgroud)

  • @dashesy:是的,那应该有效。可用于引用的内容取决于数据库及其设置。 (2认同)
  • 我发现名称'transaction'不能是sqlite3中的有效表名:sqlite> create table transaction(id integer primary key); 错误:靠近"transaction":语法错误 (2认同)

Mat*_*hen 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
Run Code Online (Sandbox Code Playgroud)

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

  • 双引号是标准引用机制,而不是方括号 - https://www.sqlite.org/lang_keywords.html (2认同)

eri*_*gor 6

根据 sqlite-users 邮件列表中的 Clemens:

除了以“sqlite_”开头的名称外,一切都是允许的。

CREATE TABLE "TABLE"("#!@""'?\", "");
Run Code Online (Sandbox Code Playgroud)

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


Wir*_*nto 5

CREATE TABLE上的 SQLite 文档中,唯一禁止的名称是以以下内容开头的名称sqlite_:

以"sqlite_"开头的表名保留供内部使用.尝试创建名称以"sqlite_"开头的表是错误的.