Можно ли использовать числа в качестве имен таблиц в MySQL?

Я думаю о том, что программа будет динамически создавать новые таблицы по мере необходимости. Могу ли я иметь таблицы с именами в MySQL?

Ответ 1

Правила для именования объектов, включая таблицы в MySql:

http://dev.mysql.com/doc/refman/5.1/en/identifiers.html

Идентификаторы могут начинаться с цифры, но , если только не может состоять исключительно из цифр.

Итак, это будет неверно:

 SELECT * FROM 12345;

Но было бы справедливо следующее:

 SELECT * FROM `12345`;

Или, если он работает в режиме ANSI, будет работать следующее:

SET @@session.sql_mode=ANSI_QUOTES;
SELECT * FROM "12345";

Ответ 2

как отметил Карим и Стив Вет, да, вы можете, но вам придется процитировать их следующим образом:

SELECT * FROM `3516`

Могу ли я предложить, возможно, переосмыслить ваш script? Добавьте префикс: таблица с именем "t3516" не будет такой запутанной, как просто "3516".

Кроме того, вы можете преобразовать число, чтобы просто использовать буквы, а не любые числа:

table 0 - t_a
table 1 - t_b
table 2 - t_c
table 25 - t_z
table 26 - t_aa
table 27 - t_ab
... etc

Ответ 3

Ответ - да, как указано в karim79, до тех пор, пока вы будете цитировать имена таблиц. Конечно, вы можете использовать префикс с числами, например. mytable1, mytable2,...; это будет работать без цитирования.

Тем не менее, вы должны действительно подумать о том, почему вы хотите создать так много таблиц. Принятый способ делать вещи - иметь все, что принадлежит вместе в одной таблице. Поэтому вместо того, чтобы иметь table1, table2... вы использовали бы одну таблицу и сохранили бы число в столбце.

Это просто естественный путь. Ваш способ делать вещи может легко привести к множеству проблем (изменение схемы БД является проблематичным для резервного копирования, затрудняет работу других инструментов с БД из-за большого количества таблиц, изменения схемы должны быть выполнены для всех таблиц). Динамическое изменение схемы во время выполнения обычно не является хорошей идеей.

Ответ 4

Я думаю, что это не должно быть предпочтительным вообще, потому что это будет более запутанным и трудно запоминающимся. имя таблицы должно относиться к хранящимся данным. Это лучшая привычка.

Ответ 5

используйте backtick (`), чтобы указать имя таблицы, если это чисто цифры. он находится ниже кнопки esc на клавиатуре