Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite中的有效表名是什么?_Sql_Sqlite - Fatal编程技术网

SQLite中的有效表名是什么?

SQLite中的有效表名是什么?,sql,sqlite,Sql,Sqlite,SQLite中表名的字符组合是什么?字母数字A-Z、A-Z和0-9的所有组合是否构成有效名称 Ex. CREATE TABLE 123abc(...); 字母数字与破折号和句点的组合,也有效吗 Ex. CREATE TABLE 123abc.txt(...); Ex. CREATE TABLE 123abc-ABC.txt(...); 谢谢。所有这些都是允许的,但您可能需要在中引用它们 不过,一般来说,您应该坚持使用字母表。我还没有找到它的参考,但是不使用括号的有效表名应该是任何不以数字开头

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

Ex. CREATE TABLE 123abc(...);
字母数字与破折号和句点的组合,也有效吗

Ex. CREATE TABLE 123abc.txt(...);
Ex. CREATE TABLE 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中,唯一禁止使用的名称是以SQLite开头的名称:

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

CREATE TABLE "TABLE"("#!@""'☺\", "");

根据sqlite用户邮件列表上的Clemens:

除了以sqlite开头的名称外,所有内容都是允许的

CREATE TABLE "TABLE"("#!@""'☺\", "");

您可以使用关键字表、特殊字符!@'☺\, 甚至是空字符串。

只是另一个后续问题。括号规则是否也适用于列名?例如,从myTable中选择*,其中[column.name]=1;括号不是某种引用吗?e、 abc也应该行。@dashesy:是的,应该行。可以用于引用的内容取决于数据库及其设置。我发现名称“transaction”不能是sqlite3中的有效表名:sqlite>create table transaction id integer主键;错误:接近事务:语法error@KedarMhaswade:是的,有些保留关键字在不引用它们的情况下不能用作标识符,因为它们被识别为关键字而不是标识符。双引号是标准的引用机制,而不是方括号-对,SQLite在处理一个教程时抱怨说,该教程使用“创建表事务…”对“银行事务”进行建模,这是因为“事务”是一个关键字,“它不能用作表、索引、列、数据库、用户定义函数、排序规则、虚拟表模块或任何其他命名对象的名称”-来自您的链接!