在SQL中创建表,其中表名来自数字

时间:2018-10-20 07:29:00

标签: mysql sql

当我尝试下一步时

mysql> CREATE TABLE '20181020';

sql返回错误:

 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual 
 that corresponds to your MariaDB server version for the right syntax to use 
 near ''20181020'' at line 1

我该如何解决?

3 个答案:

答案 0 :(得分:1)

您无需在标识符中加上反引号:

CREATE TABLE `20181020`(id INT);

我建议不要这样做,并使用适当的有意义的命名。使用date作为表名建议它可以是按日期的表反模式。

相关文章:SELECT * FROM sales + @yymm

答案 1 :(得分:1)

对于这种类型的表名,您也可以使用双引号

<a class="portfolio-item" href="">
<img src="{% static 'proj/img/portfolio8.jpg' %}"/>
</a>

但是这种命名方式不是标准做法

答案 2 :(得分:0)

其他答案涵盖解决方案,即使用反引号。

让我补充一点,使用非标准标识符不是一个好主意。如果您也开始将列命名为数字,那么谁想找出20181020.120181020120181020.1之间的区别。使用前缀t_20181020这么难吗?

但是您也不想这样做。让我解释。据推测,如果您有一个名为20181020的表,那么明天您将需要另一个表20181021。这是一个非常糟糕的数据库设计。

您应该将所有数据放入一个表中,并用date列指定日期。然后,您可以对一个表运行查询,以查看随时间的变化-例如。

如果表很大,并且您希望能够分别处理每一天,则可以使用表分区分别存储每一天的价值。这很方便,因为可以独立于其他分区来存档,还原和删除分区。