Quais são os nomes de tabelas válidos no SQLite?

Quais são as combinações de caracteres para um nome de tabela no SQLite para serem válidas? Todas as combinações de alfanuméricos (AZ, az e 0-9) constituem um nome válido?

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

Que tal uma combinação de alfanuméricos com traços “-” e pontos “.”, Isso é válido também?

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

Obrigado.

Eu não encontrei uma referência para isso, mas nomes de tabelas que são válidos sem usar parênteses ao redor deles devem ser qualquer combinação alfanumérica que não comece com um dígito:

 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) 

Com parênteses você deve poder usar praticamente qualquer coisa como um nome de tabela:

 [This should-be a_valid.table+name!?] 

Todos estes são permitidos, mas você pode ter que citá-los em "" .

 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 

Em geral, no entanto, você deve se ater ao alfabeto.

Da documentação do SQLite em CREATE TABLE , os únicos nomes proibidos são aqueles que começam com sqlite_ :

Nomes de tabelas que começam com “sqlite_” são reservados para uso interno. É um erro tentar criar uma tabela com um nome que comece com “sqlite_”.

Per Clemens na lista de usuários sqlite-users:

Tudo é permitido, exceto os nomes que começam com “sqlite_”.

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

Você pode usar palavras-chave (“TABELA”), caracteres especiais (“” #! @ “” ‘☺ \ “) e até mesmo a cadeia vazia (” “).