web-dev-qa-db-fra.com

Quels sont les noms de table valides dans SQLite?

Quelle est la combinaison de caractères pour qu'un nom de table dans SQLite soit valide? Toutes les combinaisons alphanumériques (A-Z, a-z et 0-9) constituent-elles un nom valide?

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

Qu'en est-il d'une combinaison de caractères alphanumériques avec des tirets "-" et des points ".", Est-ce également valable?

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

Je vous remercie.

67
David

Je n'ai pas trouvé de référence pour cela, mais les noms de table qui sont valides sans utiliser de crochets autour d'eux devraient être une combinaison alphanumérique qui ne commence pas par un chiffre:

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)

Avec des crochets, vous devriez pouvoir utiliser à peu près n'importe quoi comme nom de table:

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

Tous ces éléments sont autorisés, mais vous devrez peut-être les citer entre "".

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

En général, cependant, vous devez vous en tenir à l'alphabet.

28
Matthew Flaschen

Depuis SQLite documentation sur CREATE TABLE , les seuls noms interdits sont ceux commençant par sqlite_:

Les noms de table commençant par "sqlite_" sont réservés à un usage interne. C'est une erreur d'essayer de créer une table avec un nom qui commence par "sqlite_".

5
Wirawan Purwanto

Per Clemens sur la liste de diffusion sqlite-users:

Tout est autorisé, sauf les noms commençant par "sqlite_".

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

Vous pouvez utiliser des mots clés ("TABLE"), des caractères spéciaux ("" ​​#! @ "" '☺\") et même la chaîne vide (" ").

4
eric.mcgregor