Каковы допустимые имена таблиц в SQLite?
Какова будет комбинация символов для имени таблицы в SQLite? Являются ли все комбинации буквенно-цифровых символов (A-Z, a-z и 0-9) действительным именем?
Ex. CREATE TABLE 123abc(...);
Как насчет сочетания буквенно-цифровых символов с тире "-" и "периоды"? ", является ли это также действительным?
Ex. CREATE TABLE 123abc.txt(...);
Ex. CREATE TABLE 123abc-ABC.txt(...);
Спасибо.
Ответы
Ответ 1
Я не нашел ссылку для него, но имена таблиц, которые действительны без использования скобок вокруг них, должны быть любой буквенно-цифровой комбинацией, которая не начинается с цифры:
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!?]
Ответ 2
Все это разрешено, но вам, возможно, придется процитировать их в ""
.
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
В общем, вы должны придерживаться алфавита.
Ответ 3
В SQLite документация по CREATE TABLE, единственными запрещенными именами являются те, которые начинаются с sqlite_
:
Названия таблиц, начинающиеся с "sqlite_", зарезервированы для внутреннего использования. Ошибка создания таблицы с именем, начинающимся с "sqlite _".
Ответ 4
Per Clemens в списке рассылки sqlite-users:
Все разрешено, кроме имен, начинающихся с "sqlite _".
CREATE TABLE "TABLE"("#[email protected]""'☺\", "");
Вы можете использовать ключевые слова ( "ТАБЛИЦА" ), специальные символы ( "#! @" "'☺\" ) и даже пустую строку ( "" ).