Вам разрешено использовать числа в качестве имен таблиц в MySQL? - PullRequest
11 голосов
/ 24 марта 2009

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

Ответы [ 5 ]

32 голосов
/ 24 марта 2009

Правила именования объектов, включая таблицы в 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";
12 голосов
/ 24 марта 2009

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

SELECT * FROM `3516`

Могу ли я предложить, возможно, переосмыслить ваш сценарий, хотя? Добавьте префикс: таблица с именем «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
0 голосов
/ 26 декабря 2017

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

0 голосов
/ 24 марта 2009

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

0 голосов
/ 24 марта 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...